此文已由作者朱笑天授權網易雲社區發布。
歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。
一、使用docker commit命令制作docker鏡像
1. pull一個centos6.6的基礎鏡像,並運行一個docker container,然后在其中進行定制化(安裝、配置服務等);
[root@localhost ~]# docker pull centos:6.6 Pulling repository centos 8b44529354f3: Download complete f1b10cd84249: Download complete Status: Downloaded newer image for centos:6.6 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 6.6 8b44529354f3 4 days ago 202.6 MB centos centos6.6 8b44529354f3 4 days ago 202.6 MB [root@localhost ~]# docker run -i -t centos:6.6 bash [root@b42c1ba929a9 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var [root@b42c1ba929a9 /]# mkdir /tmp/test.txt [root@b42c1ba929a9 /]# exit exit |
接下來,查看一下container的改動:
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b42c1ba929a9 centos:6.6 "bash" About a minute ago Exited (0) 22 seconds ago berserk_mcclintock 804a56ce8008 f1b10cd84249 "/bin/echo hello" 22 minutes ago test [root@localhost ~]# docker diff b42c1ba929a9 C /tmp A /tmp/test.txt C /root A /root/.bash_history |
2. 執行docker commit命令創建一個鏡像:
[root@localhost ~]# docker commit -m "new container" b42c1ba929a9 yuanhuan/newcontainer1 07b146e0be9e98c253122784c3837dd1604f7692e794f3601dad747d41901cd4 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE yuanhuan/newcontainer1 latest 07b146e0be9e 43 seconds ago 202.6 MB centos 6.6 8b44529354f3 4 days ago 202.6 MB centos centos6.6 8b44529354f3 4 days ago 202.6 MB |
3. 登錄docker,並將該鏡像push到docker倉庫:
[root@localhost ~]# docker login Username: yuanhuan Password: Email: yuanhuan_2005@126.com Login Succeeded [root@localhost ~]# docker push yuanhuan/newcontainer1 The push refers to a repository [yuanhuan/newcontainer1] (len: 1) Sending image list Pushing repository yuanhuan/newcontainer1 (1 tags) f1b10cd84249: Image already pushed, skipping 8b44529354f3: Image already pushed, skipping 07b146e0be9e: Image successfully pushed Pushing tag for rev [07b146e0be9e] on {https://cdn-registry-1.docker.io/v1/repositories/yuanhuan/newcontainer1/tags/latest} |
成功之后,就可以登錄docker頁面,查看到剛剛制作的鏡像了。

二、使用dockerfile制作鏡像
創建dockerfile文件:dockerfile.txt,內容如下:
FROM centos MAINTAINER YH, http://yuanhuan.blog.51cto.com RUN yum install passwd openssl openssh-server -y RUN echo '123456' | passwd --stdin root RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh EXPOSE 22 CMD ip addr ls eth0 | awk '{print $2}' | egrep -o '([0-9]+\.){3}[0-9]+';/usr/sbin/sshd -D |
簡要說明:該dockerfile的主要目的是開啟sshd服務,以便可以ssh登錄,並且設置了root用戶的密碼。
然后執行下面的命令制作一個鏡像:
docker build -t centos:autosshd - < dockerfile.txt
成功之后就可以用docker images查看鏡像列表了。
兩種方式比較:
使用commit命令比較簡單,相當於docker根據container內部執行的命令自動生成了dockerfile,並進行了build,比較適合對dockerfile不熟悉的用戶;
而dockerfile的方式顯得稍有點復雜,但是比較適合批量處理的場景。dockerfile一次寫入,多次運行。
網易雲容器服務為用戶提供了無服務器容器,讓企業能夠快速部署業務,輕松運維服務。容器服務支持彈性伸縮、垂直擴容、灰度升級、服務發現、服務編排、錯誤恢復及性能監測等功能。點擊可免費試用
免費體驗雲安全(易盾)內容安全、驗證碼等服務
更多網易技術、產品、運營經驗分享請點擊。
相關文章:
【推薦】 Jmeter入門實例