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文件夹实现同步

 

 

原文地址:https://www.cnblogs.com/baidawei/p/9198679.html