溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

CentOS7下怎么制作Docker鏡像

發(fā)布時(shí)間:2022-02-16 15:28:22 來源:億速云 閱讀:377 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“CentOS7下怎么制作Docker鏡像”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

CentOS7下怎么制作Docker鏡像
  • Docker Image 的制作兩種方法

    方法 1:docker commit #保存 container 的當(dāng)前狀態(tài)到 image 后,然后生成對應(yīng)的 image方法 2:docker build #使用 Dockerfile 文件自動(dòng)化制作 image

    方法一:docker commit

    創(chuàng)建一個(gè)安裝好 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

    根據(jù)容器當(dāng)前狀態(tài)做一個(gè) image 鏡像:創(chuàng)建一個(gè)安裝了 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

    使用新創(chuàng)建的 centos:apache 鏡像,生成一個(gè)容器實(shí)例

    [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 鏡像的容器創(chuàng)建成功

    方法二:通過:docker build 創(chuàng)建一個(gè)基于 centos 的 httpd web 服務(wù)器鏡像

    使用 docker build 創(chuàng)建鏡像時(shí),需要使用 Dockerfile 文件自動(dòng)化制作 image 鏡像 Dockerfile 有點(diǎn)像源碼編譯時(shí)./configure 后產(chǎn)生的 Makefile

    1、創(chuàng)建工作目錄

    [root@Docker ~]# mkdir /docker-build[root@Docker ~]# cd /docker-build[root@Docker docker-build]# touch Dockerfile[root@Docker docker-build]# lsDockerfile
    注: make 自動(dòng)化編譯時(shí)需要 Makefile 文件,自動(dòng)化創(chuàng)建 docker 鏡像時(shí),需要 Dockerfile

    2、編輯 Dockerfile

    Dockerfile 用來創(chuàng)建一個(gè)自定義的 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 基于哪個(gè)鏡像MAINTAINER  # MAINTAINER 鏡像創(chuàng)建者RUN yum -y install httpd #RUN 安裝軟件用ADD start.sh /usr/local/bin/start.sh
    ADD index.html /var/www/html/index.html# ADD 將文件拷貝到新產(chǎn)生的鏡像的文件系統(tǒng)對應(yīng)的路徑。所有拷貝到新鏡像中的文件和文件夾權(quán)限為 0755,uid 和 gid 為 0
    CMD echo hello world #container 啟動(dòng)時(shí)執(zhí)行的命令或啟動(dòng)服務(wù),但是一個(gè) Dockerfile 中只能有一條 CMD 命令,有多條則另執(zhí)行最后一條 CMD

    3、創(chuàng)建 start.sh 腳本啟動(dòng) httpd 服務(wù)和 apache 默認(rèn)首頁 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 相當(dāng)于執(zhí)行了 systemctl start httpd[root@Docker docker-build ]# chmod a+x start.sh創(chuàng)建 index.html[root@Docker docker-build ]# echo "docker image build  test from jaking" > index.html

    4、使用命令 build 來創(chuàng)建新的 image

    語法:docker build -t 父鏡像名:鏡像的 tag Dockerfile 文件所在路徑 -t :表示 tag,鏡像名

    例:使用命令 docker build 來創(chuàng)建新的 image,并命名為 centos:httpd

    [root@Docker docker-build]# lsDockerfile  index.html  start.sh[root@Docker docker-build]# docker build -t centos:httpd ./# 注: ./ 表示當(dāng)前目錄,另外你的當(dāng)前目錄下要包含 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 鏡像=應(yīng)用/程序+庫

    運(yùn)行新生成的鏡像

    [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鏡像”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI