国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker容器技術(shù)之鏡像制作

這篇具有很好參考價(jià)值的文章主要介紹了Docker容器技術(shù)之鏡像制作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Docker容器技術(shù)之鏡像制作

上篇文章說(shuō)到過(guò),作為用戶(hù)是不需要制作鏡像的,因?yàn)閹缀跛谐S玫臄?shù)據(jù)局庫(kù)、應(yīng)用軟件、中間件在Docker Hub 里面可以找到,但是如果到了萬(wàn)不得已的時(shí)候我們還是要自己制作鏡像,比如給自己編寫(xiě)的軟件制作鏡像。
制作鏡像有兩種方法:
1.docker commit命令
2.編寫(xiě)Dockerfile利用docker build制作鏡像

一、docker commit命令

利用docker commit命令制作鏡像非常的簡(jiǎn)單,主要有三個(gè)步驟:

  1. 運(yùn)行容器
    在這個(gè)例子中我們以u(píng)buntu:22.04為例進(jìn)行制作鏡像,我們首先要運(yùn)行以這個(gè)鏡像為基礎(chǔ)的鏡像:
    Docker容器技術(shù)之鏡像制作
    這個(gè)圖片展示了運(yùn)行容器之后的效果。

  2. 修改容器
    我們可以在容器兩面進(jìn)行所需的修改操作,我們以安裝apache為例進(jìn)行安裝。

root@77bdc44519a9:/# sed -ri 's/archive.ubuntu/mirrors.huaweicloud/g' /etc/apt/sources.list          
root@77bdc44519a9:/# apt update && apt install apache2
#省略
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser ufw bzip2-doc gdbm-l10n
  libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap
  libsasl2-modules-otp libsasl2-modules-sql perl-doc libterm-readline-gnu-perl
  | libterm-readline-perl-perl make libtap-harness-archive-perl
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils bzip2 ca-certificates file libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libcurl4 libexpat1 libgdbm-compat4 libgdbm6
  libicu70 libjansson4 libldap-2.5-0 libldap-common liblua5.3-0 libmagic-mgc libmagic1 libnghttp2-14
  libperl5.34 libpsl5 librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libsqlite3-0 libssh-4
  libxml2 mailcap media-types mime-support netbase openssl perl perl-modules-5.34 publicsuffix
  ssl-cert xz-utils
0 upgraded, 43 newly installed, 0 to remove and 9 not upgraded.
Need to get 25.6 MB of archives.
After this operation, 111 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 perl-modules-5.34 all 5.34.0-3ubuntu1 [2975 kB]
Get:2 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libgdbm6 amd64 1.23-1 [33.9 kB]
Get:3 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libgdbm-compat4 amd64 1.23-1 [6606 B]
Get:4 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libperl5.34 amd64 5.34.0-3ubuntu1 [4809 kB]
Get:5 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 perl amd64 5.34.0-3ubuntu1 [232 kB]
Get:6 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libapr1 amd64 1.7.0-8build1 [107 kB]
Get:7 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libexpat1 amd64 2.4.7-1 [90.7 kB]       
Get:8 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libaprutil1 amd64 1.6.1-5ubuntu4 [92.4 kB]
Get:9 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libsqlite3-0 amd64 3.37.2-2 [643 kB]    
Get:10 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libaprutil1-dbd-sqlite3 amd64 1.6.1-5ubuntu4 [11.3 kB]
Get:11 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libsasl2-modules-db amd64 2.1.27+dfsg2-3ubuntu1 [20.8 kB]
Get:12 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libsasl2-2 amd64 2.1.27+dfsg2-3ubuntu1 [53.9 kB]
Get:13 http://mirrors.huaweicloud.com/ubuntu jammy-updates/main amd64 libldap-2.5-0 amd64 2.5.12+dfsg-0ubuntu0.22.04.1 [184 kB]
Get:14 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libaprutil1-ldap amd64 1.6.1-5ubuntu4 [9162 B]
Get:15 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libbrotli1 amd64 1.0.9-2build6 [315 kB]
Get:16 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libnghttp2-14 amd64 1.43.0-1build3 [76.3 kB]
Get:17 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 libpsl5 amd64 0.21.0-1.2build2 [58.4 kB]
Get:18 http://mirrors.huaweicloud.com/ubuntu jammy/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2build4 [58.2 kB]
eb ...
untu4) ...
Selecting previously unselected package libbrotli1:amd64.
Preparing to unpack .../14-libbrotli1_1.0.9-2build6_amd64.deb ...
Unpacking libbrotli1:amd64 (1.0.9-2build6) ...
Selecting previously unselected package libnghttp2-14:amd64.
Preparing to unpack .../15-libnghttp2-14_1.43.0-1build3_amd64.deb ...
Unpacking libnghttp2-14:amd64 (1.43.0-1build3) ...
Selecting previously unselected package libpsl5:amd64.
Preparing to unpack .../16-libpsl5_0.21.0-1.2build2_amd64.deb ...
Unpacking libpsl5:amd64 (0.21.0-1.2build2) ...
#省略
Selecting previously unselected package netbase.
Preparing to unpack .../33-netbase_6.3_all.deb ...
Unpacking netbase (6.3) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../34-libmagic-mgc_1%3a5.41-3_amd64.deb ...
Unpacking libmagic-mgc (1:5.41-3) ...

Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for libc-bin (2.35-0ubuntu3) ...
Processing triggers for ca-certificates (20211016) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

此過(guò)程就是修改鏡像的過(guò)程。

  • 將容器保存為新的鏡像
    鏡像修改完畢之后我們可以利用docker commit命令重新生成我們需要的鏡像。
    退出容器之后就可以進(jìn)行重新保存鏡像了。
    Docker容器技術(shù)之鏡像制作保存完鏡像之后可以看出我們保存后的鏡像已經(jīng)顯示出來(lái)。
    利用這個(gè)方法制作鏡像非常的簡(jiǎn)單,但是有下面幾個(gè)缺點(diǎn):
  • 這是穿手工制作鏡像,容易出錯(cuò);
  • 這種制作的鏡像沒(méi)法檢測(cè)鏡像的制作過(guò)程以及來(lái)源,無(wú)法進(jìn)行審計(jì),存在安全隱患;
  • 無(wú)法移植,如果改變base鏡像,所有的過(guò)程必須重新來(lái)一遍,非常麻煩。

二、Dockerfile制作鏡像

這種方法制作鏡像相比上面的方法有很大的靈活性,并且有很大的移植性。

Dockerfile是一個(gè)文本文件,記錄了鏡像構(gòu)建的所有步驟。
首先介紹常用的指令:

  • FROM 制定base鏡像
  • MAINTAINER 設(shè)置鏡像的作者,可以是任何字符
  • COPY 將文件從build context復(fù)制到鏡像。COPY支持兩種形式: COPY src dest與COPY [“src”,“dest”]。注意:src只能指定build context中的文件或目錄。
  • ADD 與COPY類(lèi)似,從build context復(fù)制文件到鏡像。不同的是,如果src是歸檔文件(tar、zip、tgz、xz等),文件會(huì)被自動(dòng)解壓到dest。
  • ENV 設(shè)置環(huán)境變量,環(huán)境變量可被后面的指令使用。
  • EXPOSE 指定容器中的進(jìn)程會(huì)監(jiān)聽(tīng)某個(gè)端口,Docker可以將該端口暴露出來(lái)。
  • VOLUME 跟運(yùn)行容器時(shí)的docker managed volume效果一樣。
  • WORKDIR 為后面的RUN、CMD、ENTRYPOINT、ADD或COPY指令設(shè)置鏡像中的當(dāng)前工作目錄。
  • CMD 容器啟動(dòng)時(shí)運(yùn)行指定的命令。Dockerfile中可以有多個(gè)CMD指令,但只有最后一個(gè)生效。CMD可以被docker run之后的參數(shù)替換。
  • RUN 在容器中運(yùn)行指定的命令
  • ENTRYPOINT 設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令。Dockerfile中可以有多個(gè)ENTRYPOINT指令,但只有最后一個(gè)生效。CMD或docker run之后的參數(shù)會(huì)被當(dāng)作參數(shù)傳遞給ENTRYPOINT。
    上面這些指令時(shí)編寫(xiě)Dockerfile文件常用的指令,每個(gè)指令的作用大家要牢記,可以靈活運(yùn)用達(dá)到建立高質(zhì)量鏡像的目的。
    下面展示作者編寫(xiě)的一個(gè)基于ubuntu22.04制作apache2應(yīng)用程序的鏡像的Dockerfile文件,上面的命令沒(méi)有都用到。
    Docker容器技術(shù)之鏡像制作

這個(gè)就是全部的Dockerfile文件。
注意,以#開(kāi)頭的行為注釋行
編寫(xiě)完Dockerfile文件之后,然后利用docker build命令進(jìn)行創(chuàng)建。

helmer@Hanssen:~/scripts/apache_ubuntu$ docker build -t apache_dockerfile:v.1 .
#注意:1.后面的點(diǎn)指示了上下文環(huán)境;2-t標(biāo)志不能忘記。

創(chuàng)建鏡像的過(guò)程如下:

helmer@Hanssen:~/scripts/apache_ubuntu$ docker build -t apache_dockerfile:v.1 .
Sending build context to Docker daemon   2.56kB
Step 1/6 : FROM ubuntu:22.04
 ---> 27941809078c
Step 2/6 : MAINTAINER Helmer Hanssen <helmer_hanssen@139.com>
 ---> Running in c7eb54e56ff0
Removing intermediate container c7eb54e56ff0
 ---> 3ed97ab2be00
Step 3/6 : RUN sed -ri 's/archive.ubuntu/mirrors.huaweicloud/g' /etc/apt/sources.list && apt-get update && apt-get install -y apache2 && apt-get clean
 ---> Running in 831a4c596eb7
#省略更新軟件列表和安裝軟件的過(guò)程
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for libc-bin (2.35-0ubuntu3) ...
Processing triggers for ca-certificates (20211016) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Removing intermediate container 831a4c596eb7
 ---> cdc9756b7834
Step 4/6 : ENV APACHE_LOG_DIR /var/log/apache2
 ---> Running in a1a1b61131a8
Removing intermediate container a1a1b61131a8
 ---> 18d93ab7bbd8
Step 5/6 : EXPOSE 80
 ---> Running in 4a137ace98af
Removing intermediate container 4a137ace98af
 ---> 144c35395468
Step 6/6 : ENTRYPOINT ["/usr/sbin/apache2ctl","-D","FOREGROUND"]
 ---> Running in 95219bc60eab
Removing intermediate container 95219bc60eab
 ---> 735f44eda4db
Successfully built 735f44eda4db
Successfully tagged apache_dockerfile:v.1
helmer@Hanssen:~/scripts/apache_ubuntu$ 

Docker容器技術(shù)之鏡像制作我們制作的鏡像已經(jīng)顯示出來(lái)。
以上就是制作docker鏡像的兩種方法。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-447816.html

到了這里,關(guān)于Docker容器技術(shù)之鏡像制作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 根據(jù)自己修改后的容器制作鏡像并上傳docker hub

    要將自己的鏡像上傳到Docker Hub,可以按照以下步驟進(jìn)行操作: 首先,確保已經(jīng)在本地構(gòu)建好了需要上傳的 Docker 鏡像。如果還沒(méi)有構(gòu)建,可以使用 docker build 命令來(lái)創(chuàng)建鏡像。 登錄到 Docker Hub 賬號(hào)。打開(kāi)終端或命令提示符,運(yùn)行以下命令并輸入相應(yīng)的用戶(hù)名和密碼: docker

    2024年01月21日
    瀏覽(20)
  • Docker介紹下載安裝、制作鏡像及容器、做目錄映射、做端口映射

    Docker介紹下載安裝、制作鏡像及容器、做目錄映射、做端口映射

    在計(jì)算機(jī)中,虛擬化(英語(yǔ):Virtualization)是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器、網(wǎng)絡(luò)、內(nèi)存及存儲(chǔ)等,予以抽象、轉(zhuǎn)換后呈現(xiàn)出來(lái),打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶(hù)可以比原本的組態(tài)更好的方式來(lái)應(yīng)用這些資源。這些資源的新虛擬部份是

    2023年04月12日
    瀏覽(30)
  • Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像管理

    Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像管理

    目錄 一、理論 1.Doker概述 2.Docker核心概念 3.Docker安裝 4.Docker的鏡像管理命令 二、實(shí)驗(yàn) 1.Docker安裝 2.查看Docker信息 3.Docker的鏡像管理命令 三、問(wèn)題 1.如何注冊(cè)Docker賬號(hào) ?2.如何設(shè)置Docker公共存儲(chǔ)庫(kù) 四、總結(jié) (1) IT架構(gòu) 裸金屬 → 虛擬機(jī) → 容器→ 函數(shù)化、代碼化 云計(jì)算涌現(xiàn)出很

    2024年02月13日
    瀏覽(25)
  • Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像操作

    Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像操作

    目錄 一、理論 1.Doker概述 2.Docker核心概念 3.Docker安裝 4.Docker的鏡像管理命令 二、實(shí)驗(yàn) 1.Docker安裝 2.查看Docker信息 3.Docker的鏡像管理命令 三、問(wèn)題 1.如何注冊(cè)Docker賬號(hào) ?2.如何設(shè)置Docker公共存儲(chǔ)庫(kù) 四、總結(jié) (1) IT架構(gòu) 裸金屬 → 虛擬機(jī) → 容器→ 函數(shù)化、代碼化 云計(jì)算涌現(xiàn)出很

    2024年02月10日
    瀏覽(19)
  • Docker容器與虛擬化技術(shù):Docker鏡像創(chuàng)建、Dockerfile實(shí)例

    Docker容器與虛擬化技術(shù):Docker鏡像創(chuàng)建、Dockerfile實(shí)例

    目錄 一、理論 1.Docker鏡像的創(chuàng)建方法 2.Docker鏡像結(jié)構(gòu)的分層 3.Dockerfile 案例 4.構(gòu)建Systemctl鏡像(基于SSH鏡像) 5.構(gòu)建Tomcat 鏡像 6.構(gòu)建Mysql鏡像 二、實(shí)驗(yàn) 1.Docker鏡像的創(chuàng)建 2.?Dockerfile 案例 3.構(gòu)建Systemctl鏡像(基于SSH鏡像) 三、問(wèn)題 1.nginx網(wǎng)頁(yè)打不開(kāi) ?2.Apache容器啟動(dòng)一直為Ex

    2024年02月12日
    瀏覽(94)
  • Windows環(huán)境下清華ChatGLM3+docker-desktop鏡像制作和配置GPU環(huán)境docker容器本地運(yùn)行

    (1)下載或git拉取ChatGLM3鏡像 ? 拉取鏡像,配置環(huán)境在此文就不多贅述? ?git clone?https://github.com/THUDM/ChatGLM3.git (2)docker-desktop的安裝 這里引用這位大佬的文章,講的很詳細(xì)

    2024年02月19日
    瀏覽(32)
  • Selenium技術(shù)在CentOS6.8系統(tǒng)的騰訊云服務(wù)器上的docker鏡像的Ubuntu容器里的相關(guān)使用(Linux環(huán)境下)

    一開(kāi)始看標(biāo)題,我知道你們會(huì)很懵,我當(dāng)初完成的時(shí)候,我自己也很懵,主要是想在Linux環(huán)境下使用Selenium技術(shù)來(lái)完成一些工作,本來(lái)打算用docker創(chuàng)建一個(gè)Anaconda的容器來(lái)用Selenium技術(shù)的,但發(fā)現(xiàn)無(wú)法通過(guò)chrome驅(qū)動(dòng)來(lái)驅(qū)動(dòng)谷歌瀏覽器,所以我又用docker創(chuàng)建了一個(gè)Ubuntu容器來(lái)使用

    2024年02月03日
    瀏覽(93)
  • 容器編排學(xué)習(xí)(二)鏡像制作和私有倉(cāng)庫(kù)介紹

    容器編排學(xué)習(xí)(二)鏡像制作和私有倉(cāng)庫(kù)介紹

    commit的局限 很容易制作簡(jiǎn)單的鏡像,但碰到復(fù)雜的情況就十分不方便例如碰到下面的情況 需要設(shè)置默認(rèn)的啟動(dòng)命令 需要設(shè)置環(huán)境變量 需要指定鏡像開(kāi)放某些特定的端口 Dockerfile就是解決這些問(wèn)題的方法 Dockerfile是一種更強(qiáng)大的鏡像制作方式 編寫(xiě)類(lèi)似腳本的 Dockerfile 文件,通

    2024年02月09日
    瀏覽(51)
  • docker 保存鏡像、容器與導(dǎo)入鏡像容器

    可以通過(guò)以下步驟將Docker鏡像導(dǎo)出到另一臺(tái)計(jì)算機(jī)上: 在本地計(jì)算機(jī)上使用以下命令將Docker鏡像保存為tar文件: 其中,image-name是要導(dǎo)出的Docker鏡像的名稱(chēng)。 將保存的tar文件傳輸?shù)搅硪慌_(tái)計(jì)算機(jī)上,可以使用scp命令或其他文件傳輸工具。 在目標(biāo)計(jì)算機(jī)上使用以下命令將tar文

    2024年02月13日
    瀏覽(26)
  • docker導(dǎo)出鏡像、容器打鏡像

    有兩種方法,一種是通過(guò)容器,一種是通過(guò)鏡像 1 首先使用 docker ps -a 查看本機(jī)上的所有容器 2 導(dǎo)出鏡像 使用 docker export 命令根據(jù)容器 id 將鏡像導(dǎo)成一個(gè)文件 上面命令執(zhí)行之后,我們便可以通過(guò) ls 命令在當(dāng)前目錄下發(fā)現(xiàn) image.tar 3 導(dǎo)入鏡像 使用 docker import 命令將這個(gè)鏡像導(dǎo)

    2024年02月03日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包