生活随笔
收集整理的這篇文章主要介紹了
制作Docker镜像的两种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此文已由作者朱笑天授權網易云社區發布。
歡迎訪問網易云社區,了解更多網易技術產品運營經驗。
一、使用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入門實例
總結
以上是生活随笔為你收集整理的制作Docker镜像的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。