苏州住房和城乡建设厅网站,网址导航123,域名优化在线,网站 用户粘度文章目录 jingxiang制作为什么需要jingxiang制作如何进行jingxiang制作 快照方式制作jingxiang制作命令do cker commit 快照制作jingxiang创建临时工作目录编写一个实例代码启动一个容器替换国内软件源安装编译软件源代码拷贝到容器中编译运行提交为一个jingxiang测试是否可以正… 文章目录 jingxiang制作为什么需要jingxiang制作如何进行jingxiang制作 快照方式制作jingxiang制作命令do cker commit 快照制作jingxiang创建临时工作目录编写一个实例代码启动一个容器替换国内软件源安装编译软件源代码拷贝到容器中编译运行提交为一个jingxiang测试是否可以正常运行 do cker filejingxiang制作什么是do cker file为什么需要do cker file如何进行do cker file编写 jingxiang制作常见问题整理1. ADD 与 COPY 的区别2. CMD 与 ENTRYPOINT 的区别3. 如何使用多个 FROM 指令4. 快照与使用 do cker file 制作jingxiang的区别5. 什么是空悬jingxiangDangling Images6. 中间层jingxiang的概念 jingxiang制作
为什么需要jingxiang制作
在一些特定的环境下官方的jingxiang无法满足要求因此就需要使用一定手段来自定义jingxiang来满足要求通常情况下可能会有下面的原因导致需要jingxiang
编写的代码要打包到jingxiang中直接跟随jingxiang发布第三方制作的内容安全性未知可能有安全问题特定的需求或者功能不能满足
如何进行jingxiang制作
制作容器jingxiang主要有两种方式
制作快照方式获得jingxiang在基础jingxiang上先登录容器中安装jingxiang需要的所有软件再制作快照do cker file的方式进行构建jingxiang这种通常是经常更新的jingxiang把软件安装的流程写成do cker file使用do cker build构建容器jingxiang
快照方式制作jingxiang
制作命令
do cker commit
功能从容器中创建一个新的jingxiang
常见的参数有-a表示jingxiang作者-c表示使用do cker file指令来创建jingxiang可以修改启动指令-m表示提交时的说明文字-p表示在commit的过程中把容器暂停
比如
do cker commit xxxx zbh/mynginx:v01快照制作jingxiang
创建临时工作目录
rootVM-24-7-ubuntu:/data/myworkdir/compose/base# cd ~
rootVM-24-7-ubuntu:~# mkdir -p /data/zbh/commitimage
rootVM-24-7-ubuntu:~# cd /data/zbh/commitimage/编写一个实例代码
rootVM-24-7-ubuntu:/data/zbh/commitimage# cat demo.cc
#include iostream
using namespace std;int main()
{cout hello do cker commitimage endl;return 0;
}启动一个容器
rootVM-24-7-ubuntu:/data/zbh/commitimage# do cker container run -it --name mycppcommit centos:7 bash
Unable to find image centos:7 locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7替换国内软件源
[rootbd60ae387a04 /]# sed -i.bak \-e s|^mirrorlist|#mirrorlist|g \-e s|^#baseurlhttp://mirror.centos.org/centos|baseurlhttps://mirrors.ustc.edu.cn/centos|g \/etc/yum.repos.d/CentOS-Base.repo
[rootbd60ae387a04 /]# yum makecache
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/10): base/7/x86_64/filelists_db | 7.2 MB 00:00:00
(3/10): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(4/10): base/7/x86_64/other_db | 2.6 MB 00:00:00
(5/10): extras/7/x86_64/primary_db | 253 kB 00:00:00
(6/10): extras/7/x86_64/filelists_db | 305 kB 00:00:00
(7/10): extras/7/x86_64/other_db | 154 kB 00:00:00
(8/10): updates/7/x86_64/primary_db | 27 MB 00:00:01
(9/10): updates/7/x86_64/other_db | 1.6 MB 00:00:00
(10/10): updates/7/x86_64/filelists_db | 15 MB 00:00:02
Metadata Cache Created安装编译软件
这个直接安装就可以了
yum install -y gcc源代码拷贝到容器中
rootVM-24-7-ubuntu:/data/zbh/commitimage# do cker cp ./demo.cc mycppcommit:/src
Successfully copied 2.05kB to mycppcommit:/src编译运行
[rootbd60ae387a04 src]# g demo.cc -o demo
[rootbd60ae387a04 src]# ./demo
hello do cker commitimage提交为一个jingxiang
rootVM-24-7-ubuntu:/data/zbh/commitimage# do cker commit mycppcommit mycppimg:v1.0
sha256:c92a4ac1b0feb0aaeb9086889511f1b77321b2eb843b8a2e56914b5c28d56c25测试是否可以正常运行
rootVM-24-7-ubuntu:/data/zbh/commitimage# do cker run -it mycppimg:v1.0 ./src/demo
hello do cker commitimagedo cker filejingxiang制作
什么是do cker file
jingxiang的定制实际上就是定制每一层所添加的配置文件如果把每一层修改安装构建操作的命令写到一个脚本里面然后用这个脚本来进行构建定制jingxiang这个脚本就是所谓的do cker file
do cker file整体上来说就是一个文本文件在它内部包含了一个一个的指令每一个指令都会构建一层其实就是前面执行的哪一个一个的代码
当写好了一份do cker file后do cker会按照顺序依次执行do cker file中的内容
为什么需要do cker file
对于do cker file来说其实在最开始的介绍中已经说过了适合进行频繁更新的场景这里再展开进行介绍
可以按照需求进行自定义jingxiang方便进行自动化构建重复执行维护修改比较方便更加标准化
如何进行do cker file编写
这里对于do cker file的规则就不多进行列举了直接用实例来进行演示会在do cker file后附带有对应的解释规则
jingxiang制作常见问题整理
1. ADD 与 COPY 的区别 ADD: 功能更强大能从构建主机的本地文件系统或远程 URL 复制文件/目录到jingxiang文件系统。支持自动解压特定类型的压缩文件。相较于 COPY它更灵活但使用时需注意其额外功能可能带来的复杂性。 COPY: 仅用于从构建主机本地文件系统复制文件/目录到jingxiang。当只需简单拷贝文件特别是压缩包时推荐使用 COPY。
2. CMD 与 ENTRYPOINT 的区别 ENTRYPOINT: 定义容器启动时运行的命令且不可被 do cker run 的命令行参数覆盖这些参数会作为 ENTRYPOINT 命令的参数。do cker file 中只能有效指定一个 ENTRYPOINT如果有多个只有最后一个生效。可与 CMD 结合使用为 ENTRYPOINT 提供默认参数。 CMD: 也定义容器启动命令或参数但可被 do cker run 的命令行参数覆盖。如果同时存在 ENTRYPOINT 和 CMDCMD 的值将作为 ENTRYPOINT 的默认参数。
3. 如何使用多个 FROM 指令
多个 FROM 指令实现多阶段构建每个阶段创建一个临时jingxiang最终jingxiang基于最后一个 FROM 指令。允许在不同阶段分别处理编译、安装、清理等工作然后仅将必要的文件从前一阶段复制到下一阶段以减少最终jingxiang的大小。特别适用于分离编译环境和运行环境。
4. 快照与使用 do cker file 制作jingxiang的区别
do cker file 使用提供了标准化、可复现的jingxiang构建过程允许通过脚本化的方式精确控制jingxiang每一层的内容和配置。快照更多指的是jingxiang构建过程中对文件系统的即时状态保存而 do cker file 则是指导这一系列快照生成的具体指令集。
5. 什么是空悬jingxiangDangling Images
空悬jingxiang指的是仓库名和标签均为 none 的jingxiang通常是因为更新或重建导致旧jingxiang被新的覆盖。可以通过 do cker image ls -f danglingtrue 命令列出并安全删除以释放空间。
6. 中间层jingxiang的概念
中间层jingxiang是 do cker 构建过程中为了优化和复用资源而产生的。它们不会直接显示在默认的 do cker image ls 输出中需使用 do cker image ls -a 查看所有包括中间层jingxiang。这些jingxiang是其他jingxiang的基础不应随意删除因为它们是依赖项当依赖它们的jingxiang被删除时这些中间层也会被自动清理。