Notice: Constant WP_DEBUG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 12

Notice: Constant WP_DEBUG_LOG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 13

Notice: Constant WP_DEBUG_DISPLAY already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 14
DOCKER在镜像中打包【zoues.com】 – zoues

LOADING

Follow me

DOCKER在镜像中打包【zoues.com】
四月 26, 2017|DockerPaaS

DOCKER在镜像中打包【zoues.com】

DOCKER在镜像中打包【zoues.com】

DOCKER在镜像中打包

DOCKER在镜像中打包

从容器中构建镜像


从一个容器构建一个镜像的基础工作流包含三部分:

1.你需要从一个已存在的镜像创建一个容器。至于选什么镜像,这需要根据你最终想要将那些东西包含到新的镜像中,以及需要哪些修改镜像的工具来决定。

2.修改这个容器的文件系统。这些改动会被保存在容器的联合文件系统的新文件层。

3.一旦改动完成,那么就将要这些改动提交(commit)。一旦改动被提交,你就能够从新镜像创新的容器了。

docker run --name container ... /bin/bash -> Docker 创建了一个新容器和镜像的UFS挂载 -> touch /HelloWorld.txt -> 文件被拷贝到新的UFS文件层 -> exit -> 容器被停止用户返回到host终端上 -> docker commit container image -> 一个名为image 的心的仓库被创建 -> docker images #输出结果的列表中包含“image”镜像

在心里记住这些步骤,跟随如下命令建一个名为 fjun.org_image的新镜像:

docker run --name fjun.org_container /     ubuntu:latest /     //修改容器中的文件     touch /HelloWorld     //将改动提交到新镜像中     docker commit fjun.org_container fjun.org_image     //去除被改动的文件     docker rm -vf fjun_container     //检测容器中的文件     docker run --rm /         fjun.org_image /         ls -l /HelloWorld

别以为这很简单,随着构建的镜像越来越复杂,这个过程将会变得不那么容易。


ubuntu:git(打包)

你需要从一个合适的基础镜像创建一个容器:

docker run -it --name image-dev ubuntu /bin/bash

使用命令在容器中安装git

//更新Ubuntu apt-get update //安装git apt-get -y install git //查看版本 git version //显示 git version 2.7.4 //退出镜像 exit //查看文件系统的改动 docker diff image-dev

我们可以看到以A开动的行代表文件被添加。以C开头的表示修改,以D开头表示删除。当然,安装git不容易区分被改动的我们举个栗子

//添加新文件到busybox镜像中 docker run --name tweak-a busybox:latest touch /HelloWorld  docker diff tweak-a A /HelloWorld  //从busybox中移除现有文件 docker run --name tweak-d busybox:latest rm /bin/vi  docker diff tweak-d C /bin D /bin/vi  docker run --name tweak-c busybox:latest touch /bin/vi //查看tweak-c 的变化 docker diff tweak-c   /bin/ash C /bin/awk C /bin/base64 C /bin/basename C /bin/beep C /bin/blkdiscard C /bin/blkid ...... 日志太多 不一一列取

记得清理容器:

docker rm -vf tweak-a docker rm -vf tweak-d docker rm -vf tweak-c

创建新镜像

使用docker commit命令从被修改的容器上创建新镜像。最好是能使用-a选项为新镜像指定作者

docker commit -a "范骏" -m "Added git" image-dev ubuntu-git  输出内容是一个新的,唯一的镜像ID sha256:f099b19d4df150ca2dfd5451fc4c5f78bfe00ef81c833de41b19fffc3114ca9c  可以使用docker image 查看本地的镜像列表 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE ubuntu-git          latest              f099b19d4df1        4 seconds ago       259 MB

测试下Commit下这个新镜像的工作:

docker run -rm ubuntu-git git version 输出 git version 2.7.4

DOCKER在镜像中打包

DOCKER在镜像中打包

no comments
Share