1、初识 Docker
1、Docker 概念
Docker 是一个开源的应用容器引擎 ,诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc),Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制,相互隔离,容器性能开销极低。,Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
2、Docker 安装
Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,官网:https://www.docker.com。
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求。
#1、yum包更新到最新yumupdate#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#3、设置yum源yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo#4、安装docker,出现输入的界面都按yyuminstall-ydocker-ce#5、查看docker版本,验证是否验证成功docker-v
3、Docker 架构
- 镜像(Image):Docker 镜像(Image),就相当于是 一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包 含了完整的一套 Ubuntu16.04 最小系统的 root 文件系 统。
- 容器(Container):镜像(Image)和容器(Contain er)的关系,就像是面向对象程序设计中的类和对象一 样,镜像是静态的定义,容器是镜像运行时的实体。容 器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心, 用来保存镜像。
默认情况下,将来从docker hub(https://hub.docker.com/)上下载 docker镜像,太慢。一般都会配置镜像加速器:
- 阿里云
- 腾讯云
- 等等
2、Docker 命令
1、Docker 进程相关命令
1)启动docker服务
systemctl start docker
启动之后查看状态。
2)停止docker服务
systemctl stop docker
3)重启docker服务
systemctl restart docker
4)查看docker服务状态
systemctl status docker
5)开机启动docker服务
systemctl enable docker
2、Docker 镜像相关命令
1)查看镜像
docker images
docker images –q # 查看所用镜像的id
2)搜索镜像
docker search 镜像名称
3)拉取镜像
从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。 如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。https://docs.docker.com/docker-hub/
docker pull 镜像名称
4)删除镜像
docker rmi 镜像id # 删除指定本地镜像
docker rmi `docker images -q` # 删除所有本地镜像
删除再次查看,确认删除成功。
3、Docker 容器相关命令
1)创建容器
docker run 参数 #例如: docker run -it --name=redis redis 进入容器,即交互式容器
docker run -id --name=redis redis 不进入容器,即守护式容器
容器创建成功。
参数说明:
- -i:保持容器运行,通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后,容器不会关闭
- -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
- --name:为创建的容器命名
2)查看容器
docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器
刚刚创建的redis,此时查看可以看到。
3)进入容器
docker exec 参数 # 退出容器,容器不会关闭
4)启动容器
docker start 容器名称
5)停止容器
docker stop 容器名称
停止刚刚的redis,再次查看容器,可以看到redis不在运行。
6)删除容器
docker rm 容器名称
7)查看容器信息
docker inspect 容器名称
3、Docker 容器的数据卷
1、数据卷概念
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
2、数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
3、配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
#docker run -it --name=c1 -v /root/data:/root/data_container couchbase/centos7-systemd /bin/bash
容器的目录data_container
本机的目录data
1)此时在宿主机(本机)data目录下创建文件
touch test.txt
2)在容器查看data_container,发现同步过来了。
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
4、多容器进行数据交换
- 多个容器挂载同一个数据卷
- 数据卷容器
5、数据卷容器
1)创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3 –v /volume centos:7 /bin/bash
2)创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
6、数据卷小结
1)数据卷概念
- 宿主机的一个目录或文件
2)数据卷作用
- 容器数据持久化
- 客户端和容器数据交换
- 容器间数据交换
3)数据卷容器
- 创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from )
- 通过简单方式实现数据卷配置