docker的介绍和使用
一、什么是docker
定义:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 它是使用go语言编写,在LCX(linux容器)基础上进行的封装。
就是可以快速部署启动应用
实现虚拟化,完整资源隔离
一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)
二、使用docker的理由
提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行
快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用
更好的资源隔离和共享
一句话:开箱即用,快速部署,可移植性强,环境隔离
三、docker镜像概念
Docker 镜像 - Docker images:容器运行时的只读模板,操作系统+软件运行环境+用户程序
Docker 容器 - Docker containers:容器包含了某个应用运行所需要的全部环境
Docker 仓库 - Docker registeries: 用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服
四、docker网络模式
默认的三种网络模式:
bridge:桥接模式
host:主机模式
none:无网络模式
查看网络模式: docker network ls
五、bridge 桥接模式
桥接模式是docker 的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并 选择一个和宿主机不同的IP地址和子网分配给docker0网桥。
宿主机网卡 <---- nat ----> docker0网卡 <---- brige ----> 容器网卡(多个)
可以通过工具查看网卡状态
yum -y install net-tools
yum install -y bridge-utils
#查看当前网卡的桥接状态
brctl show六、host 主机模式
该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。即所占用的ip和端口都是宿主机上的
七、none 无网络模式
none模式:关闭模式,无法连外网
八、docker单向通信
介绍基于link单向通信:先创建需要目标的容器,再创建需要连接的容器
启动mysql数据库容器:
docker run --name mydb -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:5.7启动tomcat应用容器并link到mysql数据库:
注意:mydb 这个容器一定要存在!
docker run -itd --name tomcat1 --link mydb tomcat:tag
官方版的mysql 5.7 需要安装工具才有ping命令:apt-get update && apt-get install iputils-ping九、docker双向通信
基于Bridge网桥实现双向通信。
查看当前存在的所有网卡信息
docker network ls创建一个新的网桥
docker network create -d bridge my_bridge启动容器
docker run -itd --name centos1 centos:7 docker run -itd --name centos2 centos:7加入网桥
docker network connect my_bridge centos1 docker network connect my_bridge centos2验证是否通过:分别进入两边的容器,根据容器名称ping,检查是否连通
十、docker特权模式
有的时候需要给予容器比root用户更高的权限,比如删除网关操作。一般这种情况比较少
给容器赋予特权模式
docker run -itd --privileged=true --name mycentos1 centos:7#安装网络工具
yum -y install net-tools
#删除网关
route del default gw 172.17.0.1十一、Volume数据共享
volume数据共享可以实现容器与容器之间的数据共享
简单的dockerfile,将宿主机的/usr/local和容器的/usr/local共享,即容器的路径挂载到宿主机的路径上
FROM centos:7
VOLUME ["/usr/local"]普通容器与宿主机直接的数据共享,通过-v实现
docker run -itd -v /usr/local:/usr/local --name centos1 centos:7创建新的容器,与centos1进行数据共享,会复制centos1上的所有-v的数据共享
docker run -itd --volumes-from centos1 --name centos2 centos:7
查看容器挂载信息,查看Mounts下的挂载信息
docker inspect 容器ID十二、查找镜像的Volume
查看镜像信息
docker inspect 镜像id或名称找到Volume选项

这里显示是镜像相关的卷
十三、离线镜像导入导出
#导出镜像导出镜像
docker image save ${image_name:tag} -o ${name.image}
#导入镜像
docker load -i ${name.image}