1 Docker镜像的分层结构 只有容器层是可写的,容器层下面的全部镜像层都是只读的 叠加文件系统:从上往下依次在各镜像层中查找文件 Copy-on-Write:只有当须要修改时才复制一份数据 2基本操做 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker pull alpine Using default tag: latest latest: Pulling from library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528 Status: Downloaded newer image for alpine:latest #启动镜像为一个容器,并在容器内添加一个20MB的一个文件 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker run -it alpine sh / # dd if=/dev/zero of=lei_temp bs=10M count=2 2+0 records in 2+0 records out / # ls -lh -rw-r--r-- 1 root root 20.0M Dec 5 01:20 lei_temp / # [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a19e4e581ed1 alpine "sh" 2 minutes ago Up 2 minutes confident_brown 以后退出容器 ctrl+p ;ctrl+q 可以保证容器在推出后依旧在运行 从新提交为一个新的镜像alpine:test [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker commit a19e4e581ed1 alpine:test [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine test 6200dbf30b52 5 seconds ago 25.4MB tomcat latest 78b258e36eed 2 weeks ago 463MB alpine latest 196d12cf6ab1 2 months ago 4.41MB 查看这两个镜像 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker history 196d12cf6ab1 IMAGE CREATED CREATED BY SIZE COMMENT 196d12cf6ab1 2 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 2 months ago /bin/sh -c #(nop) ADD file:25c10b1d1b41d46a1… 4.41MB [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# docker history 6200dbf30b52 IMAGE CREATED CREATED BY SIZE COMMENT 6200dbf30b52 2 minutes ago sh 21MB 196d12cf6ab1 2 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 2 months ago /bin/sh -c #(nop) ADD file:25c10b1d1b41d46a1… 4.41MB [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]#
三 什么是镜像分层
四 什么是Dockerfile文件
一般为了减小镜像的层次不会下面的写法 FROM debian RUN apt-get install emacs RUN apt-get install apache2 CMD ["/bin/bash"] 而是把几个RUN命令写在一块儿,减小镜像分层 FROM debian RUN apt-get install emacs && apache2 CMD ["/bin/bash"]
五dockerfile参数
六如何使用Dockerfile进行构建镜像 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# mkdir -p /root/test/docker_2048 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 ~]# cd /root/test/docker_2048/ [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 docker_2048]# vi Dockerfile FROM alpine:3.7 RUN mkdir -p /run/nginx && apk --update add nginx && sed -i "s#return 404;#root /usr/share/nginx/html;#g" /etc/nginx/conf.d/default.conf COPY 2048 /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g","daemon off;"] [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 docker_2048]# docker build -f Dockerfile -t 2048:v1 . Sending build context to Docker daemon 2.56kB Step 1/5 : FROM alpine:3.7 3.7: Pulling from library/alpine c67f3896b22c: Pull complete Digest: sha256:a52b4edb6240d1534d54ee488d7cf15b3778a5cfd0e4161d426c550487cddc5d Status: Downloaded newer image for alpine:3.7 ---> 34ea7509dcad Step 2/5 : RUN mkdir -p /run/nginx && apk --update add nginx && sed -i "s#return 404;#root /usr/share/nginx/html;#g" /etc/nginx/conf.d/default.conf ---> Running in fde90132c239 fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz (1/2) Installing pcre (8.41-r1) (2/2) Installing nginx (1.12.2-r4) Executing nginx-1.12.2-r4.pre-install Executing busybox-1.27.2-r11.trigger OK: 6 MiB in 15 packages Removing intermediate container fde90132c239 ---> 7e6fda347d30 Step 3/5 : COPY 2048 /usr/share/nginx/html ---> e6e4478ed06e Step 4/5 : EXPOSE 80 ---> Running in bf1eb3736555 Removing intermediate container bf1eb3736555 ---> abdd2c168fb9 Step 5/5 : CMD ["nginx", "-g","daemon off;"] ---> Running in ab1ace4527e4 Removing intermediate container ab1ace4527e4 ---> c4ebed3bce6a Successfully built c4ebed3bce6a Successfully tagged 2048:v1 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 docker_2048]# docker run -d -p 8085:80 2048:v1 f9d02e7aa16ae9c2af957a1d025f3f6ef6109e208a12519f859595c686fded34 [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 docker_2048]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9d02e7aa16a 2048:v1 "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds 0.0.0.0:8085->80/tcp pensive_goldwasser a19e4e581ed1 alpine "sh" 30 minutes ago Up 30 minutes confident_brown [root@server-716d6107-1f19-4a64-a11b-534acead5ce6 docker_2048]#
7华为在线构建代码提交自动构建 https://console.huaweicloud.com/swr/?region=cn-north-1