docker
一、docker的安装与部署
系统环境:要求centos7以上,内核必须不小于3.10
下载包,并安装
启动服务,并查看
ip addr可以看到docker0
二、镜像的导入和容器的使用
1、导入镜像并查看
2、使用镜像创建容器,并查看信息
3、网页查看
4、同样的方式导入nginx查看
也可以做端口映射:
还可以编辑默认发布目录,用cp命令
可以用diff查看容器的变化
5、数据卷管理
创建容器时使用 -v 参数可以挂载一个或多个数据卷到当前运行的容器中,-v的作用是将宿主机上的目录作为容器的数据卷挂载到容器中,使宿主机和容器之间可以共享一个目录。
此时修改index.html里的内容,直接会在容器里生效
并且可以设置读写权限
但在主机里是没有读写权限的
备份数据卷 --volumes-from
对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统,如下图在ubuntu环境下打包一个文件
6、创建容器镜像
先建立一个ubuntu容器,在里面创建文件
完成后commit创建容器镜像v1,并删除vm1
再次创建容器名字随意,导入v1,查看文件还在
删除容器的命令是rm,删除镜像是rmi
7、容器间的互连
--link 参数可以在不映射端口的前提下为两个容器间建立安全连接, --link 参数可以连接一个或多个容器到将要创建的容器。
--link 参数的格式为 --link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。
三、网络管理
Docker 在启动时会创建一个虚拟网桥 docker0,默认地址为 172.17.42.1/16, 容器启动后都会被桥接到 docker0 上,并自动分配到一个 IP 地址。
四种网络模型
1、bridge模式,不需要-net指定,为默认设置
改模式docker网络隔离基于网络命名空间,在物理机上创建docker容器时会为每一个docker容器分配网络命名空间,并且把容器IP桥接到物理机的虚拟网桥上。
2、host模式:此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,并且这个模式认为是不安全的。
ip addr查看
3、container模式:此模式和host模式很类似,只是此模式创建容器共享的是其他容器的IP和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的IP是你所指定的那个容器IP并且端口也是共享的,而且其它还是互相隔离的,如进程等。
先建立一个容器vm1,并查看ip信息
使用容器模式指定,并查看ip信息
4、none模式:此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置
查看网桥,没有需要我们自建建立,在真机端和容器端建立连接
在/var/run/下建立netns目录,并查看容器pid,建立链接
Docker Daemon 利用 veth pair 技术,在宿主机上创建两个虚拟网络接口设备,假设为veth0和veth1。而 veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会将报文传输给另一方。
Docker Daemon 将 veth0 附加到 Docker Daemon 创建的 docker0 网桥上。保证宿主机的网络报文可以发往 veth0
Docker Daemon 将 veth1 添加到 Docker Container 所属的 namespace 下,并被改名为 eth0。如此一来,保证宿主机的网络报文若发往 veth0,则立即会被 eth0 接收,实现宿主机到Docker Container 网络的联通性;同时,也保证 Docker Container 单独使用 eth0,实现容器网络环境的隔离性。
查看配置ip是否成功