docker

一、docker的安装与部署

系统环境:要求centos7以上,内核必须不小于3.10

下载包,并安装

docker

启动服务,并查看

docker

ip addr可以看到docker0

docker

 

 

二、镜像的导入和容器的使用

1、导入镜像并查看

docker

2、使用镜像创建容器,并查看信息

docker

docker

3、网页查看

docker

 

 

4、同样的方式导入nginx查看

docker

dockerdockerdocker

也可以做端口映射:

docker

还可以编辑默认发布目录,用cp命令

dockerdocker

可以用diff查看容器的变化

docker

 

5、数据卷管理

创建容器时使用 -v 参数可以挂载一个或多个数据卷到当前运行的容器中,-v的作用是将宿主机上的目录作为容器的数据卷挂载到容器中,使宿主机和容器之间可以共享一个目录。

dockerdocker

此时修改index.html里的内容,直接会在容器里生效

dockerdocker

 

并且可以设置读写权限

docker

但在主机里是没有读写权限的

docker

 

备份数据卷 --volumes-from

docker

对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统,如下图在ubuntu环境下打包一个文件

docker

 

 

6、创建容器镜像

先建立一个ubuntu容器,在里面创建文件

dockerdocker

完成后commit创建容器镜像v1,并删除vm1

docker

再次创建容器名字随意,导入v1,查看文件还在

docker

删除容器的命令是rm,删除镜像是rmi

docker

 

7、容器间的互连

--link 参数可以在不映射端口的前提下为两个容器间建立安全连接, --link 参数可以连接一个或多个容器到将要创建的容器。
--link 参数的格式为 --link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。

docker

dockerdockerdocker

 

 

三、网络管理

Docker 在启动时会创建一个虚拟网桥 docker0,默认地址为 172.17.42.1/16, 容器启动后都会被桥接到 docker0 上,并自动分配到一个 IP 地址。

docker

四种网络模型

1、bridge模式,不需要-net指定,为默认设置

改模式docker网络隔离基于网络命名空间,在物理机上创建docker容器时会为每一个docker容器分配网络命名空间,并且把容器IP桥接到物理机的虚拟网桥上。

2、host模式:此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,并且这个模式认为是不安全的。

docker

ip addr查看

docker

docker

 

3、container模式:此模式和host模式很类似,只是此模式创建容器共享的是其他容器的IP和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的IP是你所指定的那个容器IP并且端口也是共享的,而且其它还是互相隔离的,如进程等。

先建立一个容器vm1,并查看ip信息

dockerdocker

使用容器模式指定,并查看ip信息

docker

4、none模式:此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置

docker

查看网桥,没有需要我们自建建立,在真机端和容器端建立连接

docker

在/var/run/下建立netns目录,并查看容器pid,建立链接

docker

Docker Daemon 利用 veth pair 技术,在宿主机上创建两个虚拟网络接口设备,假设为veth0和veth1。而 veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会将报文传输给另一方。

docker

docker

Docker Daemon 将 veth0 附加到 Docker Daemon 创建的 docker0 网桥上。保证宿主机的网络报文可以发往 veth0

docker

Docker Daemon 将 veth1 添加到 Docker Container 所属的 namespace 下,并被改名为 eth0。如此一来,保证宿主机的网络报文若发往 veth0,则立即会被 eth0 接收,实现宿主机到Docker Container 网络的联通性;同时,也保证 Docker Container 单独使用 eth0,实现容器网络环境的隔离性。

docker

查看配置ip是否成功

docker