Docker制作鏡像的完整過程
以制作CentOS鏡像為例,講述對鏡像自定義,打包以及推送的遠(yuǎn)程倉庫的過程,步驟都比較簡單可以快速上手。
創(chuàng)建步驟
創(chuàng)建CentOS基礎(chǔ)鏡像
創(chuàng)建構(gòu)建目錄和Dockerfile,在Dockerfile中編輯鏡像相關(guān)設(shè)置。
echo "在當(dāng)前用戶目錄下創(chuàng)建創(chuàng)建目錄docker/build/centos_7.8.2003" > /dev/null
mkdir -p ~/docker/build/centos_7.8.2003
echo "創(chuàng)建Dockerfile到~/docker/build/centos_7.8.2003目錄下" > /dev/null
cat > ~/docker/build/centos_7.8.2003/Dockerfile << EOF
# 指定基礎(chǔ)鏡像
FROM centos:7.8.2003
# 設(shè)置環(huán)境變量
ENV LANG=zh_CN.UTF-8 \\
LANGUAGE=zh_CN:zh \\
LC_ALL=zh_CN.UTF-8
# 只在構(gòu)建鏡像的時(shí)候執(zhí)行這些shell指令
RUN yum update -y && \\
yum reinstall -y glibc-common && \\
yum install -y telnet net-tools && \\
yum clean all && \\
rm -rf /tmp/* rm -rf /var/cache/yum/* && \\
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \\
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EOF
參考菜鳥教程 - docker build構(gòu)建鏡像,格式為docker build -t <鏡像名>:<鏡像版本號(hào)> <Dockerfile所在目錄>,不寫鏡像版本號(hào)默認(rèn)latest。
# 解析~/docker/build/centos_7.8.2003/Dockerfile構(gòu)建名為base-centos的鏡像 docker build -t base-centos ~/docker/build/centos_7.8.2003
構(gòu)建完成后可以在本地鏡像列表中看到,使用的基礎(chǔ)鏡像和構(gòu)建生成的新鏡像。
docker images

創(chuàng)建容器并自定義
使用使用新鏡像創(chuàng)建并進(jìn)入容器,這個(gè)容器就是一個(gè)虛擬CentOS系統(tǒng)。
echo "用base-centos鏡像創(chuàng)建容器,并命名為base-centos" > /dev/null docker run \ --name base-centos \ --privileged=true \ -dit \ base-centos \ /usr/sbin/init echo "進(jìn)入centos容器" > /dev/null docker exec -it base-centos /bin/bash
對容器中虛擬系統(tǒng)自定義,比如安裝常用的工具。其實(shí)這些也是可以寫在Dockerfile中的,定義在RUN指令后。
echo "vim:編輯文件" > /dev/null yum install -y vim echo "lsof:方便查看端口信息" > /dev/null yum install -y lsof echo "wget:文件下載" > /dev/null yum install -y wget echo "tree:查看目錄結(jié)構(gòu)" > /dev/null yum install -y tree echo "安裝python" > /dev/null yum install -y python-devel echo "C的編譯環(huán)境" > /dev/null yum install -y gcc gcc-c++ yum install -y zlib yum install -y zlib-devel yum install -y tcl build-essential tk gettext
以自定義容器創(chuàng)建新鏡像
命令格式為docker commit <容器名稱或者ID> <生成的鏡像名>:<鏡鏡像版本號(hào)>,不寫鏡像版本號(hào)默認(rèn)latest。創(chuàng)建時(shí)這個(gè)容器也可以是停止?fàn)顟B(tài)。
docker commit base-centos centos:7.8.2003_v1
到此鏡像就創(chuàng)建完成了,在鏡像列表可以看到新鏡像。

保存、加載鏡像tar包
將鏡像保存為tar包,格式為docker save -o <文件名> <鏡像名>:<鏡像標(biāo)簽>,參考菜鳥教程 - docker save。
docker save -o ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar centos:7.8.2003_v1

加載tar包生成鏡像。
docker load --input ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar

已存在重復(fù)鏡像執(zhí)行加載命令無效。

將鏡像推送到遠(yuǎn)程倉庫
docker登陸遠(yuǎn)程倉庫。格式為docker login --username=<用戶名> <倉庫地址>或者docker login -u <用戶名> -p <密碼> <倉庫地址>。

docker tag <鏡像ID> <遠(yuǎn)程鏡像倉庫地址>:<鏡像版本號(hào)>標(biāo)記后。
echo "標(biāo)記鏡像地址和版本號(hào)" > /dev/null docker tag 66b1bc81e1f2 registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1

docker push <遠(yuǎn)程鏡像倉庫地址>:<鏡像版本號(hào)>推送到遠(yuǎn)程倉庫。
echo "推送到遠(yuǎn)程倉庫" > /dev/null docker push registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1
參考鏈接
CSDN - Docker 的幾種常用 CentOS7 鏡像
菜鳥教程 - Docker 命令大全
到此這篇關(guān)于Docker制作鏡像的完整過程的文章就介紹到這了,更多相關(guān)Docker制作鏡像內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信