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 (-f 不用停止直接删除)
查看容器信息
docker inspect 0dc2dda8012f
查看日志
docker logs -f --tail=100 containerid 查看日志 --tail 取100条
容器的数据卷
什么是数据卷?
数据卷是宿主机中的一个目录或文件
当容器目录和数据卷目录绑定后,对方的修改会立即同步
一个数据卷可以被多个容器同时挂载
一个容器也可以被挂载多个数据卷
数据卷的作用
容器数据持久化
外部机器和容器间通信
容器之间数据交换
配置数据卷
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文件夹实现同步