目录
- 前言
- 使用场景
- 安装 Docker 指令
- 其他安装方式(推荐)
- 1.1 Mac os 系统
- 1.2 windows 系统
- 1.3 CentOS 系统
- 2.Docker 架构
- 1.1 镜像(Image)
- 1.2 容器(Container)
- 1.3 仓库(Repository)
- 3.配置 Docker 镜像加速器(mac版)
- 4. Docker 镜像相关命令
- 4.1 查看docker配置(镜像是否配置)
- 4.2 查看镜像:查看本地所有的镜像
- 4.3 搜索镜像:从网络中查找需要的镜像
- 4.4 拉取镜像
- 4.5 删除镜像:删除本地镜像
- 5. Docker 容器相关命令
- 5.1 查看容器
- 5.2 创建启动容器
- 5.2.1 交互式容器-创建
- 5.2.2 守护式容器-创建
- 5.3 进入容器
- 5.4 停止容器
- 5.5 启动容器
- 5.6 删除容器
- 5.7 查看容器信息
- 6.Docker 容器的数据卷
- 6.1 数据卷概念
- 6.2 什么是数据卷
- 6.3 数据卷作用
- 6.4 配置数据卷
- 6.3.1 设置数据卷
- 6.3.2 宿主机目录(文件)
- 6.3.3 容器内目录(文件)
- 6.3.4 一个宿主机与一个容器
- 6.3.5 两个容器挂载同一个数据卷,实现两个容器之间数据交换
- 6.3.6 查看容器的配置
- 6.5 数据卷容器 volume
- 6.5.1 数据卷容器作用
- 6.5.2 配置数据卷容器
- 6.5.2 实际操作
前言
使用场景
解决多环境不同操作系统下程序部署问题,使用 docker
安装 Docker 指令
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
如果出现yum的使用问题时可以参考如下文档使用yum 安装时出现 : Loaded plugins: fastestmirror
教程链接:https://www.jianshu.com/p/1e5c86accacb
1.1 Mac os 系统
对于10.10.3以下的用户 推荐使用Docker Toolbox
Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/
对于10.10.3以上的用户 推荐使用Docker for Mac
Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/
1.2 windows 系统
对于Windows 10以下的用户,推荐使用Docker Toolbox
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
对于Windows 10以上的用户 推荐使用Docker for Windows
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/
1.3 CentOS 系统
- 安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce - 配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://xsrxjstl.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.Docker 架构
1.1 镜像(Image)
Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 ubuntu:16.04 最小系统的root文件系统
1.2 容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等
1.3 仓库(Repository)
仓库可可看成一个代码控制中心,用来保存镜像
3.配置 Docker 镜像加速器(mac版)
默认情况下,将来从docker hub(https://hub.docker.com/)上下载
docker镜像,太慢。一般都会配置镜像加速器:
• USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
• 阿里云(这里使用)
• 网易云
• 腾讯云
首先进入阿里云
然后去查找 镜像
进入 容器镜像服务
将生成一份自己的加速网址放入 Docker - Preferences - Dorcker Engine 中
然后 restart 即可
4. Docker 镜像相关命令
4.1 查看docker配置(镜像是否配置)
docker info
4.2 查看镜像:查看本地所有的镜像
docker images #查看docker的镜像信息
docker images -q #查看docker的所有镜像id,用于批量删除
指令:docker images
指令:docker images -q
4.3 搜索镜像:从网络中查找需要的镜像
docker search #镜像名称
4.4 拉取镜像
从Docker仓库下载镜像到本地
镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本
如果不知道镜像版本,可以去docker hub 搜索对应镜像查看
docker pull 镜像名称
4.5 删除镜像:删除本地镜像
docker rmi 镜像id #删除指定本地镜像
docker rmidocker images -q
#删除本地所有镜像
由于 markdown 对 ` 这个符号会转义,所以截图说明如下:
5. Docker 容器相关命令
俩种模式:交互式容器
与 守护式容器
5.1 查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器:Exited:退出、up:运行中
5.2 创建启动容器
docker run 参数
参数说明
- -i:保持容器运行,通常与 -t(terminal)同时使用。加入 it 这俩个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用 docker exec 进入容器。退出后,容器不会关闭
- -it:创建的容器一般称为交互式容器, -id 创建的容器一般称为守护式容器
- –name:为创建的容器命名,已经用 --name 创建过的不能再创建
5.2.1 交互式容器-创建
容器被创建后立刻进入程序内部
默认为:/bin/bash
没被创建过的可以创建,如上图:c3
从上图终端中退出:输入 exit
指令
5.2.2 守护式容器-创建
5.3 进入容器
用来进入守护式容器中
docker exec 参数 # 退出容器,容器不会关闭
退出并不会阻止容器Exited()
与交互式不同,守护式需要显示声明为:/bin/bash
,才能进入程序内部
5.4 停止容器
docker stop 容器名称
5.5 启动容器
docker start 容器名称
5.6 删除容器
如果容器是正在运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称
删除 Exited() 容器
运行中的容器不能删除
5.7 查看容器信息
docker inspect 容器名称
6.Docker 容器的数据卷
引入场景
• Docker 容器删除后,在容器中产生的数据也会随之销毁
• Docker 容器和外部机器可以直接交换文件吗?
• 容器之间想要进行数据交互?
6.1 数据卷概念
6.2 什么是数据卷
• 数据卷是宿主机中的一个目录或文件
• 当容器目录和数据卷目录绑定后,对方的修改会立即同步
• 一个数据卷可以被多个容器同时挂载
• 一个容器也可以被挂载多个数据卷
6.3 数据卷作用
数据卷作用
• 容器数据持久化
• 外部机器和容器间接通信
• 容器之间数据交换
6.4 配置数据卷
数据卷是什么?宿主机的一个目录或文件
6.3.1 设置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
双向读写权限
docker run …
-v 宿主机目录(文件):容器内目录(文件)
…
退出容器
exit
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
6.3.2 宿主机目录(文件)
创建数据卷全部指令
docker run -it --name=c1 -v /Users/ctra_wl/Desktop/docker:/root/data_container centos:7
mac 下宿主机目录(文件):/Users/ctra_wl/Desktop/docker
如下图:
6.3.3 容器内目录(文件)
创建数据卷全部指令
docker run -it --name=c1 -v /Users/ctra_wl/Desktop/docker:/root/data_container centos:7
6.3.4 一个宿主机与一个容器
宿主机目录内创建文件->容器内同步显示
当退出当前容器时
再次挂载仍可以将宿主机的内容挂载到容器内
6.3.5 两个容器挂载同一个数据卷,实现两个容器之间数据交换
步骤一:首先在一个终端中执行 创建容器c2
docker run -it --name=c2 -v /Users/ctra_wl/Desktop/docker:/root/data_container centos:7
步骤二:在另外一个终端中执行 创建容器c3
docker run -it --name=c3 -v /Users/ctra_wl/Desktop/docker:/root/data_container centos:7
步骤三:在容器c2的终端中执行
cd root/data_container/
进入这个目录后执行
ls
步骤四:在容器c3的终端中执行
echo itcast > itcast.txt
步骤五:在容器c2的终端中执行
ls
可以看到在这个目录中,同样出现了在c3容器中创建的文件
(
纠错图中的步骤一应该向下一个指令 即容器:c2)
6.3.6 查看容器的配置
docker inspect c1
6.5 数据卷容器 volume
创建一个容器,挂载一个目录,让其他容器继承自该容器(–volume-from)
通过简单方式实现数据卷配置
查看当前卷
docker volume ls
6.5.1 数据卷容器作用
多容器进行数据交换
- 多个容器挂载同一个数据卷
- 数据卷容器
6.5.2 配置数据卷容器
1.创建启动c3数据卷容器,使用 -v 参数 设置数据卷
docker run –it --name=c3 –v /volume
2.创建启动 c1 c2 容器,使用 --volume-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.5.2 实际操作
1.创建启动c3数据卷容器,使用 -v 参数 设置数据卷
docker run –it --name=c3 –v /volume
- 新开启一个终端,查看新建的:数据卷容器
docker volume ls
docker inspect c3
可以看到2个数据卷容器的id是一样的
a21c83153b6a2f21b82ba5aac11989851e812ed92919ba293f26fe3e2f673f5c
a21c83153b6a2f21b82ba5aac11989851e812ed92919ba293f26fe3e2f673f5c
- 分别新建2个终端,分别创建2个容器:c2、c3
docker run -it --name=c1 --volumes-from c3 centos:7
docker run -it --name=c2 --volumes-from c3 centos:7
此时c1 c2 c3 3个容器为互通容器了
- 在数据卷容器c1 的volume目录中 创建一个文件 a.txt
cd volume/
touch a.txt
- 分别在 c2 c3容器中查看 volume 文件是否多了一个文件
cd volume/
ls