文档章节

Dockers 快速学习(四)Docker 容器的使用

ZhouLS
 ZhouLS
发布于 2014/07/18 13:54
字数 1086
阅读 13504
收藏 17

Docker 容器的使用


1、容器间的链接:

运行一个容器,给它一个名称,例如:

docker run -d -p 0.0.0.0:4455:22 -p 0.0.0.0:8080:80 --name one centos6-ssh

再运行另一个容器

docker run -d -p 0.0.0.0:4456:22 -p 0.0.0.0:8088:80 --link /one:two centos6-ssh2 env

说明:

/one:two 

one是第一个容器的名称,two是第二个容器的名称,

env是打印出来 第二个容器的环境变量

这样两容器就建立起一个网络通道,one和two容器所开放的端口也就是Dockerfile文件中定义开放的端口就可以连通了,

在宿主机上使用iptables命令来查看,例如:

iptables -L -n
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.17.1.28          172.17.1.29         tcp spt:3306 
ACCEPT     tcp  --  172.17.1.29          172.17.1.28         tcp dpt:3306 
ACCEPT     tcp  --  172.17.1.28          172.17.1.29         tcp spt:22 
ACCEPT     tcp  --  172.17.1.29          172.17.1.28         tcp dpt:22

从这里看到两个容器间端口可以互相的访问了,

说明:

这里的端口是以one这个容器所开放的端口,如one开放22,3306,而two容器只开放了22,在two上也会放3306给one,反之就不行了。--link是以连接容器开放的端口为准的。

2、Docker 容器下数据卷的理解

一个数据卷就是经过特殊设计的,在一个或多个容器中通过UFS文件系统提供的一些特性 

实现数据持久化或共享.

数据卷可以在容器之间共享和重复利用

可以对数据卷里的内容直接进行修改

对镜像的更新不会改变数据卷的内容

卷会一直持续到没有容器使用他们

2.1、添加一个数据卷

可以使用带有 -v 参数的 docker run 命令给容器添加一个数据卷.

docker run -d -p 0.0.0.0:4445:22 --name data -v /data centos6-ssh

这个在容器里就会有一个/data的卷

在Dockefile中使用VOLUME指令来创建添加一个或多个数据卷

2.2、挂载宿主文件夹到数据卷

使用-v参数也可以挂载宿主的文件夹到容器里

docker run -d -p 0.0.0.0:44455:22 --name data1 -v /src/data:/opt/data centos6-ssh

这样会把本地的/src/data文件夹挂在容器/opt/data目录

宿主机上的文件夹必须是绝对路径,而且当文件夹不存在时会自动创建

此功能在Dockerfile文件中无法使用

默认情况下Docker以读写权限挂载数据卷,但是我们也可以以只读方式进行挂载

docker run -d -p 0.0.0.0:44455:22 --name data1 -v /src/data:/opt/data:ro centos6-ssh

还是上面的那个命令,只是我们添加了一个ro选项来制定挂载时文件权限应该是只读的

2.3、创建和挂在一个数据卷容器

如果一些数据需要在容器间共享最好的方式来创建一个数据卷容器,然后从数据卷容器中挂载数据

1\创建一个带有命名容器来共享数据
 docker run -d -v /dbdata --name dbdata centos6-ssh
2\在另一个容器中使用--volumes-from标记挂在/dbdata卷
docker run -d --volumes-from dbdata --name db1 centos6-ssh2
3\在另一个容器中同时也挂载/dbdata卷
docker run -d --volumes-from dbdata --name db2 centos6-ssh3


可以使用多个 -–volumes-from 参数来把多个容器中的多个数据卷放到一起

可以挂载通过挂载dbdata容器实现的容器db1和db2来扩展关系链,例如:

docker run -d --name db2 --volumes-from db1 centos6-ssh4

2.4、备份,恢复,迁移数据

使用它们来进行备份,恢复或迁移数据.如下所示,我们使用 

–volumes-from 标记来创建一个挂载了要备份数据卷的容器.

docker run --volumes-from dbdata -v $(pwd):/backup centos6-ssh tar cvf /backup/backup.tar /dbdata

这里我们创建并登录了一个新容器,挂载了dbdata容器中的数据卷,并把本地的一个目录挂载了/backup下,最后再传一条tar命令来备份dbdata卷到/backup下,当命令执行完成后容器就会停止运行,并保留dbdata的备份,在本地目录下会一个备份的文件

注:新创建的容器中要有tar命令,

得到备份数据就可以恢复或迁移数据了

© 著作权归作者所有

共有 人打赏支持
ZhouLS

ZhouLS

粉丝 16
博文 9
码字总数 8719
作品 0
浦东
系统管理员
私信 提问
Docker 1.12 以前的: swarm 搭建 docker 集群

什么是Swarm Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访...

疯code
2016/07/06
39
0
微容器:更小的,更轻便的Docker容器

【编者的话】本文介绍了微容器的概念和好处,并用一些例子介绍了如何构建微镜像,从scratch到Alpine Linux,并推荐了一些已有的基础微镜像,方便为几乎所有主流语言的应用构建微镜像。本文也...

阿里百川
2016/03/14
211
0
Docker 管理平台--DockerBoard

Dockerboard 一个可视化操作的 Docker 管理平台;让你的 dockers 管理变得简单,轻松构建 Docker Apps。 功能特点 Containers、Images 的基本操作 Canvas - 通过可视化、组建化、可配置的方式...

AG_
2014/12/24
4.7K
0
docker下yum安装httpd并且启动

作者初学docker容器网上找dockers yum安装httpd都是先建立dockerfile文件,本人较劲非不建立dockerfile文件安装并启动httpd服务,现在完成分享以下。先是yum -y instal docker安装docker容器...

姑父
2018/08/19
0
0
容器Docker学习系列七~系统信息学习

前面了解的Docker学习的本地镜像管理还有镜像仓库的命令学习,怎么说呢其实这些命令已经够我们平常使用的了。但是如果随着发展我们在系统程序调优上可能就需要了解更多的知识。比如Docker系统...

LuckQI
2018/08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS,JavaScript实现手风琴导航菜单

<!DOCTYPE html><html><head> <title>Side Navigator Demo</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <link re......

yuewawa
27分钟前
1
0
mysql 系统设置SQL

打开、关闭日志 SET GLOBAL general_log = 'Off'; SET GLOBAL general_log = 'On'; 查看日志是否打开 show variables like '%general%';...

jingshishengxu
今天
3
0
转行学大数据,如何选择如何学习大数据开发?

大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司。 现在已经...

董黎明
今天
5
0
RadosClient OSDC

RadosClient.h class librados::RadosClient : public Dispatcher//继承自Dispatcher(消息分发类){public: using Dispatcher::cct; md_config_t *conf;//配置文件private: ......

banwh
今天
3
0
如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部