docker应用基础

docker应用基础


  • docker:容器使用的前端工具

    • 组件:(彼此间通过http/https协议进行通讯)
      • Client : 客户端
      • Daemon :docker守护进程、服务端
      • Registry : docker镜像仓库
  • RESTful接口:一种分布式应用程序API调用的开发风格和规范

docker安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
##########################确保时间同步########################
[root@centos7 yum.repos.d]# ntpdata ...

#######################下载docker yum源######################
[root@centos7 yum.repos.d]# pwd
/etc/yum.repos.d
[root@centos7 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #下载的docker源为阿里云

#####################安装docker社区版########################
如果有报错
Error: Package: 3:docker-ce-18.09.0-3.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2.9
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

yum install http://vault.centos.org/centos/7.3.1611/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm

[root@centos7 yum.repos.d]# yum install docker-ce

############################使用镜像加速#####################
方式一:aliyun官网镜像加速
https://cr.console.aliyun.com
方式二:docker公共加速器
http://www.docker-cn.com/registry-mirror
支持两种方式同时使用

[root@centos7 ~]# mkdir -p /etc/docker
[root@centos7 ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://xr8r3tc3.mirror.aliyuncs.com","https://registry.docker-cn.com"]
> }
> EOF
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl restart docker

###################查看docker客户端版本和服务端版本############
查看版本信息
[root@centos7 ~]# docker version
Client: #客户端版本
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false

Server: Docker Engine - Community #服务端版本
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false

查看更详细的docker环境信息
[root@centos7 ~]# docker info
Containers: 0 #系统上总共有多少个容器
Running: 0 #容器运行态个数
Paused: 0 #容器暂停态个数
Stopped: 0 #容器停止态个数
Images: 0 #当前系统上镜像的个数
Server Version: 18.09.0
Storage Driver: overlay2 #存储驱动
Backing Filesystem: xfs #放置在本地的文件系统的格式,建议使用xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs #资源配额功能,需要的虚拟文件系统格式
Plugins: #插件
Volume: local #存储卷的插件,仅支持本地
Network: bridge host macvlan null overlay #网络插件,支持桥接、主机、叠加、不使用等
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog #日志系统插件
Swarm: inactive #集群管理工具
Runtimes: runc #运行时环境
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.779GiB
Name: centos7.com
ID: CUT4:A7LF:QJ4B:OORH:POA7:AZ7I:SWFT:7F4H:YKBQ:YFXH:BBBV:WGNQ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors: #镜像加速服务
https://xr8r3tc3.mirror.aliyuncs.com/
Live Restore Enabled: false
Product License: Community Engine

docker资源管理

  • 两类资源
    • images:镜像资源管理(静态)
      • docker image -h
      • Usage: docker image COMMAND
      • Commands:
        • build
        • history
        • import
        • inspect #查看镜像的信息
        • load
        • ls
        • prune
        • pull #从远程下载镜像
        • push #将本地的镜像上传
        • rm #删除 docker image rm = docker rmi
        • save
        • tag #给镜像打标签,一个镜像可以有多个标签
    • container:容器管理(动态) docker一个容器中一个进程
      • Usage: docker container COMMAND
      • Commands:
        • attach
        • commit #保存镜像
        • cp
        • create #创建容器
        • diff
        • exec #执行容器中的命令
        • export
        • inspect #查看容器的信息
        • kill #杀死容器
        • logs
        • ls
        • pause #暂停容器
        • port
        • prune
        • rename #重命名容器
        • restart #重启容器
        • rm #删除容器
        • run
        • start #启动容器
        • stats
        • stop #停止容器
        • top
        • unpause #继续容器
        • update
        • wait

docker容器状态

  • 容器的状态docker container ps = docker ps
    • running 运行态
    • stopped 停止态
    • paused 暂停态
    • created 创建态
    • deleted 删除态

  • OOM:内存耗尽

docker容器命令使用

  • 创建容器
    • docker create
    • docker run
      • -t,tty
      • -i,–interactive
      • –name #容器的名字一定不要同名
    • docker0 : 桥
      • 172.17.0.0/16
    • –network : 指定网络接口
    • –rm : 如果容器停止寓意容器引擎立即将其容器删除 # 适用于临时的容器与-d 选项项抵触
    • -d,detach : 守护,运行在后台剥离与当前终端的关系 #与–rm选项相抵触不可同时使用
  • 容器中执行命令 #只有终端id号为1 的进程则此容器才会停止
    • docker container exec = docker exec
      • -i:交互式接口
      • -t:分配终端
  • docker常用命令
    • docker stop #停止容器的运行
    • docker rm #删除容器,直接删除则容器中的数据也将删除,代表容器内的存储单元也被删除掉,且慎用。
  • 查看容器的日志信息
    • docker container logs = docker logs
      • docker日志是直接发往终端控制台
  • 查看容器使用占用的内存空间

    • docker container stats = docker stats
  • 显示容器运行的所有的进程的相关信息

    • docker container top = docker top
  • 列出所有的相关镜像
    • docker images = docker image ls
  • 返回容器的终端

    • docker container attach = docker attach
  • 去docker hub中下载nginx镜像时:最后一位数字为奇数数位金丝雀版,非稳定版,开发版。生产中最好使用偶数或者stable

  • 某一程序如果运行在容器中,并且id号为1的进程时,此进程必须运行在前台。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
###################根据关键字来了解镜像################
[root@centos7 ~]# docker search redis

###################拖取镜像到本地######################
###################默认从hub.docker.com拖取###########
[root@centos7 ~]# docker image pull centos:7
[root@centos7 ~]# docker pull redis:4-alpine
4-alpine: Pulling from library/redis
cd784148e348: Pull complete #分层拖下来的,每一个都是一个层
48d4c7155ddc: Pull complete
6d908603dbe8: Pull complete
fd4371c1c78e: Pull complete
e6818dc808c2: Pull complete
f1884d594f6f: Pull complete
Digest: sha256:775bbf766a5b711acce88e4142faf56cd587d63ddc4d57b49f7872f71d56fab6
Status: Downloaded newer image for redis:4-alpine

###################显示本地镜像########################
REPOSITORY:镜像仓库仓库名
TAG:标签
IMAGE ID: 镜像id
CREATED: 镜像的创建时间
SIZE:镜像存储在本地的大小

[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 4-alpine 37abb58bfd68 9 days ago 30MB

######################删除镜像#########################
[root@centos7 ~]# docker image rm 镜像名称

#######################查看镜像的详细信息###############
[root@centos7 ~]# docker image inspect redis:4-alpine
#显示一个jesn格式镜像信息


#########################启动容器######################
docker run = docker container run
- it :交互式,并附加终端
--name:容器名字

[root@centos7 ~]# docker container run -it --name c1 centos:7 /bin/bash
[root@3aee0a6acdfd /]#
[root@3aee0a6acdfd /]# yum install net-tools
[root@3aee0a6acdfd /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
[root@3aee0a6acdfd /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

如果运行容器主机上默认生成一docker0的桥,默认网段172.17.0.0 ,随后创建的容器都会加载到此桥上,此桥为NET桥
[root@centos7 ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:ddff:fed7:23fb prefixlen 64 scopeid 0x20<link>
ether 02:42:dd:d7:23:fb txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1770 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@centos7 ~]# brctl show #容器引擎动态实现
bridge name bridge id STP enabled interfaces
docker0 8000.0242ddd723fb no

启动容器后也会生成默认防火墙规则
前期使用建议关闭firewalld

##################查看所有运行状态的容器#####################
- docker ps = docker container ps
[root@centos7 ~]# docker ps -a #查看容器的所有状态

[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3aee0a6acdfd centos:7 "/bin/bash" 12 minutes ago Up 12 minutes c1

#####################显示当前docker支持的网络接口#############
- 默认bridge,代表docker0桥
[root@centos7 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
777fc349679b bridge bridge local
9b7ecc0031ef host host local
c0de873b7341 none null local

##################运行redis进程且放到后台不影响当前终端########
[root@centos7 ~]# docker run --name redis -d redis:4-alpine
100f426c23ae6f50e015e7ad5fd13cdee33180c9ac43835f7d6ecef422b38f1c

- CONTAINER ID:短格式id
- IMAGE :容器启动用的镜像
- COMMAND:容器运行的命令
- CREATED:容器创建的时间
- STATUS:容器运行的状态
- PORTS:容器监听的端口,监听的端口是在容器内部的
- NAMES:容器的名称

[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
100f426c23ae redis:4-alpine "docker-entrypoint.s…" 8 seconds ago Up 6 seconds 6379/tcp redis

######################删除正在运行容器#########################
[root@centos7 ~]# docker container stop redis
redis
[root@centos7 ~]# docker container rm redis #如果容器停止寓意容器引擎立即将其容器删除
redis

#####################外部在容器中执行命令##################
以交互式接口中运行bash
[root@centos7 ~]# docker container exec -it redis /bin/sh
/data #
/data # ps aux
PID USER TIME COMMAND
1 redis 0:00 redis-server #只有终端id号为1 的进程则此容器才会停止,所以退出交互式终端并非结束了次容器
17 root 0:00 /bin/sh
23 root 0:00 ps aux

#######################w外部终端查看容器运行状态#############
- 在不进入容器的交互式接口,显示的信息为容器内部的运行状态信息
[root@centos7 ~]# docker container exec redis ps aux
PID USER TIME COMMAND
1 redis 0:00 redis-server
24 root 0:00 ps aux

######################创建容器在停止状态是自动删除###########
- 拉取一个nginx的镜像 #生产环境中拖取镜像版本尽量使用偶数的服务版本,奇数的版本一般为金丝雀版
[root@centos7 ~]# docker image pull nginx:1.15-alpine
- 运行执行的/bin/sh,并且退出终端时结束删除此进程
[root@centos7 ~]# docker run --name web -it --rm nginx:1.15-alpine /bin/sh
/ #
/ # exit
[root@centos7 ~]# docker ps -a

######################以守护进程运行nginx#####################
-d与--rm 选项不可同时使用
[root@centos7 ~]# docker run --name web -d nginx:1.15-alpine
[root@centos7 ~]# docker container exec web ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
[root@centos7 ~]# curl 172.17.0.2 #外部主机访问容器中的服务
[root@centos7 ~]# wget -O - -q 172.17.0.2
[root@centos7 ~]# elinks -dump 172.17.0.2

#######################查看容器的日志信息#######################
- docker日志是直接发往终端控制台,
[root@centos7 ~]# docker container logs web

####################显示容器运行的所有的进程的相关信息###########
- 仅显示指定的容器的运行的进程的相关信息
[root@centos7 ~]# docker top web
UID PID PPID C STIME TTY TIME CMD
###########################attach#########################
# 剥离容器当前运行的终端,但是容器仅是退出了运行的终端,但不停止容器
# 剥离终端 ctrl+p ,ctrl+q
[root@centos7 ~]# docker run --name c2 centos:7
[root@centos7 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b5aa9c9e6ad centos:7 "/bin/bash" 8 seconds ago Exited (0) 6 seconds ago c2
[root@centos7 ~]# docker rm c2
c2
[root@centos7 ~]# docker run --name c2 -it centos:7
[root@49e278ef42ca /]# [root@centos7 ~]#
[root@centos7 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49e278ef42ca centos:7 "/bin/bash" 40 seconds ago Up 39 seconds c2
[root@centos7 ~]# docker container attach c2
[root@49e278ef42ca /]#

docker镜像

  • About Docker Images
    • Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用 于创建并启动docker容器
    • 采用分层构建机制,最底层为bootfs,其之为rootfs
      • bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以 节约内存资源;
      • rootfs:位于bootfs之上,表现为docker容器的根文件系统;
        • 传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式,完整性自检完成 后将其重新挂载为读写模式;
        • docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂载一个“可写”层。

  • Docker Image Layer(层)
    • 位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(base image) -
    • 最上层为“可读写”层,其下的均为“只读”层
    • wirtable最上面的可写层并非镜像提供,而是容器提供的
    • 建构在本地的二级文件系统
      • /var/lib/docker/image/overlay2/
        • distribution imagedb layerdb repositories.json

Aufs

  • advanced multi-layered unification filesystem:高级多层统一文件系统
    • 用于为Linux文件系统实现“联合挂载”
    • aufs是之前的UnionFS的重新实现,2006年由Junjiro Okajima开发;
    • Docker最初使用aufs作为容器文件系统层,它目前仍作为存储后端之一来支持;
    • aufs的竞争产品是overlayfs,后者自从3.18版本开始被合并到Linux内核;
    • docker的分层镜像,除了aufs,docker还支持btrfs, devicemapper和vfs等
      • 在Ubuntu系统下,docker默认Ubuntu的 aufs;而在CentOS7上,用的是devicemapper。

        Docker Registry

  • 启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像 不存在时,其将从Registry中下载该镜像并保存到本地。

  • 分类

    • Registry用于保存docker镜像,包括镜像的层次结构和元数据
    • 用户可自建Registry,也可使用官方的Docker Hub
      • Sponsor Registry:第三方的registry,供客户和Docker社区使用
      • Mirror Registry:第三方的registry,只让客户使用
      • Vendor Registry:由发布Docker镜像的供应商提供的registry
      • Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry
  • Docker Registry中的镜像通常由开发人员制作,而后推送至“公共”或“ 私有”Registry上保存,供其他人员使用,例如“部署”到生产环境.

制作docker仓库

docker Hub

麻雀虽小五脏俱全的linux发行版--很忙的盒子

1
2
3
4
5
6
7
8
[root@centos7 ~]# docker image pull busybox:latest
busybox:一个微型的linux发行版(很忙的盒子)
[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 758ec7f3a1ee 4 days ago 1.15M
[root@centos7 ~]# docker run --name box1 -it busybox:latest /bin/sh
/ # ls
bin dev etc home proc root sys tmp usr var

范例:制作镜像仓库

docker container commit –help
Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Options:
-a, –author string #指定镜像的作者
-c, –change list #对底层镜像默认运行的程序 进行修改
-m, –message string
-p, –pause #表示制作镜像的时候将容器暂时暂停,避免数据结构不一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#########对本地很忙的盒子进行修改并推送到自己docker hub镜像仓库#######
[root@centos7 ~]# docker run --name box1 -it busybox:latest /bin/sh
/ # ls
bin dev etc home proc root sys tmp usr var
/ # mkdir /daizhe
/ # ls
bin dev home root tmp var
daizhe etc proc sys usr

#####################保存修改的镜像并打标签#######################
#确保容器终端不要关闭
[root@centos7 ~]# docker container commit box1 docker19980110/mybox:v0.1
sha256:42956b7e3ff8df5b77abd5b44654aac46bc00fd2ec2e690f1e92847e9879fd99
[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker19980110/mybox v0.1 c6a32f929f07 15 seconds ago 1.15MB

###############本机启动测试查看保存的数据数据结构是否存在#############
[root@centos7 ~]# docker run --name mybox -it docker19980110/mybox:v0.1
/ # ls
bin dev home root tmp var
daizhe etc proc sys usr

#####################登陆docker hub###############################
[root@centos7 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: docker19980110
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

#####################将本地的镜像推送到docker hub####################
#如果原仓库总有相同的镜像,当推送时,仅推送变化的那一层
[root@centos7 ~]# docker image push docker19980110/mybox:v0.1
The push refers to repository [docker.io/docker19980110/mybox]
5190a84cd271: Pushed
23bc2b70b201: Mounted from library/busybox
v0.1: digest: sha256:05ce13e43087ab6249c717c3278e9f2c8d1199310447ac806c527ee85b0dfcb8 size: 734

范例:制作镜像并对底层镜像默认运行的程序 进行修改以及标签设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
############################很忙的盒子中默认带有http程序####################
/ # /bin/httpd -h
/bin/httpd: option requires an argument -- h
BusyBox v1.29.3 (2018-12-24 21:25:20 UTC) multi-call binary.

Usage: httpd [-ifv[v]] [-c CONFFILE] [-p [IP:]PORT] [-u USER[:GRP]] [-r REALM] [-h HOME]
or httpd -d/-e/-m STRING

Listen for incoming HTTP requests

-i Inetd mode
-f Don't daemonize
-v[v] Verbose
-p [IP:]PORT Bind to IP:PORT (default *:80)
-u USER[:GRP] Set uid/gid after binding to port
-r REALM Authentication Realm for Basic Authentication
-h HOME Home directory (default .)
-c FILE Configuration file (default {/etc,HOME}/httpd.conf)
-m STRING MD5 crypt STRING
-e STRING HTML encode STRING
-d STRING URL decode STRING

####################对很忙的盒子进行修改,启动默认运行httpd###########
#保存原有的镜像
#启动运行http
-f 前台运行,不适用守护进行
-h 执行家目录
[root@centos7 ~]# docker container commit -p -a "daizhe<daizhe.com>" -c 'CMD ["/bin/sh","-c","/bin/httpd -f -h /data/web/html"]' mybox
sha256:eced8dbd5d14dcb5c4be938d509103a9440cf3d7080620b49dac8fbbbe309974
#保存的镜像未打标签
[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> eced8dbd5d14 26 seconds ago 1.15MB

##########################将保存的镜像添加标签#####################
#使用id号指定镜像来重新添加标签
[root@centos7 ~]# docker image tag eced8dbd5d14 docker19980110/mybox:v0.2
[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker19980110/mybox v0.2 eced8dbd5d14 6 minutes ago 1.15MB

########################将一个镜像打多个标签######################
#latest表示最新的意思
[root@centos7 ~]# docker tag docker19980110/mybox:v0.2 docker19980110/mybox:latest
[root@centos7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker19980110/mybox latest eced8dbd5d14 8 minutes ago 1.15MB
docker19980110/mybox v0.2 eced8dbd5d14 8 minutes ago 1.15MB


#########################再次将本地的镜像推送到docker hub仓库########
[root@centos7 ~]# docker push docker19980110/mybox:v0.
v0.1 v0.2
[root@centos7 ~]# docker push docker19980110/mybox:v0.2
The push refers to repository [docker.io/docker19980110/mybox]
355c5bc17ee9: Pushed
5190a84cd271: Layer already exists
23bc2b70b201: Layer already exists
v0.2: digest: sha256:ab14ea25f1fbcc40a623343dd44a76224568a0200820f1ee5b61dc81c96ca12a size: 941
[root@centos7 ~]# docker push docker19980110/mybox:latest
The push refers to repository [docker.io/docker19980110/mybox]
355c5bc17ee9: Layer already exists
5190a84cd271: Layer already exists
23bc2b70b201: Layer already exists
latest: digest: sha256:ab14ea25f1fbcc40a623343dd44a76224568a0200820f1ee5b61dc81c96ca12a size: 941
-------------------码字不易尊重原创转载标注不胜感激-------------------
Yes or no?
0%