Docker 第一章:基本使用-2020 Mac版(看完必会篇)

前言

由于在CSDN上无法看到markdown的目录,有需要额小伙伴可以联系我,附送本文的 .md文件,可以再本地typora上更加方便的学习

使用场景

解决多环境不同操作系统下程序部署问题,使用 docker

1.安装/升级Docker客户端

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 系统

  1. 安装/升级Docker客户端
    推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

  2. 配置镜像加速器
    针对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 rmi docker 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

注意事项:

  1. 目录必须是绝对路径
  2. 如果目录不存在,会自动创建
  3. 可以挂载多个数据卷

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 数据卷容器作用

多容器进行数据交换

  1. 多个容器挂载同一个数据卷
  2. 数据卷容器

6.5.2 配置数据卷容器

1.创建启动c3数据卷容器,使用 -v 参数 设置数据卷

docker run –it --name=c3 –v /volume centos:7 /bin/bash

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 centos:7 /bin/bash

  1. 新开启一个终端,查看新建的:数据卷容器

docker volume ls
docker inspect c3

可以看到2个数据卷容器的id是一样的

a21c83153b6a2f21b82ba5aac11989851e812ed92919ba293f26fe3e2f673f5c
a21c83153b6a2f21b82ba5aac11989851e812ed92919ba293f26fe3e2f673f5c

  1. 分别新建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个容器为互通容器了

  1. 在数据卷容器c1 的volume目录中 创建一个文件 a.txt

cd volume/
touch a.txt

  1. 分别在 c2 c3容器中查看 volume 文件是否多了一个文件

cd volume/
ls

发布了10 篇原创文章 · 获赞 5 · 访问量 369

猜你喜欢

转载自blog.csdn.net/wanglei19891210/article/details/105447744