生活随笔
收集整理的這篇文章主要介紹了
制作Docker镜像的两种方式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
此文已由作者朱笑天授權(quán)網(wǎng)易云社區(qū)發(fā)布。
歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。
一、使用docker commit命令制作docker鏡像
1. pull一個(gè)centos6.6的基礎(chǔ)鏡像,并運(yùn)行一個(gè)docker container,然后在其中進(jìn)行定制化(安裝、配置服務(wù)等);
[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的改動(dòng):
[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. 執(zhí)行docker commit命令創(chuàng)建一個(gè)鏡像:
[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制作鏡像
創(chuàng)建dockerfile文件:dockerfile.txt,內(nèi)容如下:
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服務(wù),以便可以ssh登錄,并且設(shè)置了root用戶的密碼。
然后執(zhí)行下面的命令制作一個(gè)鏡像:
docker build -t centos:autosshd - < dockerfile.txt
成功之后就可以用docker images查看鏡像列表了。
?
兩種方式比較:
使用commit命令比較簡單,相當(dāng)于docker根據(jù)container內(nèi)部執(zhí)行的命令自動(dòng)生成了dockerfile,并進(jìn)行了build,比較適合對dockerfile不熟悉的用戶;
而dockerfile的方式顯得稍有點(diǎn)復(fù)雜,但是比較適合批量處理的場景。dockerfile一次寫入,多次運(yùn)行。
網(wǎng)易云容器服務(wù)為用戶提供了無服務(wù)器容器,讓企業(yè)能夠快速部署業(yè)務(wù),輕松運(yùn)維服務(wù)。容器服務(wù)支持彈性伸縮、垂直擴(kuò)容、灰度升級、服務(wù)發(fā)現(xiàn)、服務(wù)編排、錯(cuò)誤恢復(fù)及性能監(jiān)測等功能。點(diǎn)擊可免費(fèi)試用
免費(fèi)體驗(yàn)云安全(易盾)內(nèi)容安全、驗(yàn)證碼等服務(wù)
更多網(wǎng)易技術(shù)、產(chǎn)品、運(yùn)營經(jīng)驗(yàn)分享請點(diǎn)擊。
相關(guān)文章:
【推薦】?Jmeter入門實(shí)例
總結(jié)
以上是生活随笔為你收集整理的制作Docker镜像的两种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。