偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用 Dockerfile 創(chuàng)建自定義 Docker 鏡像

開發(fā)
在這份指南中,我們將看到 Dockerfile 的簡(jiǎn)要介紹以及如何在 Linux 中使用 Dockerfile 來自動(dòng)的 創(chuàng)建自定義 Docker 鏡像 。

在這份指南中,我們將看到 Dockerfile 的簡(jiǎn)要介紹以及如何在 Linux 中使用 Dockerfile 來自動(dòng)的 創(chuàng)建自定義 Docker 鏡像 。

什么是 Dockerfile ?

Dockerfile 是附有構(gòu)建 Docker 鏡像說明的易于理解的文本文件。它囊括了用戶在創(chuàng)建鏡像時(shí)可以調(diào)用的所有命令。

我們可以使用 Dockerfile 創(chuàng)建自定義的鏡像??梢酝ㄟ^ Docker Hub 分享的自定義 Docker 鏡像。

如果你還不知道,Docker Hub 是 Docker 提供的托管存儲(chǔ)庫服務(wù),用于團(tuán)隊(duì)查找和共享容器鏡像,當(dāng)然世界上任何人也都可以訪問。

想象一下,早期如果我們想用 Nginx,我們要通過很多步驟,才能安裝和配置好 Nginx 。得益于 Docker Hub ,現(xiàn)在我們可以在幾分鐘內(nèi),下載并運(yùn)行 Nginx 的預(yù)置容器鏡像。

Nginx Docker Image In Dockerhub

Nginx Docker Image In Dockerhub

運(yùn)行如下命令從 Docker Hub 上拉取 Nginx 鏡像:

    # docker pull nginx

一旦我們拉取了 Docker 鏡像,可以運(yùn)行如下命令使用它:

    # docker run -it -d -p 8080:8080 nginx

就這樣,十分簡(jiǎn)單!

Docker Hub 上有超過十萬個(gè)來自軟件供應(yīng)商、開源項(xiàng)目以及社區(qū)的容器鏡像。

你可以從 Docker Hub 上下載你選擇的鏡像,并且使用上面的命令開始使用它。

理解 Dockerfile 格式

Docker 可以讀取 Dockerfile 中的 指令 來自動(dòng)的創(chuàng)建鏡像。

典型的 Dockerfile 包含如下指令:

1、FROM —— 這會(huì)設(shè)置容器的基礎(chǔ)鏡像。

例如:

    FROM ubuntu:22.04

這會(huì)將容器的基礎(chǔ)鏡像設(shè)置為 Ubuntu 。如果 ‘22.04’ 這個(gè)標(biāo)志沒有特別指明,則會(huì)設(shè)為最新版本(latest)。

2、LABEL —— 這是用來明確鏡像的元數(shù)據(jù)信息的鍵值對(duì)。

例如:

    LABEL ENV=“DEVELOPMENT”

3、RUN —— 這會(huì)在基礎(chǔ)鏡像中執(zhí)行指令并創(chuàng)建一個(gè)新層。

例如:

    RUN apt-get update
RUN apt-get install tomcat

4、CMD —— 這用來設(shè)置容器啟動(dòng)后先執(zhí)行的命令。

例如:

    CMD ["java", "-jar", "app.jar"]

5、EXPOSE —— 設(shè)置用于訪問容器的端口。容器將會(huì)監(jiān)聽該端口。我們可以用來獲得輸出。

例如:

    EXPOSE 8080

6、``MAINTAINER` —— 顯示創(chuàng)建鏡像作者的信息。

例如:

    MAINTAINER info@ostechnix.com

7、ENV —— 用來設(shè)置環(huán)境變量的鍵值對(duì)。這些變量在鏡像創(chuàng)建的時(shí)候設(shè)置,并在容器創(chuàng)建好后可以使用。

例如:

    ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

8、COPY —— 用來拷貝本地文件至容器中。

例如:

    COPY /target/devops.jar devops.jar

9、ADD —— 具有與拷貝相同的功能,不過更進(jìn)一步還可以提取本地的 tar 文件或者從 URL 拷貝文件。

例如:

    ADD devops.tar.xz / .
ADD http://example.com/abc.git /usr/local/devops/

10、ENTRYPOINT? —— 用來設(shè)置鏡像的主要命令。與 CMD 指令功能相同。不同的是 ENTRYPOINT 中的指令不會(huì)被重寫。

例如:

    ENTRYPOINT ["java", "-jar", "app.jar"]

11、VOLUME —— 該指令用來創(chuàng)建指定位置的掛載點(diǎn)。

例如:

    VOLUME /app/devops

12、USER —— 將設(shè)置運(yùn)行鏡像并使用的用戶名稱以及用戶組。

例如:

    USER dhruv
USER admin

13、WORKDIR —— 這會(huì)設(shè)置工作目錄。如果目錄不存在,則會(huì)創(chuàng)建。

例如:

    WORKDIR /var/lib/

這是一個(gè) Dockerfile 的樣本,可以參考一下:

    FROM ubuntu:latest
MAINTAINER Senthilkumar Palani "info@ostechnix.com"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ jammy universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]

我將向你展示創(chuàng)建一個(gè) Dockerfile 、創(chuàng)建并使用鏡像的簡(jiǎn)單例子。

創(chuàng)建一個(gè) Dockerfile

創(chuàng)建一個(gè)名為 dockerfile 的文件:

    # nano dockerfile

添加下面幾行命令。我們將更新并安裝 vim? 和 curl 包:

    FROM alpine
RUN apk update
RUN apk add vim
RUN apk add curl

Dockerfile For Alpine Linux

Dockerfile For Alpine Linux

按下 CTRL+O? 和 CTRL+X 鍵保存文件并關(guān)閉。

現(xiàn)在 Dockerfile 已經(jīng)就位。讓我們繼續(xù),用該 Dockerfile 創(chuàng)建一個(gè)鏡像。

注意: 如果你在使用 Docker 桌面版?,你可以以一個(gè)普通用戶運(yùn)行 docker 命令。

使用 Dockerfile 創(chuàng)建 Docker 鏡像

只需運(yùn)行以下命令,便可以使用 Dockerfile 創(chuàng)建 Docker 鏡像:

    # docker build -t alpine .

請(qǐng)注意最后有一個(gè) 點(diǎn)(.)。

輸出示例:

    [+] Building 51.2s (8/8) FINISHED                                               
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 104B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/alpine:latest 38.8s
=> [1/4] FROM docker.io/library/alpine@sha256:7580ece7963bfa863801466c0a 2.7s
=> => resolve docker.io/library/alpine@sha256:7580ece7963bfa863801466c0a 0.0s
=> => sha256:d7d3d98c851ff3a95dbcb70ce09d186c9aaf7e25d48 1.47kB / 1.47kB 0.0s
=> => sha256:530afca65e2ea04227630ae746e0c85b2bd1a179379 2.80MB / 2.80MB 2.4s
=> => sha256:7580ece7963bfa863801466c0a488f11c86f85d9988 1.64kB / 1.64kB 0.0s
=> => sha256:9b2a28eb47540823042a2ba401386845089bb7b62a9637d 528B / 528B 0.0s
=> => extracting sha256:530afca65e2ea04227630ae746e0c85b2bd1a179379cbf2b 0.2s
=> [2/4] RUN apk update 4.3s
=> [3/4] RUN apk add vim 3.5s
=> [4/4] RUN apk add curl 1.3s
=> exporting to image 0.4s
=> => exporting layers 0.4s
=> => writing image sha256:14231deceb6e8e6105d2e551799ff174c184e8d9be8af 0.0s
=> => naming to docker.io/library/alpine 0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

按照上面的命令, Docker 會(huì)通過保存在當(dāng)前工作目錄中的 Dockerfile 中的命令開始自動(dòng)的創(chuàng)建鏡像。還記得我們?cè)?Dockerfile 中保存的 apk update、apk add vim? 和 apk add curl 命令嗎?這些命令也將會(huì)自動(dòng)的執(zhí)行。

如果 Dockerfile 保存在其他目錄,你可以使用 -f 標(biāo)志來指定路徑,例如:

    # docker build -f /path/to/a/Dockerfile .

創(chuàng)建好鏡像后,我們可以使用如下命令運(yùn)行它:

    # docker run -it alpine

該命令會(huì)啟動(dòng)這個(gè) Alpine 容器并連接到它。

    / # uname -a
Linux 8890fec82de8 5.10.104-linuxkit #1 SMP Thu Mar 17 17:08:06 UTC 2022 x86_64 Linux
/ # cat /etc/alpine-release
3.16.1
/ #

如果你使用 Docker 桌面版,你可以通過容器Containers標(biāo)簽頁界面來查看運(yùn)行中的容器。

View Containers In Docker Desktop

View Containers In Docker Desktop

這就是使用 Dockerfile 構(gòu)建自定義容器映像的方式。

我們僅僅講了基礎(chǔ)內(nèi)容。你可以用 Dockerfile 做到很多東西。建議你參考一下官方 Dockerfile 參考 ,以了解更多內(nèi)容。

責(zé)任編輯:未麗燕 來源: Linux中國(guó)
相關(guān)推薦

2015-02-12 15:33:43

微信SDK

2021-07-15 16:41:21

Swift查詢函數(shù)

2021-06-17 06:52:37

C#自定義異常

2010-08-03 16:13:01

FlexBuilder

2019-12-02 21:29:45

Keras神經(jīng)網(wǎng)絡(luò)TensorFlow

2022-04-14 06:20:25

GNOME桌面應(yīng)用

2022-05-07 10:22:32

JavaScript自定義前端

2024-06-03 10:00:51

Vue 3語法插槽

2024-03-06 18:11:06

Docker鏡像技術(shù)

2013-06-27 11:10:01

iOS開發(fā)自定義UISlider

2021-05-13 23:54:12

DockerDockerfile鏡像

2010-10-20 16:07:48

SQL用戶自定義角色

2013-05-02 14:08:18

2022-05-27 07:51:07

自定義無序列表CSS

2012-05-10 11:34:04

Windows數(shù)據(jù)庫

2009-06-23 11:35:44

JSF的Naviati

2019-12-25 11:47:27

LinuxFVWM

2022-01-14 09:17:13

PythonAPISIX插件

2010-10-25 16:05:07

oracle自定義函數(shù)

2021-07-16 11:00:40

Django用戶模型Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)