Docker (2) 命令、容器数据卷
Docker服务相关命令
macos 有控制面板 点击即可
centos7命令如下:
启动docker服务 systemctl start docker
停止docker服务 systemctl stop docker
重启docker服务 systemctl restart docker
查看docker服务状态 systemctl status docker
设置开机启动docker服务 systemctl enable docker
Docker镜像相关命令
查看镜像
docker images --会返回镜像列表
repository(镜像名) tag(版本号) images_id(镜像id) created(创建时间) size(大小)
搜索镜像
docker search redis --会返回远程镜像列表
name(镜像名) description(描述) starts(收藏数) official(是否官方) automated(是否自动流程构建的)
docker.io/redis Redis is an open source key-value store th... 8527 [OK]
拉取镜像
docker pull redis | docker pull redis:3.2 --拉取镜像 如果不写版本号 默认拉取最新的
删除镜像
docker rmi {image_id} --通过id删
docker rmi mysql:latest | docker rmi mysql:5.7 --通过版本号删
搜索docker镜像网址 https://hub.docker.com/
Docker容器相关命令
查看容器
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器 包括已关闭的
容器id 镜像 初始化命令 创建时间 状态 创建容器时的名字
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bca4a84f9f70 centos:7 "/bin/bash" 2 minutes ago Exited (0) 56 seconds ago cl
创建容器
docker run 参数
-i 保持容器运行
-t 为容器重新分配一个伪输入终端
-d 以守护(后台)模式运行容器,创建一个容器在后台运行,exit后不会关闭,需要使用docker exec 进入容器
-it 创建的容器称为交互式容器,-id 创建的容器称为守护式容器
--name 为容器命名
1.docker run -it --name=cl centos:7 /bin/bash (-it创建的容器 exit后就关闭了)
创建后默认进入该容器
exit 退出容器后马上关闭
2.docker run -id --name=cl2 centos:7
创建后不会进入该容器
exit 退出容器后不会关闭
进入容器
docker exec -it cl2 /bin/bash
启动容器
docker start cl2
停止容器
docker stop cl2
删除容器
docker rm cl2
查看容器信息
docker inspect 0dc2dda8012f
容器的数据卷
什么是数据卷?
数据卷是宿主机中的一个目录或文件
当容器目录和数据卷目录绑定后,对方的修改会立即同步
一个数据卷可以被多个容器同时挂载
一个容器也可以被挂载多个数据卷
数据卷的作用
容器数据持久化
外部机器和容器间通信
容器之间数据交换
配置数据卷
docker run ... -v 宿主机目录:容器内目录
目录必须是绝对路径,如果目录不存在则会自动创建,可以挂载多个数据卷
linux: docker run -it --name=c1 -v /usr/data:/usr/data_container centos:7 /bin/bash 前面的是服务器的目录 : 冒号后面的是 容器内的目录
centos7 如果操作文件提示没有权限 则在创建容器之前应设置一下目录
chcon -Rt svirt_sandbox_file_t /usr/data
docker run -it --name=c2 -v /usr/data:/usr/data_container centos:7 容器内/usr/data_container 文件夹已建好 linux系统主机内 /usr/data也已经创建好了 此时两个目录实现同步了
无论是关闭容器,还是删除容器, linux系统主机内 /usr/data 中的数据都不会丢失
docker rm c1 c2
删除容器后 /usr/data 数据不会丢失 然后恢复容器
docker run -it --name=c1 -v /usr/data:/usr/data_container centos:7
再次进入容器目录/usr/data_container 数据还在
挂载多个目录
docker run -it --name=c5 -v /usr/data2:/usr/data_container2 -v /usr/data3:/usr/data_container3 centos:7
两个容器挂载同一个数据卷 实现两个容器之间的数据同步
docker run -it --name=c5 -v /usr/data:/usr/data centos:7
docker run -it --name=c6 -v /usr/data:/usr/data centos:7
修改 c5容器 c6容器也会发生改变实现数据同步
数据卷容器
以上的方式虽然可以实现数据同步,但是不利于数据恢复 备份 ,一下使用容器来实现
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
至此三个容器内的volume文件夹实现同步