欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Dockerfile制作個人的鏡像文件詳細講解

 更新時間:2023年06月28日 09:27:37   作者:熱愛跑步的恒川  
Docker是一個開源的應用容器引擎,Dockerfile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構成的腳本,本文將給大家詳細介紹如何利用Dockerfile制作個人的鏡像文件,感興趣的同學可以借鑒參考

1. Dockerfile簡介

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

Dockerfile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構成的腳本。

Docker構建三步曲:

  • 編寫dockerfile文件
  • docker build 構建image鏡像文件
  • docker run 運行容器

2. Dockerfile相關指令

Dockerfile 是一個包含創(chuàng)建鏡像所有命令的文本文件,通過docker build命令可以根據 Dockerfile 的內容構建鏡像,
在介紹如何構建之前先介紹下 Dockerfile 的基本語法結構。

Dockerfile 有以下指令選項:

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

3. Dockerfile編寫

在當前目錄新建一個文件夾docker-run, cd進入到文件夾,touch新建一個Dockerfile,然后vi打開文件,開始編輯

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

編輯內容如下:

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

4. requirements.txt

requirements.txt是python的相關依賴包, 可以通過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構建鏡像文件

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

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

-t參數設置鏡像名稱yoyo_pytes和tag標簽名稱v1,注意最后面有個點.

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

運行過程中可以看到按步驟運行,如:Step 1/8

運行完成后,可以通過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運行容器

在當前目錄新建一個test_h.py文件,寫入pytest測試腳本

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運行容器

  1. -it -t讓docker分配一個偽終端并綁定到容器的標準輸入上, -i則讓容器的標準輸入保持打開.
  2. -rm 容器退出時,自動清除容器。
  3. -rm選項不能與-d同時使用
  4. -v 將容器的工作目錄/code掛載到宿主機的$PWD,也就是當前目錄
  5. yoyo_pytest:v1 容器名稱和tag名稱
  6. test_h.py 后面跟著需要執(zhí)行的腳本名稱
[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 

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

相關文章

  • Docker 搭建lamp應用實例詳解

    Docker 搭建lamp應用實例詳解

    這篇文章主要介紹了Docker 搭建lamp應用實例詳解的相關資料,這里對搭建 LAMP的步驟做了詳細介紹,需要的朋友可以參考下
    2016-11-11
  • Docker拉取鏡像的完整步驟

    Docker拉取鏡像的完整步驟

    這篇文章主要給大家介紹了關于Docker拉取鏡像的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Docker具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • centos6使用docker部署zookeeper操作示例

    centos6使用docker部署zookeeper操作示例

    這篇文章主要介紹了centos6使用docker部署zookeeper操作,結合實例形式分析了centos6平臺使用docker部署zookeeper相關命令與使用技巧,需要的朋友可以參考下
    2020-02-02
  • docker如何打包前端并運行完整步驟詳解

    docker如何打包前端并運行完整步驟詳解

    這篇文章主要介紹了使用Vue3和Vite1開發(fā)前端項目的過程,包括項目啟動、開發(fā)服務器運行、構建生產環(huán)境以及使用Docker部署,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • 如何使用docker搭建upload-labs

    如何使用docker搭建upload-labs

    upload-labs是一個使用php語言編寫的,專門收集滲透測試和CTF中遇到的各種上傳漏洞的靶場,旨在幫助大家對上傳漏洞有一個全面的了解,本文給大家介紹使用 Docker 搭建 upload-labs 的步驟,感興趣的朋友一起看看吧
    2024-03-03
  • docker運行PostgreSQL數據庫維護執(zhí)行腳本備份數據庫與更新表結構的方法

    docker運行PostgreSQL數據庫維護執(zhí)行腳本備份數據庫與更新表結構的方法

    這篇文章主要介紹了docker運行PostgreSQL數據庫維護,執(zhí)行腳本備份數據庫與更新表結構,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • docker簡單安裝部署mysql并配置遠程連接

    docker簡單安裝部署mysql并配置遠程連接

    使用docker部署mysql,可以省去mysql的安裝配置過程,下面這篇文章主要給大家介紹了關于docker簡單安裝部署mysql并配置遠程連接的相關資料,需要的朋友可以參考下
    2023-06-06
  • 使用docker部署hbase的方法

    使用docker部署hbase的方法

    這篇文章主要介紹了使用docker部署hbase的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Docker容器的網絡管理和網絡隔離的實現(xiàn)

    Docker容器的網絡管理和網絡隔離的實現(xiàn)

    這篇文章主要介紹了Docker容器的網絡管理和網絡隔離的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Docker保存鏡像和導入鏡像文件完整圖文教程

    Docker保存鏡像和導入鏡像文件完整圖文教程

    這篇文章主要給大家介紹了關于Docker保存鏡像和導入鏡像文件的完整圖文教程,適用于備份、遷移和版本控制等場景,文中通過代碼及圖文介紹的非常詳細,需要的朋友可以參考下
    2024-12-12

最新評論