Docker制作鏡像的完整過程
前言
以制作CentOS鏡像為例,講述對鏡像自定義,打包以及推送的遠程倉庫的過程,步驟都比較簡單可以快速上手。
創建步驟
創建CentOS基礎鏡像
創建構建目錄和Dockerfile,在Dockerfile中編輯鏡像相關設置。
echo "在當前用戶目錄下創建創建目錄docker/build/centos_7.8.2003" > /dev/null mkdir -p ~/docker/build/centos_7.8.2003 echo "創建Dockerfile到~/docker/build/centos_7.8.2003目錄下" > /dev/null cat > ~/docker/build/centos_7.8.2003/Dockerfile << EOF # 指定基礎鏡像 FROM centos:7.8.2003 # 設置環境變量 ENV LANG=zh_CN.UTF-8 \\ LANGUAGE=zh_CN:zh \\ LC_ALL=zh_CN.UTF-8 # 隻在構建鏡像的時候執行這些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構建鏡像,格式為docker build -t <鏡像名>:<鏡像版本號> <Dockerfile所在目錄>
,不寫鏡像版本號默認latest
。
# 解析~/docker/build/centos_7.8.2003/Dockerfile構建名為base-centos的鏡像 docker build -t base-centos ~/docker/build/centos_7.8.2003
構建完成後可以在本地鏡像列表中看到,使用的基礎鏡像和構建生成的新鏡像。
docker images
創建容器並自定義
使用使用新鏡像創建並進入容器,這個容器就是一個虛擬CentOS系統。
echo "用base-centos鏡像創建容器,並命名為base-centos" > /dev/null docker run \ --name base-centos \ --privileged=true \ -dit \ base-centos \ /usr/sbin/init echo "進入centos容器" > /dev/null docker exec -it base-centos /bin/bash
對容器中虛擬系統自定義,比如安裝常用的工具。其實這些也是可以寫在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:查看目錄結構" > /dev/null yum install -y tree echo "安裝python" > /dev/null yum install -y python-devel echo "C的編譯環境" > /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
以自定義容器創建新鏡像
命令格式為docker commit <容器名稱或者ID> <生成的鏡像名>:<鏡鏡像版本號>
,不寫鏡像版本號默認latest
。創建時這個容器也可以是停止狀態。
docker commit base-centos centos:7.8.2003_v1
到此鏡像就創建完成瞭,在鏡像列表可以看到新鏡像。
保存、加載鏡像tar包
將鏡像保存為tar包,格式為docker save -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
已存在重復鏡像執行加載命令無效。
將鏡像推送到遠程倉庫
docker登陸遠程倉庫。格式為docker login --username=<用戶名> <倉庫地址>
或者docker login -u <用戶名> -p <密碼> <倉庫地址>
。
docker tag <鏡像ID> <遠程鏡像倉庫地址>:<鏡像版本號>
標記後。
echo "標記鏡像地址和版本號" > /dev/null docker tag 66b1bc81e1f2 registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1
docker push <遠程鏡像倉庫地址>:<鏡像版本號>
推送到遠程倉庫。
echo "推送到遠程倉庫" > /dev/null docker push registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1
參考鏈接
CSDN – Docker 的幾種常用 CentOS7 鏡像
菜鳥教程 – Docker 命令大全
到此這篇關於Docker制作鏡像的完整過程的文章就介紹到這瞭,更多相關Docker制作鏡像內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- docker比賽提交常用命令小結
- Dockerfile中的保留字指令的過程解析
- 使用Dockerfile腳本定制鏡像的方法
- .NET微服務架構CI/CD鏡像自動分發
- Docker鏡像的遷移與備份及Dockerflie 使用方法詳解