您好,登錄后才能下訂單哦!
本篇內容介紹了“CentOS7下怎么制作Docker鏡像”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
方法 1:docker commit #保存 container 的當前狀態到 image 后,然后生成對應的 image方法 2:docker build #使用 Dockerfile 文件自動化制作 image
方法一:docker commit
創建一個安裝好 apache 工具的容器鏡像
[root@Docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 months ago 237MB [root@Docker ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Docker ~]# docker run -it centos:latest /bin/bash[root@1b96e68a3cce /]#[root@1b96e68a3cce /]# yum -y install httpd #在 container 中安裝 apache 軟件包[root@1b96e68a3cce /]# exit
查看 images 列表
[root@Docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 months ago 237MB
根據容器當前狀態做一個 image 鏡像:創建一個安裝了 apache 工具的 centos 鏡像
語法: docker commit “container 的 ID” 或 “image_name”
查看容器 ID
[root@Docker ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b96e68a3cce centos:latest "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago awesome_hypatia 607752360adf centos:latest "/bin/bash -c 'while…" 18 minutes ago Exited (137) 12 minutes ago brave_fermi 0a297ff99af8 centos:latest "/bin/bash" 22 minutes ago Exited (1) 20 minutes ago ecstatic_yonath efb4af688330 centos:latest "/bin/bash" 24 minutes ago Exited (0) 23 minutes ago epic_mcclintock [root@Docker ~]# docker commit 1b96e68a3cce centos:apachesha256:b8822ec8a7bbb325793e7908e355180be82a49481cff197661fb5d0da5872e88 [root@Docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE centos apache b8822ec8a7bb 9 seconds ago 280MB centos latest 470671670cac 4 months ago 237MB
使用新創建的 centos:apache 鏡像,生成一個容器實例
[root@Docker ~]# docker run -it centos:apache /bin/bash[root@e4c295d27581 /]# rpm -qa httpdhttpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64
看到httpd軟件名稱說明基于 apache 鏡像的容器創建成功
方法二:通過:docker build 創建一個基于 centos 的 httpd web 服務器鏡像
使用 docker build 創建鏡像時,需要使用 Dockerfile 文件自動化制作 image 鏡像 Dockerfile 有點像源碼編譯時./configure 后產生的 Makefile
1、創建工作目錄
[root@Docker ~]# mkdir /docker-build[root@Docker ~]# cd /docker-build[root@Docker docker-build]# touch Dockerfile[root@Docker docker-build]# lsDockerfile 注: make 自動化編譯時需要 Makefile 文件,自動化創建 docker 鏡像時,需要 Dockerfile
2、編輯 Dockerfile
Dockerfile 用來創建一個自定義的 image,包含了用戶挃定的軟件依賴等。 [root@Docker docker-build ]# vim DockerfileFROM centos:latest MAINTAINER RUN yum -y install httpd ADD start.sh /usr/local/bin/start.sh ADD index.html /var/www/html/index.html CMD echo hello world
注釋
FROM centos:latest # FROM 基于哪個鏡像MAINTAINER # MAINTAINER 鏡像創建者RUN yum -y install httpd #RUN 安裝軟件用ADD start.sh /usr/local/bin/start.sh ADD index.html /var/www/html/index.html# ADD 將文件拷貝到新產生的鏡像的文件系統對應的路徑。所有拷貝到新鏡像中的文件和文件夾權限為 0755,uid 和 gid 為 0 CMD echo hello world #container 啟動時執行的命令或啟動服務,但是一個 Dockerfile 中只能有一條 CMD 命令,有多條則另執行最后一條 CMD
3、創建 start.sh 腳本啟動 httpd 服務和 apache 默認首頁 index.html 文件
[root@Docker docker-build ]# echo "#!/bin/bash" >> start.sh[root@Docker docker-build ]# echo "/usr/sbin/httpd -DFOREGROUND" >> start.sh注:/usr/sbin/httpd -DFOREGROUND 相當于執行了 systemctl start httpd[root@Docker docker-build ]# chmod a+x start.sh創建 index.html[root@Docker docker-build ]# echo "docker image build test from jaking" > index.html
4、使用命令 build 來創建新的 image
語法:docker build -t 父鏡像名:鏡像的 tag Dockerfile 文件所在路徑 -t :表示 tag,鏡像名
例:使用命令 docker build 來創建新的 image,并命名為 centos:httpd
[root@Docker docker-build]# lsDockerfile index.html start.sh[root@Docker docker-build]# docker build -t centos:httpd ./# 注: ./ 表示當前目錄,另外你的當前目錄下要包含 DockerfileSending build context to Docker daemon 4.096kBStep 1/5 : FROM centos:latest ---> 470671670cacStep 2/5 : MAINTAINER ---> Running in 0180810d2ab3Removing intermediate container 0180810d2ab3 ---> 5b9af0184bcfStep 3/5 : RUN yum -y install httpd ---> Running in 8f5c114649edCentOS-8 - AppStream 228 kB/s | 7.0 MB 00:31 CentOS-8 - Base 547 kB/s | 2.2 MB 00:04 CentOS-8 - Extras 431 B/s | 5.9 kB 00:14 Dependencies resolved.================================================================================ Package Arch Version Repo Size================================================================================Installing: httpd x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 MInstalling dependencies: apr x86_64 1.6.3-9.el8 AppStream 125 k apr-util x86_64 1.6.1-6.el8 AppStream 105 k centos-logos-httpd noarch 80.5-2.el8 AppStream 24 k ...省略部分輸出信息... Complete!Removing intermediate container 8f5c114649ed ---> 040b5f229962Step 4/5 : ADD start.sh /usr/local/bin/start.sh ---> 11a106005031Step 5/5 : ADD index.html /var/www/html/index.html ---> 85b4a3657cedSuccessfully built 85b4a3657cedSuccessfully tagged centos:httpd
查看 images 列表
[root@Docker docker-build]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE centos httpd 85b4a3657ced 45 seconds ago 280MB centos apache b8822ec8a7bb 20 minutes ago 280MB centos latest 470671670cac 4 months ago 237MB# 注:docker 鏡像=應用/程序+庫
運行新生成的鏡像
[root@Docker docker-build]# docker run -it centos:httpd /bin/bash [root@1188a43a4585 /]# lsbin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@1188a43a4585 /]# rpm -qa httpdhttpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 [root@1188a43a4585 /]# exitexit[root@Docker docker-build]#
“CentOS7下怎么制作Docker鏡像”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。