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

 

 

posted @ 2020-08-31 18:42  海盗船长  阅读(229)  评论(0编辑  收藏  举报