如果您对DockerImage和dockerimages感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解DockerImage的各种细节,并对dockerimages进行深入的分析,此外还有关于
如果您对Docker Image和docker images感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Docker Image的各种细节,并对docker images进行深入的分析,此外还有关于25.week4 docker build 也就是创建自己的image 上传image到dockerhub 从dockerhub下载images、3.1 Docker Image概述、5.docker image (镜像)、Docker - docker images存储位置的实用技巧。
本文目录一览:- Docker Image(docker images)
- 25.week4 docker build 也就是创建自己的image 上传image到dockerhub 从dockerhub下载images
- 3.1 Docker Image概述
- 5.docker image (镜像)
- Docker - docker images存储位置
Docker Image(docker images)
Docker 对 container 的使用基本是建立在 LXC 基础之上,然而 LXC 存在的问题是难以移动,难以通过标准化的模板去制作、重建、复制和移动 container。
在以 VM 为基础的虚拟化中,有 image 和 snapshot 可以用于 VM 的复制、重建以及移动的功能。
想要通过 container 来实现快速的大规模部署和更新,这些功能不可或缺。
在 Docker 0.7 中引入了 Storage Driver(储存驱动), 现在已经支持 AUFS、Btrfs、Device Mapper、OverlayFS、ZFS、VFS。
一、储存驱动
https://docs.docker.com/storage/storagedriver/select-storage-driver/
1.Union FileSystem
简称 Union FS(联合文件系统),储存驱动的一种。
一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
2.Overlay2
Overlay2 是一种 Union FS,支持为每一个成员目录(AKA branch)设定 readonly、readwrite 和 whiteout-able 权限。
通常 Union FS 有两个用途:
- 不借助 LVM, RAID 将多个 disk 和挂载到一个目录下。
- 将一个 readonly 的 branch 和一个 writeable 的 branch 联合在一起,Live CD 正是基于此,可以允许在 OS image 不变的基础上允许用户在其上进行一些写操作。
Docker 在 Overlay2 上构建的 container image 也正是如此。
OverlayFS 将单个 Linux 主机上的两个目录分层,并将它们显示为单个目录。这些目录称为层,统一过程称为联合安装。
Overlay2 原生支持多达 128 OverlayFS 层。
下图显示了 Docker 镜像 和 Docker 容器 的分层方式。图像层是 lowerdir,容器层是 upperdir。统一视图通过一个被称为 merged 容器挂载点的目录公开。
二、Linux 系统启动
典型的 Linux 启动到运行需要两个 FS - bootfs + rootfs (从功能角度而非文件系统角度)
bootfs(boot file system):
主要包含 bootloader 和 kernel,bootloader 主要是引导加载 kernel,当 kernel 被加载到内存中后,bootfs 就被 umount 了,此时内存的使用权已由 bootfs 转交给 kernel。
rootfs (root file system) :
在 bootfs 之上。包含的就是典型 Linux 系统中的 /dev、/proc、/bin、/etc 等标准目录和文件。
由此可见对于不同的 linux 发行版,bootfs 基本是一致的,rootfs 会有差别,,因此不同的发行版可以公用 bootfs。如下图:
三、Docker image 结构
典型的 Linux 在启动后,首先将 rootfs 置为 readonly,进行一系列检查,然后将其切换为 "readwrite" 供用户使用。
在 Docker 中,起初也是将 rootfs 以 readonly 方式加载并检查,然而接下来利用 union mount 将一个 readwrite 文件系统挂载在 readonly 的 rootfs 之上,并且允许再次将下层的 file system 设定为 readonly,并且向上叠加。
这样一组 readonly 和一个 writeable 的结构构成一个 container 的运行目录,每一个被称作一个 Layer。如下图:
得益于 AUFS 的特性,每一个对 readonly 层文件或目录的修改都只会存在于上层的 writeable 层中。
这样,由于不存在竞争,多个 container 可以共享 readonly 的 layer。
所以 docker 将 readonly 的层称作 image,对于 container 而言整个 rootfs 都是 read-write 的,但事实上所有的修改都写入最上层的 writeable 层中。
image 不保存用户状态,可以用于模板、重建和复制。
某个镜像:
基于该镜像创建的容器:
上层的 image 依赖下层的 image,因此 docker 中把下层的 image 称作父 image,没有父 image 的 image 称作 base image。
因此想要从一个 image 启动一个 container,docker 会先加载其父 image 直到 base image,用户的进程运行在 writeable 的 layer 中。
所有 parent image 中的数据信息以及 ID、网络和 lxc 管理的资源限制等具体 container 的配置,构成一个 docker 概念上的 container。如下图:
Docker image 采用分层结构的好处
共享资源,节省存储空间:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份 base 镜像,同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
快速部署:如果要部署多个 container,base image 可以避免多次拷贝。
内存更省:因为多个 container 共享 base image,以及 OS 的 disk 缓存机制,多个 container 中的进程命中缓存内容的几率大大增加。
升级更方便:相比于 copy-on-write 类型的文件系统,base-image 也是可以挂载为可 writeable 的,可以通过更新 base image 而一次性更新其之上的 container。
允许在不更改 base-image 的同时修改其目录中的文件,所有写操作都发生在最上层的 writeable 层中。
四、Docker 镜像 commit
docker commit 提交容器副本使之成为一个新的镜像
# docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
# 下载镜像
docker pull tomcat
# 启动镜像
docker run -d -p 8080:8080 tomcat
# 查看容器ID
docker ps -a
# 进入容器
docker exec -it a41c393cfa45 /bin/bash
# 删除 tomcat
rm -rf /usr/local/tomcat/webapps/*
# 退出容器
exit
# 生成新镜像
docker commit -m=“没有webapps的tomcat镜像” -a=“jhxxb” a41c393cfa45 jhxxb/tomcat-del:1.0
# 查看生成的新镜像
docker images
# 运行新镜像(需要指定版本,默认为 latest)
docker run -d -p 8080:8080 jhxxb/tomcat-del:1.0
可以看到新镜像的 webapps 目录下没有文件
http://tiewei.github.io/cloud/Docker-Getting-Start/
https://docs.docker.com/storage/storagedriver/overlayfs-driver/#how-the-overlay2-driver-works
25.week4 docker build 也就是创建自己的image 上传image到dockerhub 从dockerhub下载images
dado可以写你自己的名字
这个命令就会根据目录下的Dockerfile(固定用和这个名字)文件里面的内容 去下载并创建运行命令一步一步地


Setting up libxfixes3:amd64 (1:5.0.1-2) ...
Setting up libxinerama1:amd64 (2:1.1.3-1) ...
Setting up libxshmfence1:amd64 (1.2-1) ...
Setting up libxtst6:amd64 (2:1.2.2-1) ...
Setting up libxxf86vm1:amd64 (1:1.1.4-1) ...
Setting up libjbig0:amd64 (2.1-3.1) ...
Setting up libtxc-dxtn-s2tc0:amd64 (0~git20131104-1.1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0 to provide /usr/lib/x86_64-linux-gnu/libtxc_dxtn.so (libtxc-dxtn-x86_64-linux-gnu) in auto mode
Setting up libbsd0:amd64 (0.8.2-1) ...
Setting up libnettle6:amd64 (3.2-1ubuntu0.16.04.1) ...
Setting up libhogweed4:amd64 (3.2-1ubuntu0.16.04.1) ...
Setting up libidn11:amd64 (1.32-3ubuntu1.2) ...
Setting up libp11-kit0:amd64 (0.23.2-5~ubuntu16.04.1) ...
Setting up libtasn1-6:amd64 (4.7-3ubuntu0.16.04.3) ...
Setting up libgnutls30:amd64 (3.4.10-4ubuntu1.4) ...
Setting up libsqlite3-0:amd64 (3.11.0-1ubuntu1) ...
Setting up libssl1.0.0:amd64 (1.0.2g-1ubuntu4.13) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can''t locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up openssl (1.0.2g-1ubuntu4.13) ...
Setting up ca-certificates (20170717~16.04.1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can''t locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up libcap-ng0:amd64 (0.7.7-1) ...
Setting up libdbus-1-3:amd64 (1.10.6-1ubuntu3.3) ...
Setting up dbus (1.10.6-1ubuntu3.3) ...
Setting up krb5-locales (1.13.2+dfsg-5ubuntu2) ...
Setting up libdrm-common (2.4.91-2~16.04.1) ...
Setting up libdrm2:amd64 (2.4.91-2~16.04.1) ...
Setting up libedit2:amd64 (3.1-20150325-1ubuntu2) ...
Setting up libelf1:amd64 (0.165-3ubuntu1.1) ...
Setting up libglib2.0-data (2.48.2-0ubuntu4) ...
Setting up libkrb5support0:amd64 (1.13.2+dfsg-5ubuntu2) ...
Setting up libk5crypto3:amd64 (1.13.2+dfsg-5ubuntu2) ...
Setting up libkeyutils1:amd64 (1.5.9-8ubuntu1) ...
Setting up libkrb5-3:amd64 (1.13.2+dfsg-5ubuntu2) ...
Setting up libgssapi-krb5-2:amd64 (1.13.2+dfsg-5ubuntu2) ...
Setting up libicu55:amd64 (55.1-7ubuntu0.4) ...
Setting up libxml2:amd64 (2.9.3+dfsg1-1ubuntu0.6) ...
Setting up shared-mime-info (1.5-2ubuntu0.2) ...
Setting up xdg-user-dirs (0.15-2ubuntu6.16.04.1) ...
Setting up xml-core (0.13+nmu2) ...
Setting up java-common (0.56ubuntu2) ...
Setting up libavahi-common-data:amd64 (0.6.32~rc+dfsg-1ubuntu2.2) ...
Setting up libavahi-common3:amd64 (0.6.32~rc+dfsg-1ubuntu2.2) ...
Setting up libavahi-client3:amd64 (0.6.32~rc+dfsg-1ubuntu2.2) ...
Setting up libcups2:amd64 (2.1.3-4ubuntu0.5) ...
Setting up libjpeg8:amd64 (8c-2ubuntu8) ...
Setting up libnspr4:amd64 (2:4.13.1-0ubuntu0.16.04.1) ...
Setting up libpcsclite1:amd64 (1.8.14-1ubuntu1.16.04.1) ...
Setting up libxi6:amd64 (2:1.7.6-1) ...
Setting up libxrender1:amd64 (1:0.9.9-0ubuntu1) ...
Setting up fonts-dejavu-extra (2.35-1) ...
Setting up hicolor-icon-theme (0.15-0ubuntu1.1) ...
Setting up libasound2-data (1.1.0-0ubuntu1) ...
Setting up libasound2:amd64 (1.1.0-0ubuntu1) ...
Setting up libatk1.0-data (2.18.0-1) ...
Setting up libatk1.0-0:amd64 (2.18.0-1) ...
Setting up libpixman-1-0:amd64 (0.33.6-1) ...
Setting up libxcb-render0:amd64 (1.11.1-1ubuntu1) ...
Setting up libxcb-shm0:amd64 (1.11.1-1ubuntu1) ...
Setting up libcairo2:amd64 (1.14.6-1) ...
Setting up libdatrie1:amd64 (0.2.10-2) ...
Setting up libdrm-amdgpu1:amd64 (2.4.91-2~16.04.1) ...
Setting up libpciaccess0:amd64 (0.13.4-1) ...
Setting up libdrm-intel1:amd64 (2.4.91-2~16.04.1) ...
Setting up libdrm-nouveau2:amd64 (2.4.91-2~16.04.1) ...
Setting up libdrm-radeon1:amd64 (2.4.91-2~16.04.1) ...
Setting up libflac8:amd64 (1.3.1-4) ...
Setting up libtiff5:amd64 (4.0.6-1ubuntu0.4) ...
Setting up libgdk-pixbuf2.0-common (2.32.2-1ubuntu1.5) ...
Setting up libgdk-pixbuf2.0-0:amd64 (2.32.2-1ubuntu1.5) ...
Setting up libgif7:amd64 (5.1.4-0.3~16.04) ...
Setting up libglapi-mesa:amd64 (18.0.5-0ubuntu0~16.04.1) ...
Setting up libllvm6.0:amd64 (1:6.0-1ubuntu2~16.04.1) ...
Setting up libsensors4:amd64 (1:3.4.0-2) ...
Setting up libgl1-mesa-dri:amd64 (18.0.5-0ubuntu0~16.04.1) ...
Setting up libx11-xcb1:amd64 (2:1.6.3-1ubuntu2) ...
Setting up libxcb-dri2-0:amd64 (1.11.1-1ubuntu1) ...
Setting up libxcb-dri3-0:amd64 (1.11.1-1ubuntu1) ...
Setting up libxcb-glx0:amd64 (1.11.1-1ubuntu1) ...
Setting up libxcb-present0:amd64 (1.11.1-1ubuntu1) ...
Setting up libxcb-sync1:amd64 (1.11.1-1ubuntu1) ...
Setting up libgl1-mesa-glx:amd64 (18.0.5-0ubuntu0~16.04.1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
Setting up libgraphite2-3:amd64 (1.3.10-0ubuntu0.16.04.1) ...
Setting up libgtk2.0-common (2.24.30-1ubuntu1.16.04.2) ...
Setting up libthai-data (0.1.24-2) ...
Setting up libthai0:amd64 (0.1.24-2) ...
Setting up libpango-1.0-0:amd64 (1.38.1-1) ...
Setting up libharfbuzz0b:amd64 (1.0.1-1ubuntu0.1) ...
Setting up libpangoft2-1.0-0:amd64 (1.38.1-1) ...
Setting up libpangocairo-1.0-0:amd64 (1.38.1-1) ...
Setting up libxcursor1:amd64 (1:1.1.14-1ubuntu0.16.04.2) ...
Setting up libxrandr2:amd64 (2:1.5.0-1) ...
Setting up libgtk2.0-0:amd64 (2.24.30-1ubuntu1.16.04.2) ...
Setting up libgtk2.0-bin (2.24.30-1ubuntu1.16.04.2) ...
Setting up xorg-sgml-doctools (1:1.11-1) ...
Setting up x11proto-core-dev (7.0.31-1~ubuntu16.04.2) ...
Setting up libice-dev:amd64 (2:1.0.9-1) ...
Setting up libpthread-stubs0-dev:amd64 (0.3-4) ...
Setting up libvorbis0a:amd64 (1.3.5-3ubuntu0.2) ...
Setting up libvorbisenc2:amd64 (1.3.5-3ubuntu0.2) ...
Setting up libsndfile1:amd64 (1.0.25-10ubuntu0.16.04.1) ...
Setting up libpulse0:amd64 (1:8.0-0ubuntu3.10) ...
Setting up libsm-dev:amd64 (2:1.2.2-1) ...
Setting up libxau-dev:amd64 (1:1.0.8-1) ...
Setting up libxdmcp-dev:amd64 (1:1.1.2-1.1) ...
Setting up x11proto-input-dev (2.3.1-1) ...
Setting up x11proto-kb-dev (1.0.7-0ubuntu1) ...
Setting up xtrans-dev (1.3.5-1) ...
Setting up libxcb1-dev:amd64 (1.11.1-1ubuntu1) ...
Setting up libx11-dev:amd64 (2:1.6.3-1ubuntu2) ...
Setting up libx11-doc (2:1.6.3-1ubuntu2) ...
Setting up libxt6:amd64 (1:1.1.5-0ubuntu1) ...
Setting up libxt-dev:amd64 (1:1.1.5-0ubuntu1) ...
Setting up tcpd (7.6.q-25) ...
Setting up libnss3-nssdb (2:3.28.4-0ubuntu0.16.04.3) ...
Setting up libnss3:amd64 (2:3.28.4-0ubuntu0.16.04.3) ...
Setting up openjdk-8-jre-headless:amd64 (8u181-b13-0ubuntu0.16.04.1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up ca-certificates-java (20160321ubuntu1) ...
done.
Setting up openjdk-8-jre:amd64 (8u181-b13-0ubuntu0.16.04.1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode
Setting up openjdk-8-jdk-headless:amd64 (8u181-b13-0ubuntu0.16.04.1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/idlj to provide /usr/bin/idlj (idlj) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jdeps to provide /usr/bin/jdeps (jdeps) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/wsimport to provide /usr/bin/wsimport (wsimport) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/rmic to provide /usr/bin/rmic (rmic) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jinfo to provide /usr/bin/jinfo (jinfo) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jsadebugd to provide /usr/bin/jsadebugd (jsadebugd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/native2ascii to provide /usr/bin/native2ascii (native2ascii) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jstat to provide /usr/bin/jstat (jstat) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javah to provide /usr/bin/javah (javah) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jps to provide /usr/bin/jps (jps) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jstack to provide /usr/bin/jstack (jstack) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc to provide /usr/bin/javadoc (javadoc) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jhat to provide /usr/bin/jhat (jhat) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javap to provide /usr/bin/javap (javap) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jar to provide /usr/bin/jar (jar) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/extcheck to provide /usr/bin/extcheck (extcheck) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/schemagen to provide /usr/bin/schemagen (schemagen) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/xjc to provide /usr/bin/xjc (xjc) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jmap to provide /usr/bin/jmap (jmap) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jstatd to provide /usr/bin/jstatd (jstatd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb to provide /usr/bin/jdb (jdb) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/serialver to provide /usr/bin/serialver (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/wsgen to provide /usr/bin/wsgen (wsgen) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jcmd to provide /usr/bin/jcmd (jcmd) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in auto mode
Setting up openjdk-8-jdk:amd64 (8u181-b13-0ubuntu0.16.04.1) ...
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer to provide /usr/bin/appletviewer (appletviewer) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Processing triggers for systemd (229-4ubuntu21.2) ...
Processing triggers for ca-certificates (20170717~16.04.1) ...
Updating certificates in /etc/ssl/certs...
148 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
Adding debian:ACCVRAIZ1.pem
Adding debian:ACEDICOM_Root.pem
Adding debian:AC_RAIZ_FNMT-RCM.pem
Adding debian:Actalis_Authentication_Root_CA.pem
Adding debian:AddTrust_External_Root.pem
Adding debian:AddTrust_Low-Value_Services_Root.pem
Adding debian:AddTrust_Public_Services_Root.pem
Adding debian:AddTrust_Qualified_Certificates_Root.pem
Adding debian:AffirmTrust_Commercial.pem
Adding debian:AffirmTrust_Networking.pem
Adding debian:AffirmTrust_Premium.pem
Adding debian:AffirmTrust_Premium_ECC.pem
Adding debian:Amazon_Root_CA_1.pem
Adding debian:Amazon_Root_CA_2.pem
Adding debian:Amazon_Root_CA_3.pem
Adding debian:Amazon_Root_CA_4.pem
Adding debian:Atos_TrustedRoot_2011.pem
Adding debian:Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
Adding debian:Baltimore_CyberTrust_Root.pem
Adding debian:Buypass_Class_2_Root_CA.pem
Adding debian:Buypass_Class_3_Root_CA.pem
Adding debian:CA_Disig_Root_R1.pem
Adding debian:CA_Disig_Root_R2.pem
Adding debian:CFCA_EV_ROOT.pem
Adding debian:CNNIC_ROOT.pem
Adding debian:COMODO_Certification_Authority.pem
Adding debian:COMODO_ECC_Certification_Authority.pem
Adding debian:COMODO_RSA_Certification_Authority.pem
Adding debian:Camerfirma_Chambers_of_Commerce_Root.pem
Adding debian:Camerfirma_Global_Chambersign_Root.pem
Adding debian:Certigna.pem
Adding debian:Certinomis_-_Autorité_Racine.pem
Adding debian:Certinomis_-_Root_CA.pem
Adding debian:Certplus_Class_2_Primary_CA.pem
Adding debian:Certplus_Root_CA_G1.pem
Adding debian:Certplus_Root_CA_G2.pem
Adding debian:Certum_Root_CA.pem
Adding debian:Certum_Trusted_Network_CA.pem
Adding debian:Certum_Trusted_Network_CA_2.pem
Adding debian:Chambers_of_Commerce_Root_-_2008.pem
Adding debian:China_Internet_Network_Information_Center_EV_Certificates_Root.pem
Adding debian:Comodo_AAA_Services_root.pem
Adding debian:Comodo_Secure_Services_root.pem
Adding debian:Comodo_Trusted_Services_root.pem
Adding debian:Cybertrust_Global_Root.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_2009.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem
Adding debian:DST_ACES_CA_X6.pem
Adding debian:DST_Root_CA_X3.pem
Adding debian:Deutsche_Telekom_Root_CA_2.pem
Adding debian:DigiCert_Assured_ID_Root_CA.pem
Adding debian:DigiCert_Assured_ID_Root_G2.pem
Adding debian:DigiCert_Assured_ID_Root_G3.pem
Adding debian:DigiCert_Global_Root_CA.pem
Adding debian:DigiCert_Global_Root_G2.pem
Adding debian:DigiCert_Global_Root_G3.pem
Adding debian:DigiCert_High_Assurance_EV_Root_CA.pem
Adding debian:DigiCert_Trusted_Root_G4.pem
Adding debian:E-Tugra_Certification_Authority.pem
Adding debian:EC-ACC.pem
Adding debian:EE_Certification_Centre_Root_CA.pem
Adding debian:Entrust.net_Premium_2048_Secure_Server_CA.pem
Adding debian:Entrust_Root_Certification_Authority.pem
Adding debian:Entrust_Root_Certification_Authority_-_EC1.pem
Adding debian:Entrust_Root_Certification_Authority_-_G2.pem
Adding debian:GeoTrust_Global_CA.pem
Adding debian:GeoTrust_Global_CA_2.pem
Adding debian:GeoTrust_Primary_Certification_Authority.pem
Adding debian:GeoTrust_Primary_Certification_Authority_-_G2.pem
Adding debian:GeoTrust_Primary_Certification_Authority_-_G3.pem
Adding debian:GeoTrust_Universal_CA.pem
Adding debian:GeoTrust_Universal_CA_2.pem
Adding debian:GlobalSign_ECC_Root_CA_-_R4.pem
Adding debian:GlobalSign_ECC_Root_CA_-_R5.pem
Adding debian:GlobalSign_Root_CA.pem
Adding debian:GlobalSign_Root_CA_-_R2.pem
Adding debian:GlobalSign_Root_CA_-_R3.pem
Adding debian:Global_Chambersign_Root_-_2008.pem
Adding debian:Go_Daddy_Class_2_CA.pem
Adding debian:Go_Daddy_Root_Certificate_Authority_-_G2.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
Adding debian:Hongkong_Post_Root_CA_1.pem
Adding debian:ISRG_Root_X1.pem
Adding debian:IdenTrust_Commercial_Root_CA_1.pem
Adding debian:IdenTrust_Public_Sector_Root_CA_1.pem
Adding debian:Izenpe.com.pem
Adding debian:LuxTrust_Global_Root_2.pem
Adding debian:Microsec_e-Szigno_Root_CA_2009.pem
Adding debian:NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
Adding debian:Network_Solutions_Certificate_Authority.pem
Adding debian:OISTE_WISeKey_Global_Root_GA_CA.pem
Adding debian:OISTE_WISeKey_Global_Root_GB_CA.pem
Adding debian:OpenTrust_Root_CA_G1.pem
Adding debian:OpenTrust_Root_CA_G2.pem
Adding debian:OpenTrust_Root_CA_G3.pem
Adding debian:PSCProcert.pem
Adding debian:QuoVadis_Root_CA.pem
Adding debian:QuoVadis_Root_CA_1_G3.pem
Adding debian:QuoVadis_Root_CA_2.pem
Adding debian:QuoVadis_Root_CA_2_G3.pem
Adding debian:QuoVadis_Root_CA_3.pem
Adding debian:QuoVadis_Root_CA_3_G3.pem
Adding debian:SZAFIR_ROOT_CA2.pem
Adding debian:SecureSign_RootCA11.pem
Adding debian:SecureTrust_CA.pem
Adding debian:Secure_Global_CA.pem
Adding debian:Security_Communication_EV_RootCA1.pem
Adding debian:Security_Communication_RootCA2.pem
Adding debian:Security_Communication_Root_CA.pem
Adding debian:Sonera_Class_2_Root_CA.pem
Adding debian:Staat_der_Nederlanden_EV_Root_CA.pem
Adding debian:Staat_der_Nederlanden_Root_CA_-_G2.pem
Adding debian:Staat_der_Nederlanden_Root_CA_-_G3.pem
Adding debian:Starfield_Class_2_CA.pem
Adding debian:Starfield_Root_Certificate_Authority_-_G2.pem
Adding debian:Starfield_Services_Root_Certificate_Authority_-_G2.pem
Adding debian:SwissSign_Gold_CA_-_G2.pem
Adding debian:SwissSign_Silver_CA_-_G2.pem
Adding debian:Swisscom_Root_CA_1.pem
Adding debian:Swisscom_Root_CA_2.pem
Adding debian:Swisscom_Root_EV_CA_2.pem
Adding debian:T-TeleSec_GlobalRoot_Class_2.pem
Adding debian:T-TeleSec_GlobalRoot_Class_3.pem
Adding debian:TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
Adding debian:TURKTRUST_Certificate_Services_Provider_Root_2007.pem
Adding debian:TWCA_Global_Root_CA.pem
Adding debian:TWCA_Root_Certification_Authority.pem
Adding debian:Taiwan_GRCA.pem
Adding debian:TeliaSonera_Root_CA_v1.pem
Adding debian:Trustis_FPS_Root_CA.pem
Adding debian:TÜBİTAK_UEKAE_Kök_Sertifika_Hizmet_Sağlayıcısı_-_Sürüm_3.pem
Adding debian:TÜRKTRUST_Elektronik_Sertifika_Hizmet_Sağlayıcısı_H5.pem
Adding debian:USERTrust_ECC_Certification_Authority.pem
Adding debian:USERTrust_RSA_Certification_Authority.pem
Adding debian:UTN_USERFirst_Hardware_Root_CA.pem
Adding debian:VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem
Adding debian:VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
Adding debian:VeriSign_Universal_Root_Certification_Authority.pem
Adding debian:Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem
Adding debian:Visa_eCommerce_Root.pem
Adding debian:XRamp_Global_CA_Root.pem
Adding debian:certSIGN_ROOT_CA.pem
Adding debian:ePKI_Root_Certification_Authority.pem
Adding debian:thawte_Primary_Root_CA.pem
Adding debian:thawte_Primary_Root_CA_-_G2.pem
Adding debian:thawte_Primary_Root_CA_-_G3.pem
done.
done.
Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...
Removing intermediate container 0f23a95bea42
---> 8f93746ccfe5
Step 7/7 : RUN apt-get install -y python
---> Running in fc2aeb8c23dd
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
file libmagic1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
mime-support python-minimal python2.7 python2.7-minimal
Suggested packages:
python-doc python-tk python2.7-doc binfmt-support
The following NEW packages will be installed:
file libmagic1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
mime-support python python-minimal python2.7 python2.7-minimal
0 upgraded, 10 newly installed, 0 to remove and 6 not upgraded.
Need to get 4145 kB of archives.
After this operation, 20.9 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [340 kB]
Get:2 http://101.44.1.125/files/B067000006FC9787/ubuntu.cn99.com/ubuntu xenial-updates/main amd64 python2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [1261 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-minimal amd64 2.7.12-1~16.04 [28.1 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 mime-support all 3.59ubuntu1 [31.0 kB]
Get:5 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-stdlib amd64 2.7.12-1ubuntu0~16.04.3 [1880 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7 amd64 2.7.12-1ubuntu0~16.04.3 [224 kB]
Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython-stdlib amd64 2.7.12-1~16.04 [7768 B]
Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python amd64 2.7.12-1~16.04 [137 kB]
Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmagic1 amd64 1:5.25-2ubuntu1.1 [216 kB]
Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 file amd64 1:5.25-2ubuntu1.1 [21.2 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 4145 kB in 8s (517 kB/s)
Selecting previously unselected package libpython2.7-minimal:amd64.
(Reading database ... 14046 files and directories currently installed.)
Preparing to unpack .../libpython2.7-minimal_2.7.12-1ubuntu0~16.04.3_amd64.deb ...
Unpacking libpython2.7-minimal:amd64 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python2.7-minimal.
Preparing to unpack .../python2.7-minimal_2.7.12-1ubuntu0~16.04.3_amd64.deb ...
Unpacking python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python-minimal.
Preparing to unpack .../python-minimal_2.7.12-1~16.04_amd64.deb ...
Unpacking python-minimal (2.7.12-1~16.04) ...
Selecting previously unselected package mime-support.
Preparing to unpack .../mime-support_3.59ubuntu1_all.deb ...
Unpacking mime-support (3.59ubuntu1) ...
Selecting previously unselected package libpython2.7-stdlib:amd64.
Preparing to unpack .../libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.3_amd64.deb ...
Unpacking libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python2.7.
Preparing to unpack .../python2.7_2.7.12-1ubuntu0~16.04.3_amd64.deb ...
Unpacking python2.7 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package libpython-stdlib:amd64.
Preparing to unpack .../libpython-stdlib_2.7.12-1~16.04_amd64.deb ...
Unpacking libpython-stdlib:amd64 (2.7.12-1~16.04) ...
Setting up libpython2.7-minimal:amd64 (2.7.12-1ubuntu0~16.04.3) ...
Setting up python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
Linking and byte-compiling packages for runtime python2.7...
Setting up python-minimal (2.7.12-1~16.04) ...
Selecting previously unselected package python.
(Reading database ... 14818 files and directories currently installed.)
Preparing to unpack .../python_2.7.12-1~16.04_amd64.deb ...
Unpacking python (2.7.12-1~16.04) ...
Selecting previously unselected package libmagic1:amd64.
Preparing to unpack .../libmagic1_1%3a5.25-2ubuntu1.1_amd64.deb ...
Unpacking libmagic1:amd64 (1:5.25-2ubuntu1.1) ...
Selecting previously unselected package file.
Preparing to unpack .../file_1%3a5.25-2ubuntu1.1_amd64.deb ...
Unpacking file (1:5.25-2ubuntu1.1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Setting up mime-support (3.59ubuntu1) ...
Setting up libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.3) ...
Setting up python2.7 (2.7.12-1ubuntu0~16.04.3) ...
Setting up libpython-stdlib:amd64 (2.7.12-1~16.04) ...
Setting up python (2.7.12-1~16.04) ...
Setting up libmagic1:amd64 (1:5.25-2ubuntu1.1) ...
Setting up file (1:5.25-2ubuntu1.1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Removing intermediate container fc2aeb8c23dd
---> 057807ccc7d8
Successfully built 057807ccc7d8
Successfully tagged hanshanyang/coj_demo_01:latest
安装完成我们
等他安装完成 会把这个状态创建成一个image存在本地
然后我们在 push到docker hub上去(远程) 和我们的git很相似
我们登录到docker hub上去(自己去官网创建账号)
登录上了
我们就要push了
这说明上传成功
那么从docker hub 下拉image也很简单 就是 pull
如果你本地有这个image他会自动更新到最新的
如果你要删除
3.1 Docker Image概述
获取镜像
- Docker Store官方base镜像源 https://store.docker.com/search?category=base&source=verified&type=image
- 网易蜂巢镜像源 https://c.163yun.com/hub
- 阿里云镜像源 https://dev.aliyun.com/search.html
- docker加速器 https://www.daocloud.io/mirror
生成镜像
可以在对容器
进行修改之后,提交更改,从而生成一个新的镜像
docker commit 259b310e11e8 siguoya/centos-vim
但是这种构建镜像的方式并不推荐:
- 即使使用
docker history
也很难看到在系统中做了哪些修改,这可能会导致未知的安全问题 - 和别人交换镜像的时候,传输的文件很大
因此使用Dockerfile是比较好的操作方式
docker build -t medical-api:2.0.0 .
当docker build
卡住的时候,我们可以通过docker run
特定步骤生成的镜像的ID进行调试。
例如 76e637f41c70
这个镜像ID,就是第7步操作的镜像了
Step 7/8 : EXPOSE 5000
---> Running in 76e637f41c70
Removing intermediate container 76e637f41c70
---> 5ee69e2a769b
Step 8/8 : CMD ["npm", "start"]
---> Running in bbaa15d00d50
Removing intermediate container bbaa15d00d50
docker build
的缓存机制:http://open.daocloud.io/docke...
删除
# 删除所有<none>镜像。build过程,每一步都会生成缓存,如果build失败,就会产生<none>镜像
docker images | grep none | awk ''{print $3 }'' | xargs docker rmi
5.docker image (镜像)
1.image 是什么
是文件和 meta data 的集合 (root filesystem)
是分层的,并且每一层都可以添加改变删除文件,成为一个新的image
不同的image可以共享相同的layer #4 和 #2 可以共享 centos image
image 本身是只读的
2.image的获取
从文件( dockerFile )获取
dockerFile内容如下
FROM ubantu_16_04 #基础 image 为 ubantu_16_04 类似于操作系统为 ubantu 16 04
LABEL maintainer="eaon <eaon@163.com>" #基本标识 例如作者和邮箱
RUN apt-get update && apt-get install -y redis-server #在 基础image 上运行一段 安装程序的命令
EXPOSE 6379 #要暴露的端口号
ENTRYPOINT [ "/usr/bin/redis-server" ] # 程序的入口
从 dockerFile 运行
docker build -t eaon03/redis:latest . #表示从当前的 dockerFile 建立名为 eaon03/redis:latest 的镜像
从 registry 拉取 ( 从远程仓库拉取 registry 类似与 github )
如果 docker 太慢或者超时 可以切换docker源
sudo docker pull hello-world
(具体的镜像 可以从 hub.docker.com 上进行加下载)
sudo docker image ls 查看本地的image列表
3.制作base image (例如 hello-world)
创建一个hello-world 目录 并 进入
mkdir hello-world
cd hello-world
写一个 .c 文件
vim hello.c
#include<stdio.h>
int main()
{printf("hello docker!\n");}
安装 gcc glibc-static
sudo yum install -y gcc glibc-static
编译 c 文件为二进制文件
gcc -static hello.c -o hello
编写Dockerfile
vim Dockerfile
FROM scratch
ADD hello /
CMD ["/hello"]
添加镜像
docker build -t eaon/hello-world .
运行镜像
docker run eaon/hello-world
4.centos 虚拟机去除 sudo
1. 添加docker 用户组
sudo groupadd docker
2.将vagrant 用户 添加到 docker 用户组内
sudo gpasswd -a vagrant docker
3.重启docker 进程
sudo service docker restart
4.重新登陆
Docker - docker images存储位置
docker镜像存储位置
例如我的driver是overlay2,则docker镜像的实际存储在/var/lib/docker/overlay2文件夹里面。
ls和du的不同
ls -alh dir/
显示文件的大小或文件夹的元数据
的大小。所以在ls -alh 文件夹
时,元数据存储在一个block里面,一个block的大小(4.0K),而不显示里面实际内容的大小。
du -sh dir/
则显示文件夹或者文件实际磁盘占有的大小。
解决问题的过程 TLDR;
Google一下。找到
https://stackoverflow.com/a/25978888/5955399 - 原来存储位置取决于driver。
- 输入
docker info
查看,关键的信息:Server Version: 18.09.6, Storage Driver: overlay2, Docker Root Dir: /var/lib/docker。我的docker driver是overlay2。 ls -alh /varl/lib/docker/overlay2
。咦!为什么都是4.0KB大小?和我的docker images显示的size不同,明明size有几G大。想起了linux在磁盘上表现为用block去存储,一个block是4.0KB。ls命令显示的只是文件夹的Meta-data,不是实际内容在磁盘占有大小。
https://askubuntu.com/questions/186813/why-does-every-directory-have-a-size-4096-bytes-4-k
https://unix.stackexchange.com/questions/55/what-does-size-of-a-directory-mean-in-output-of-ls-l-command? 怎么查看实际磁盘占有大小?
du -s /var/lib/docker/overlay2
的最后一行。
或者du -sh /var/lib/docker/overlay2
。
或者更human readable的,根据文件大小排序du -sh * | sort -h
https://unix.stackexchange.com/questions/371238/what-is-the-difference-between-file-size-in-ls-l-and-du-sh
https://stackoverflow.com/questions/1019116/using-ls-to-list-directories-and-their-total-sizes
https://unix.stackexchange.com/questions/185764/how-do-i-get-the-size-of-a-directory-on-the-command-line
https://unix.stackexchange.com/questions/371238/what-is-the-difference-between-file-size-in-ls-l-and-du-sh
今天关于Docker Image和docker images的讲解已经结束,谢谢您的阅读,如果想了解更多关于25.week4 docker build 也就是创建自己的image 上传image到dockerhub 从dockerhub下载images、3.1 Docker Image概述、5.docker image (镜像)、Docker - docker images存储位置的相关知识,请在本站搜索。
本文标签: