最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Dockerfile制作個(gè)人的鏡像文件詳細(xì)講解

 更新時(shí)間:2023年06月28日 09:27:37   作者:熱愛(ài)跑步的恒川  
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,Dockerfile是用來(lái)構(gòu)建Docker鏡像的構(gòu)建文件,是由一系列命令和參數(shù)構(gòu)成的腳本,本文將給大家詳細(xì)介紹如何利用Dockerfile制作個(gè)人的鏡像文件,感興趣的同學(xué)可以借鑒參考

1. Dockerfile簡(jiǎn)介

簡(jiǎn)單來(lái)說(shuō),Dockerfile就是把我們安裝環(huán)境的每個(gè)步驟和指令,放到一個(gè)文件,最后一鍵執(zhí)行,最后做成一個(gè)你想要的環(huán)境。

Dockerfile是用來(lái)構(gòu)建Docker鏡像的構(gòu)建文件,是由一系列命令和參數(shù)構(gòu)成的腳本。

Docker構(gòu)建三步曲:

  • 編寫(xiě)dockerfile文件
  • docker build 構(gòu)建image鏡像文件
  • docker run 運(yùn)行容器

2. Dockerfile相關(guān)指令

Dockerfile 是一個(gè)包含創(chuàng)建鏡像所有命令的文本文件,通過(guò)docker build命令可以根據(jù) Dockerfile 的內(nèi)容構(gòu)建鏡像,
在介紹如何構(gòu)建之前先介紹下 Dockerfile 的基本語(yǔ)法結(jié)構(gòu)。

Dockerfile 有以下指令選項(xiàng):

  • FROM 基礎(chǔ)鏡像,當(dāng)前新鏡像是基于哪個(gè)鏡像的
  • MAINTAINER 鏡像維護(hù)者的姓名和郵箱地址
  • RUN 容器構(gòu)建時(shí)需要運(yùn)行的命令
  • CMD 指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令。
    dockerfile中可以有多個(gè)CMD指令,但只有最后一個(gè)生效,CMD會(huì)被docker run之后的參數(shù)替換。
  • EXPOSE 當(dāng)前容器對(duì)外暴露的端口號(hào)
  • ENV 用來(lái)在構(gòu)建鏡像過(guò)程中設(shè)置環(huán)境變量
  • ADD 將宿主機(jī)目錄下的文件拷貝到鏡像里面并且ADD命令會(huì)自動(dòng)處理URL和解壓tar壓縮包
  • COPY COPY:類(lèi)似ADD,拷貝文件和目錄到鏡像中,但是它只是拷貝,不會(huì)自動(dòng)處理URL和解壓tar壓縮包。
  • ENTRYPOINT 指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令。
  • ENTRYPOIT的目的和CMD一樣,都是在指定容器啟動(dòng)程序及參數(shù)。
  • VOLUME 容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作
  • USER 指定運(yùn)行容器時(shí)的用戶(hù)名或UID,后續(xù)的 RUN 也會(huì)使用指定用戶(hù)
  • WORKDIR 指定在容器創(chuàng)建后,終端默認(rèn)登錄進(jìn)來(lái)工作目錄,一個(gè)落腳點(diǎn)
  • ONBUILD 當(dāng)構(gòu)建一個(gè)被繼承的Dockerfile時(shí)運(yùn)行命令,父鏡像在被子繼承后,父鏡像的onbuild被觸發(fā)。

3. Dockerfile編寫(xiě)

在當(dāng)前目錄新建一個(gè)文件夾docker-run, cd進(jìn)入到文件夾,touch新建一個(gè)Dockerfile,然后vi打開(kāi)文件,開(kāi)始編輯

[root@yoyo ~]# mkdir docker-run
[root@yoyo ~]# cd docker-run/
[root@yoyo docker-run]# touch Dockerfile
[root@yoyo docker-run]# vi Dockerfile

編輯內(nèi)容如下:

# 更新pip
RUN pip install --upgrade pip 
# 工作目錄
WORKDIR /code
ADD . /code
# pip安裝依賴(lài)包
RUN pip install -r requirements.txt
# 傳遞參數(shù)
ENTRYPOINT ["pytest"]
# 默認(rèn)顯示help幫助信息
CMD ["--help"]

4. requirements.txt

requirements.txt是python的相關(guān)依賴(lài)包, 可以通過(guò)freeze命令生成

pip3 freeze >requirements.txt

[root@yoyo docker-run]# cat requirements.txt 
APScheduler==3.5.3
asn1crypto==0.24.0
atomicwrites==1.3.0
attrs==18.2.0
backports.csv==1.0.7
bcrypt==3.1.7
beautifulsoup4==4.7.1
cached-property==1.5.1
certifi==2018.11.29
cffi==1.12.3
chardet==3.0.4
cryptography==2.7
DBUtils==1.3
defusedxml==0.5.0
diff-match-patch==20181111
Django==2.1.4
django-bootstrap3==11.0.0
django-crispy-forms==1.7.2
django-formtools==2.1
django-import-export==1.2.0
django-ranged-response==0.2.0
django-reversion==3.0.3
django-simple-captcha==0.5.10
django-stdimage==4.0.1
docker==3.7.3
docker-compose==1.24.1
docker-pycreds==0.4.0
dockerpty==0.4.1
docopt==0.6.2
et-xmlfile==1.0.1
future==0.17.1
httplib2==0.12.1
idna==2.7
jdcal==1.4
jsonschema==2.6.0
more-itertools==6.0.0
mysqlclient==1.4.2.post1
odfpy==1.4.0
openpyxl==2.6.1
paramiko==2.6.0
Pillow==5.4.1
pluggy==0.6.0
progressbar2==3.39.3
py==1.7.0
pycparser==2.19
pymssql==2.1.4
PyMySQL==0.9.3
PyNaCl==1.3.0
pytest==3.6.3
python-utils==2.3.0
pytz==2018.7
PyYAML==3.13
requests==2.20.1
six==1.12.0
soupsieve==1.7.3
tablib==0.13.0
texttable==0.9.1
tzlocal==1.5.1
urllib3==1.24.1
websocket-client==0.56.0
xlrd==1.2.0
xlwt==1.3.0

5. build構(gòu)建鏡像文件

docker build 命令用于使用 Dockerfile 創(chuàng)建鏡像。OPTIONS說(shuō)明:

  1. -f :指定要使用的Dockerfile路徑;
  2. -pull :嘗試去更新鏡像的新版本;
  3. -quiet, -q :安靜模式,成功后只輸出鏡像 ID;
  4. -tag, -t: 鏡像的名字及標(biāo)簽,通常 name:tag 或者 name 格式;可以在一次構(gòu)建中為一個(gè)鏡像設(shè)置多個(gè)標(biāo)簽。

-t參數(shù)設(shè)置鏡像名稱(chēng)yoyo_pytes和tag標(biāo)簽名稱(chēng)v1,注意最后面有個(gè)點(diǎn).

docker build -t yoyo_pytest:v1 .

[root@yoyo docker-run]# docker build -t yoyo_pytest:v1 .
Sending build context to Docker daemon  11.78kB
Step 1/8 : FROM python:3.6
 ---> cfcdf565ff94
Step 2/8 : MAINTAINER yoyo  <283340479@qq.com>
 ---> Using cache
 ---> f523b919fcf9
Step 3/8 : RUN pip install --upgrade pip
 ---> Using cache
 ---> 3399b50dab4e
Step 4/8 : WORKDIR /code
 ---> Using cache
 ---> 7223a20e17fd
Step 5/8 : ADD . /code
 ---> 650b554ccd6c
Step 6/8 : RUN pip install -r requirements.txt
 ---> Running in 0e49d444f7d8

運(yùn)行過(guò)程中可以看到按步驟運(yùn)行,如:Step 1/8

運(yùn)行完成后,可以通過(guò)docker images查看生成的鏡像

[root@yoyo docker-run]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
yoyo_pytest                v1                  6b4267ce7ac4        21 seconds ago      1.02GB
[root@yoyo docker-run]#

6. run運(yùn)行容器

在當(dāng)前目錄新建一個(gè)test_h.py文件,寫(xiě)入pytest測(cè)試腳本

import pytest
def test_one():
    print("正在執(zhí)行----test_one")
    x = "this"
    assert 'h' in x
def test_two():
    print("正在執(zhí)行----test_two")
    x = "hello"
    assert x
def test_three():
    print("正在執(zhí)行----test_three")
    a = "hello"
    b = "hello world"
    assert a in b
if __name__ == "__main__":
    pytest.main(["-s", "test_h.py"])

使用docker run運(yùn)行容器

  1. -it -t讓docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上, -i則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi).
  2. -rm 容器退出時(shí),自動(dòng)清除容器。
  3. -rm選項(xiàng)不能與-d同時(shí)使用
  4. -v 將容器的工作目錄/code掛載到宿主機(jī)的$PWD,也就是當(dāng)前目錄
  5. yoyo_pytest:v1 容器名稱(chēng)和tag名稱(chēng)
  6. test_h.py 后面跟著需要執(zhí)行的腳本名稱(chēng)
[root@yoyo docker-run]# docker run -it --rm -v "$PWD":/code yoyo_pytest:v1 test_h.py  -s
================================================================== test session starts ==================================================================
platform linux -- Python 3.6.9, pytest-3.6.3, py-1.7.0, pluggy-0.6.0
rootdir: /code, inifile:
collected 3 items                                                                                                                                       
test_h.py 正在執(zhí)行----test_one
.正在執(zhí)行----test_two
.正在執(zhí)行----test_three
.
=============================================================== 
3 passed in 0.01 seconds 

到此這篇關(guān)于利用Dockerfile制作個(gè)人的鏡像文件詳細(xì)講解的文章就介紹到這了,更多相關(guān)Dockerfile 鏡像文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • K3s離線(xiàn)部署全過(guò)程

    K3s離線(xiàn)部署全過(guò)程

    部署K3s集群需關(guān)閉防火墻/SELinux,安裝Docker,配置主機(jī)解析與主機(jī)名,上傳安裝包,主節(jié)點(diǎn)安裝后調(diào)整nodeport范圍并生成Token,節(jié)點(diǎn)加入集群后將身份改為Worker,最終驗(yàn)證集群狀態(tài)
    2025-09-09
  • 本地文件如何上傳至docker容器

    本地文件如何上傳至docker容器

    這篇文章主要介紹了本地文件如何上傳至docker容器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 查看Docker容器的IP地址的四種方法

    查看Docker容器的IP地址的四種方法

    本文主要介紹了查看Docker容器的IP地址的四種方法,包括docker inspect命令、結(jié)合網(wǎng)絡(luò)名稱(chēng)、在容器內(nèi)執(zhí)行命令、docker network inspect命令這四種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • Docker開(kāi)啟安全的TLS遠(yuǎn)程連接訪(fǎng)問(wèn)方式

    Docker開(kāi)啟安全的TLS遠(yuǎn)程連接訪(fǎng)問(wèn)方式

    本篇文章給大家介紹Docker開(kāi)啟安全的TLS遠(yuǎn)程連接,重新加載docker配置方法,教大家如何建立基于TLS數(shù)字簽名的安全連接,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • docker初識(shí)之五分鐘認(rèn)識(shí)docker

    docker初識(shí)之五分鐘認(rèn)識(shí)docker

    Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。通過(guò)本文學(xué)習(xí)可以快速了解docker,本文介紹的非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-10-10
  • dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

    dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

    這篇文章主要介紹了dockerfile中ENTRYPOINT與CMD的結(jié)合使用,大家都知道CMD 與 ENTRYPOINT都是用于指定啟動(dòng)容器執(zhí)行的命令,那么他們倆有什么區(qū)別呢,本文給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-08-08
  • Docker容器中啟用SSH服務(wù)的方法步驟

    Docker容器中啟用SSH服務(wù)的方法步驟

    本文主要介紹了Docker容器中啟用SSH服務(wù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • docker容器無(wú)法ping域名問(wèn)題及解決

    docker容器無(wú)法ping域名問(wèn)題及解決

    這篇文章主要介紹了docker容器無(wú)法ping域名問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 如何使用Docker快速搭建服務(wù)器環(huán)境

    如何使用Docker快速搭建服務(wù)器環(huán)境

    這篇文章主要介紹了使用Docker快速搭建服務(wù)器環(huán)境的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 開(kāi)發(fā)者必備Docker命令小結(jié)

    開(kāi)發(fā)者必備Docker命令小結(jié)

    本文主要講解Docker環(huán)境的安裝以及Docker常用命令的使用,掌握這些對(duì)Docker環(huán)境下應(yīng)用的部署具有很大幫助,感興趣的可以了解一下
    2021-12-12

最新評(píng)論

平陆县| 营口市| 盐源县| 天祝| 鱼台县| 垦利县| 封开县| 广南县| 开阳县| 衡山县| 庄河市| 彩票| 永顺县| 米易县| 锡林浩特市| 营口市| 民丰县| 盐津县| 武义县| 吴旗县| 大新县| 怀化市| 湖南省| 静安区| 巴中市| 高碑店市| 勐海县| 鹿泉市| 茌平县| 藁城市| 铜山县| 黄平县| 托克逊县| 蒙自县| 清涧县| 旅游| 永安市| 仁化县| 绥中县| 肇东市| 长汀县|