Docker 容器使用
大约 3 分钟Docker
容器是从镜像创建的运行实例。它可以被启动、停止、删除。每个容器都是相互隔离的、保证安全平台。可以把看做一个简易版的 Linux 环境,包括 root 用户权限、进程空间、用户空间和网络空间和运行在其中的应用程序。
Docker 利用容器来运行应用,镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
容器相关命令
- 查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
- 创建并启动容器
docker run 参数
参数说明:
- -i:保持容器运行。通常与-t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭;
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用;
- -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭;
- -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器;
- --name:为创建的容器命名。
- 进入容器
docker exec 参数 # 退出容器,容器不会关闭
- 停止容器
docker stop 容器名称
- 启动容器
docker start 容器名称
- 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称
- 查看容器信息
docker inspect 容器名称
数据卷
我们知道,Docker 是把应用和环境一起打包成一个镜像发布出去。
如果我们的数据都在容器中,那么我们把容器删除之后,数据就会丢失。所以我们想要数据持久化。
假如我们搞了个 MySQL 容器,如果一不小心将 MySQL 容器删除了,就会很危险。所以我们需要 MySQL 的数据可以存储在本地。
于是基于上述两种需求,我们就出现了容器数据卷的技术,容器之间有一个数据共享的技术。
Docker 容器产生的数据同步到本地。说白了就是目录的挂载,将我们容器的目录挂载到宿主机中。
数据卷的特点:
- 数据卷是宿主机中的一个目录或文件;
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步;
- 一个数据卷可以被多个容器同时挂载;
- 一个容器也可以被挂载多个数据卷。
数据卷的作用:
- 容器数据持久化;
- 外部机器和容器间接通信;
- 容器之间数据交换
配置数据卷
创建启动容器时,使用 -v 参数 设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件)
注意事项:
- 目录必须是绝对路径;
- 如果目录不存在,会自动创建;
- 可以挂载多个数据卷;
如果我们想实现上图的多个容器溶蚀挂载一个数据卷,分为以下两步:
- 创建启动 c3 数据卷容器,使用
-v 参数
设置数据卷
docker run -it --name=c3 -v /volume ubuntu:20.04 /bin/bash
- 创建启动 c1 c2 容器,使用
--volumes-from 参数
设置数据卷
docker run -it --name=c1 --volumes-from c3 ubuntu:20.04 /bin/bash
docker run -it --name=c2 --volumes-from c3 ubuntu:20.04 /bin/bash