学神IT linux云计算集群架构师课程
新建自定义容器
demo1:自定义一个centos
[[email protected] ~]# docker images docker.io/centos latest 1e1148e4cc2c 2 weeks ago 202 MB [[email protected] /]# cd /usr [[email protected] usr]# mkdir temp [[email protected] usr]# cd temp [[email protected] temp]# touch a.txt [[email protected] temp]# echo "Hello World" >> a.txt [[email protected] usr]# exit exit [[email protected] ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0b57154731ca centos "bash" 12 minutes ago Exited (0) 23 seconds ago [[email protected] ~]# docker commit 0b57154731ca jia/centos:1.0 sha256:c306d0695abefd2e37859f7eaff92e9b20833e650b334ae4d1fa0d1de32f08ea [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jia/centos 1.0 c306d0695abe 12 seconds ago 325 MB docker.io/centos latest 1e1148e4cc2c 2 weeks ago 202 MB [[email protected] ~]# docker run -it jia/centos:1.0 bash [[email protected] /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [[email protected] /]# cd usr [[email protected] usr]# cd temp [[email protected] temp]# cat a.txt Hello World
demo2:(以删除tomcat doc文档为列子)
环境:先启动tomcat(阿里),通过attach命令进入内部容器,删除doc文件
[[email protected] ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b58d5c68b21 tomcat "catalina.sh run" 11 seconds ago Up 10 seconds 0.0.0.0:8888->8080/tcp inspiring_easley [[email protected] ~]# docker commit -a="jiaxianseng" -m="tomcat without docs" 1b58d5c68b21 bogon/usr/java:1.2 #提交容器副本使之成为一个新的镜像 sha256:3280223284dbf4b2e2bc60648116e9e5f6c22bb10b50c698f9467133f9806270 [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE bogon/usr/java 1.2 3280223284db 23 seconds ago 475 MB docker.io/tomcat latest 48dd385504b1 8 days ago 475 MB docker.io/centos latest 1e1148e4cc2c 10 days ago 202 MB [[email protected] ~]# docker run -it -p 7777:8080 bogon/usr/java:1.2
2、Dockerfile形式创建镜像
1.1) Dockerfile是之创建一个命名为Dockerfile文本,该文本定义了对自定义容器的操作,具体操作演示如下
[[email protected] temp]# pwd /usr/java/temp [[email protected] temp]# vim Dockerfile
1.2)定义的内容如下
From centos:7 COPY test1.txt /usr/java/temp/ COPY test2.txt /usr/java/temp/
1.3) 表示创建镜像并将宿主机的指定的目录内(根据创建镜像指定的路径下)的test1.txt与test2.txt拷贝到创建的镜像中
[[email protected] temp]# echo "Hello" >>test1.txt [[email protected] temp]# echo "JIA" >>test2.txt [[email protected] temp]# docker build -t jia/demo:1.1 . [[email protected] temp]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jia/demo 1.1 028625c703b5 6 seconds ago 202 MB [[email protected] temp]# docker run -it jia/demo:1.1 bash [[email protected] /]# cd /usr [[email protected] usr]# cd java/temp [[email protected] temp]# ll total 8 -rw-r--r--. 1 root root 6 Dec 23 04:24 test1.txt -rw-r--r--. 1 root root 4 Dec 23 04:24 test2.txt [[email protected] temp]# more test1.txt Hello
2) Dockerfile命令
2.1)COPY
COPY指令从build上下文复制文件或者文件夹到容器文件系统
2.2) ADD指令
ADD指令不但可以复制文件到容器文件系统,而且可以从头internet下载文件并复制到容器
ADD指令可以自动加压压缩文件
通常用COPY指令,除非明确需要ADD指令
2) Dockerf缓存
没次Docker执行一次指令将创建新的镜像,如果下一次指令没有变化,Docker将使用现有的缓存
使用Dockerfile创建镜像,如果第二次创建使用的Dockerfile没有变化,就会使用第一次创建的缓存
如:
[[email protected] temp]# docker build -t jia/demo:1.4 . Sending build context to Docker daemon 4.096 kB Step 1/3 : FROM centos:7 ---> 1e1148e4cc2c Step 2/3 : COPY test1.txt /usr/java/temp/ ---> Using cache ---> 8ca728ac64eb Step 3/3 : COPY test2.txt /usr/java/temp/ ---> Using cache ---> 6b77462c1a84 Successfully built 6b77462c1a84
3) docker缓存所带来的问题
之前:
Before: From centos:7 RUN yum update -y RUN yum install -y git
之后
After: FROM centos:7 RUN yum update -y RUM yum install -y git curl
有可能第一次yum是老版本,第二次则会利用缓存,下载下的不是最新的git版本
解决:
3.1) 链式输入命令
FROM centos:7 RUN yum update -y && yum install -y git curl
3.2) 指定-no-cache选项
docker build -t jia/centos . --no-cache=true
十、Docker 容器数据卷
1、介绍
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然就没有了,为了保存数据在docker中可以使用数据卷(相当于将数据持久化:宿主主机与容器之间的数据共享)
卷就是目录或文件,存在与一个或多个容器中,由docker挂在到容器,但不属于联合文件系统,因此能绕过Union File System提供一些用于持续存储或共享数据的特性:
卷设计目的就是数据持久化,完全独立于容器的生存周期,因此Docker不会再容器删除时删除其挂载的数据卷
特点:
1)、数据卷可以在容器之间共享或重用数据
2)、卷中的更改可以直接生效
3)、数据卷中的更改不会包含在镜像的更新中
4)、数据卷的生命周期一直持续到没有容器使用它为止
2、直接命令添加
1) docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
意思是容器与宿主机各建立一个共享文件夹,双方数据能实现同步
[[email protected] java]# docker run -it -v /usr/java/data:/containerdata centos
此时宿主机会出现data文件夹,容器根目录会出现containerdata文件夹,宿主机在data文件夹新建的文件container文件夹会即使响应(即使容器关闭),相反同理
2) 待权限:docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
[[email protected] java]# docker run -it -v /usr/java/data:/containerdata:ro centos
此时宿主机新建的文件容器响应后只有读的权限
3、使用DockerFile添加数据卷
步骤:
1)、根目录下新建mydocker文件夹并进入
2)、可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
3)、File构建
4)、build后生成镜像--获得一个新的镜像
5)、run容器
3.1)、现在宿主机根目录下新建mydocker文件夹,并在该目录下新建文夹Dockerfile,使用VLUME指令给镜像添加一个或多个数据卷
# volume test FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,--------success" CMD /bin/bash
3.2)、使用build生成镜像
[[email protected] mydocker]# docker build /mydocker/Dockerfile -t jia/centos . #注意:要加个“.”
3.3)、运行镜像生成容器,在容器中新建的内容,可以用inspect命令查看到到它与宿主机映射同步的文件
4、数据卷容器
定义:
数据卷容器即命名的容器挂在数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器称之为数据卷容器,即容器键传递共享
demo:新建容器1,利用上面build的环境镜像
[[email protected] mydocker]# docker run -it --name dc01 jia/centos [[email protected]522bf1e /]# cd dataVolumeContainer2 [[email protected] dataVolumeContainer2]# touch dc01_add.txt [[email protected] dataVolumeContainer2]# [[email protected] mydocker]# #ctr+p+q 退出不关闭 [[email protected] mydocker]# docker run -it --name dc02 --volumes-from dc01 jia/centos #创建dc02并集成dc01 [[email protected] /]# cd dataVolumeContainer2 [[email protected] dataVolumeContainer2]# ll total 0 -rw-r--r--. 1 root root 0 Dec 16 12:55 dc01_add.txt #此时容器dc02也有dc01_add.txt
十一、安装mysql
1、拉取镜像
[[email protected] /]# docker pull mysql:5.6
2、运行镜像
1 |
|
3、客户端链接
4、数据备份
将mysql中创建的表格数据备份到宿主机上
[[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bac8a9ba01b7 mysql:5.6 "docker-entrypoint..." 2 minutes ago Up 2 minutes 0.0.0.0:3307->3306/tcp mysql [[email protected] ~]# docker exec bac8a9ba01b7 sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /usr/java/all-databases.sql Warning: Using a password on the command line interface can be insecure. [[email protected] ~]# cd /usr/java [[email protected] java]# ll 总用量 1 -rw-r--r--. 1 root root 3321119 12月 16 21:52 all-databases.sql
注意:--all-databases是备份所有库数据,如果是备份指定库的名字
十二、安装redis
1、拉取 镜像
[[email protected] java]# docker pull redis
2、运行镜像
[[email protected] java]# docker run -p 6379:6379 -v /usr/java/redisdata/data:/data -v /usr/java/redisdata/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
3、在宿主机的指定文件夹(这里是/usr/java/redisdata/conf/redis.conf)目录下,拷贝一份redis.conf于该目录,则通过 操作此配置文件来操作容器中的配置
4、利用redis-cli命令启动
[[email protected] java]# docker exec -it fd0d53df30a3 redis-cli
十三、本地镜像推送至阿里云
镜像的生成方法:1、DockerFile 2、从容器创建一个新的镜像 docker commit
1、将指定镜像推送到本地
[[email protected] java]# docker run -it centos #假如以centos为列子 [[email protected] /]# pwd / [[email protected] /]# [[email protected] java]# [[email protected] java]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 688ff3c3a696 centos "/bin/bash" 15 seconds ago Up 13 seconds competent_mahavira [[email protected] java]# docker commit -a jiaxianseng -m "new centos" 688ff3c3a696 centos sha256:9fcec34e52bb3c3092dbf5c43fa98bf19fc66a5e7216690ae75a03eb98e9bde5 [[email protected] java]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 9fcec34e52bb 6 seconds ago 202 MB docker.io/redis latest ce25c7293564 2 days ago 95 MB docker.io/tomcat latest 48dd385504b1 8 days ago 475 MB docker.io/centos latest 1e1148e4cc2c 10 days ago 202 MB docker.io/mysql 5.6 a876cc5d29e4 4 weeks ago 256 MB
2、在阿里云上创建镜像仓库
1) 访问地址:阿里云
2) 找到容器镜像服务,创建镜像仓库
3、点击管理便可以看到操作的代码
十四:Docker部署web应用
1、环境前提:配置jdk环境与mvaven环境
[[email protected] mysql-spring-boot-todo]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[[email protected] mysql-spring-boot-todo]# mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/java/maven Java version: 1.8.0_191, vendor: Oracle Corporation Java home: /usr/java/jdk1.8/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.6.3.el7.x86_64", arch: "amd64", family: "unix"
2、安装git
yum install -y git maven
3、拉取代码
git clone https://github.com/yangzhares/mysql-spring-boot-todo.git
4、 更新pom中的docker-maven-plugin
该项目是基于Dockerfile构建镜像
5、更新application.yml中的mysql配置
[[email protected] resources]# pwd /usr/java/javademo/mysql-spring-boot-todo/src/main/resources [[email protected] resources]# vim application.properties
6、由于本人宿主机上下载的mysql是最新的,所以拷贝下的项目mysql驱动要高点
7、配置方言
[[email protected] mysql-spring-boot-todo]# more src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://192.168.174.128:3307/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
8、maven打包生成镜像
[[email protected] javademo]# ll 总用量 4 drwxr-xr-x. 6 root root 4096 12月 23 20:22 mysql-spring-boot-todo [[email protected] javademo]# cd mysql-spring-boot-todo/ [[email protected] mysql-spring-boot-todo]# mvn clean package docker:build [[email protected] mysql-spring-boot-todo]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jia/todo-demo 1.0.0 6a7e03e0ae46 12 seconds ago 712 MB
如果看到BUILD SUCCESS,已经生成的自定义镜像说明打包成功
9、运行mysql镜像
[[email protected] resources]# docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASSE=test -d mysql:5.6
10、运行生成的镜像
[email protected] resources]# docker run --name todo -d -p 8080:8080 jia/todo-demo:1.0.0
此时通过docker ps命令可以看到不久后该镜像会挂失
[email protected] resources]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec224714ace6 mysql:5.6 "docker-entrypoint..." 7 minutes ago Up 7 minutes 0.0.0.0:3306->3306/tcp mysql01 [[email protected] resources]# docker logs todo
问题一:未配置方言或者mysql驱动太低(本人一直卡在这,一直报org.hibernate.service.spi.ServiceException: Unable to create requested service
通过docker logs 镜像名可以看到mysql未连接上,但是配置文件配置了mysql连接相关信息,也启动了mysql,却连接不上,这涉及到docker之间通讯问题(这里只演示单机到之间的通讯,如果不同的主机涉及网络问题)
Docker容器之间的通讯
1) 采用link命令(不推荐)
[[email protected] resources]# docker run --name todo -d -p 8080:8080 --link mysql jia/todo-demo:1.0.0
此时如果访问http://虚拟机ip:8080,出现如下界面说明通讯成功
2) 通过exec命令查看docker容器之间是怎样通讯的
[[email protected] ~]# docker exec -it todo bash [email protected]:/app$ cat /etc/hosts //打印hosts文件 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 mysql 0815d7ef28b0 //会多一条连接mysql地址 172.17.0.3 e984359ddb98 [email protected]:/app$ ping mysql //当然通过ping命令也可以ping通 PING mysql (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.235 ms 64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.140 ms
3) 查看env可以查看环境变量
[email protected]:/app$ env
从中可以看到环境变量中配置了mysql相关的参数
4)使用连接的好处
运行在同一主机的独立容器间可以相互通讯
容器间建立一个安全通讯隧道而不需要暴露容器的任何端口
十五、使用Docker Compose管理多个容器
使用官方不推荐link方式进行容器之间的通讯,因为要一个一个地启动容器,官方推进Docker Compose方式管理多个容器
1、为什么需要docker Compose
当多个容器相互之间需要通讯时,手动配置容器间连接变得非常复杂
2、什么是Docker Compose
Docker Compose是一个定义和管理多个Docker容器的工具
它通过YAML文件定义Docker应用运行时信息,如端口,网络等
使用Docker Compose,一个简单命令可以管理多个容器应用
3、使用场景
快速构建开发环境
自动化测试环境
单一主机部署
4、简单演示之如何通过Docker Compose
4.1) 定义Dockerfile
4.2) 定义docker-compose.yml文件
4.3) 通过docker-compose up启动docker-compose.yml所定义的Docker应用
demo中包含docker-compose.yml文件,其中定义关于两个容器的参数配置
[[email protected] docker-compose]# pwd /usr/java/javademo/mysql-spring-boot-todo/docker-compose [[email protected] docker-compose]# ll 总用量 12 -rw-r--r--. 1 root root 667 12月 23 17:26 docker-compose.yml
也定义两个Dockerfile文件
-rw-r--r--. 1 root root 195 12月 23 14:59 Dockerfile-mysql
4.4) 安装docker-compose
[[email protected] docker-compose]# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-'uname-s'-'uname -m' -o /usr/local/bin/docker-compose [[email protected] docker-compose]# chmod +x /usr/local/bin/docker-compose
4.5) 启动容器
[[email protected] docker-compose]# docker-componse up -d
几个重要的Docker Compose命令
docker-compose up:启动所有容器
docker-compose ps:查看所有运行容器
docker-compose logs:查看运行容器日志
docker-compose stop:停止运行容器
docker-compose rm:删除已停止容器
docker-compose build:重新创建所有镜像
注意:dokcer-compose只有在Docker镜像不存在时创建镜像
更行Dockerfile后一定要执行dockerA-compose build重新创建镜像
Docker远程访问
1、环境准备
第二台安装Docker的服务器
修改Docker守护进程启动选项,区别服务器
保证Client API与Server API版本一致
2、为每台服务器配置label标签并且绑定ip
宿主机1:(服务端 )
[[email protected] docker]# whereis docker docker: /usr/bin/docker /etc/docker /usr/libexec/docker /usr/share/man/man1/docker.1.gz [[email protected] docker]# pwd /etc/docker [[email protected] docker]# vim daemon.json
{ "registry-mirrors": ["https://1mz9i0xi.mirror.aliyuncs.com"], #阿里云加速 "labels": ["name=docker-server_1"], #为该docker设置标签身份标识 "hosts": [ "tcp://0.0.0.0:2375", #表示绑定本机ip并且设置端口号为2375 "unix:///var/run/docker.sock" #docker客户端和服务端是使用socket连接方式的,有三种socket连接方式, 一种是直接连接本地的socket文件unix:///var/run/docker/sock
,第二种是tcp://host:prot
, 第三种是fd://socketfd
,默认docker都是直接连接本地的socket文件,默认使用unix ] }
重启:
[[email protected] docker]# systemctl restart docker
宿主机2:
配置label
{ "registry-mirrors": ["https://1mz9i0xi.mirror.aliyuncs.com"], "labels": ["name=docker-server_2"] }
重启:并访问服务端
[[email protected] ~]# curl http://192.168.174.134:2375/info {"ID":"3WZZ:XR6K:SPLT:PLKO:XIGT:QREM:2NQ4:ZXCX:2774:YX73:JSKV:NU75", "Containers":1,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":1, "Images":5,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","xfs"], ["Supports d_type","false"],["Native Overlay Diff","true"]],"SystemStatus":null, "Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"], "Authorization":null},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true, "CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true, "BridgeNfIp6tables":true,"Debug":false,"NFd":15,"OomKillDisable":true,"NGoroutines":22, "SystemTime":"2019-01-01T20:45:12.853448729+08:00","LoggingDriver":"journald", "CgroupDriver":"systemd","NEventsListener":0,"KernelVersion":"3.10.0-862.6.3.el7.x86_64", "PkgVersion":"docker-1.13.1-88.git07f3374.el7.centos.x86_64","OperatingSystem":"CentOS Linux 7 (Core)", "OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/", "IndexServerName":"docker.io","RegistryConfig":{"InsecureRegistryCIDRs":["127.0.0.0/8"], "IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":["https://1mz9i0xi.mirror.aliyuncs.com"], "Secure":true,"Official":true}},"Mirrors":["https://1mz9i0xi.mirror.aliyuncs.com"]},"NCPU":1, "MemTotal":1910042624,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"", "NoProxy":"","Name":"bogon","Labels":["name=docker-server_1"],"ExperimentalBuild":false, "ServerVersion":"1.13.1","ClusterStore":"","ClusterAdvertise":"", "Runtimes":{"docker-runc":{"path":"/usr/libexec/docker/docker-runc-current"}, "runc":{"path":"docker-runc"}},"DefaultRuntime":"docker-runc", "Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null,"Nodes":0,"Managers":0, "Cluster":{"ID":"","Version":{},"CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z","Spec":{"Orchestration":{}, "Raft":{"ElectionTick":0,"HeartbeatTick":0},"Dispatcher":{},"CAConfig":{},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":false}}}}, "LiveRestoreEnabled":false,"Isolation":"","InitBinary":"/usr/libexec/docker/docker-init-current", "ContainerdCommit":{"ID":"","Expected":"aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1"}, "RuncCommit":{"ID":"N/A","Expected":"9df8b306d01f59d3a8029be411de015b7304dd8f"}, "InitCommit":{"ID":"fec3683b971d9c3ef73f284f176672c44b448662","Expected":"949e6facb77383876aeff8a6944dde66b3089574"}, "SecurityOptions":["name=seccomp,profile=/etc/docker/seccomp.json","name=selinux"],"Registries":[{"Name":"docker.io","Secure":true}]}
利用客户端访问:docker -H命令
[[email protected] docker]# docker -H tcp://192.168.174.134:2375 info Containers: 1 Running: 0 Paused: 0 Stopped: 1 Images: 5 Server Version: 1.13.1 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: false Native Overlay Diff: true Logging Driver: journald Cgroup Driver: systemd Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: inactive Runtimes: docker-runc runc Default Runtime: docker-runc Init Binary: /usr/libexec/docker/docker-init-current containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1) runc version: N/A (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f) init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574) Security Options: seccomp WARNING: You're not using the default seccomp profile Profile: /etc/docker/seccomp.json selinux Kernel Version: 3.10.0-862.6.3.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 Number of Docker Hooks: 3 CPUs: 1 Total Memory: 1.779 GiB Name: bogon ID: 3WZZ:XR6K:SPLT:PLKO:XIGT:QREM:2NQ4:ZXCX:2774:YX73:JSKV:NU75 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: name=docker-server_1 Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://1mz9i0xi.mirror.aliyuncs.com Live Restore Enabled: false Registries: docker.io (secure)