溫馨提示×

溫馨提示×

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

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

Docker容器的模板怎么創建

發布時間:2021-12-13 11:59:56 來源:億速云 閱讀:201 作者:iii 欄目:云計算

本篇內容介紹了“Docker容器的模板怎么創建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Docker 是一款開源容器引擎,主要解決了跨環境不一致的,多環境下安裝應用所需環境慢等問題。舉幾個個例子實際項目中一般有三種環境開發,測試,正式,會存在這些問題測試環境能正常到了正式環境就有問題,通宵好幾天還不能解決,每次升級上線都難產。還有就是上線后發現單服務抗不住并發,要大量部署相同環境,也需要花費很多時間。Docker的誕生讓徹底把這些問題解決了,讓生產工作更高效。

學習Docker需要了解幾個概念鏡像,容器,倉庫,數據卷,鏡像構建,容器編排集群等等。

docker基本命令

docker version 查看docker版本

docker info 查看docker詳細信息

docker --help 查看docker命令

1 鏡像創建容器的模板,底層使用了聯合文件系統機制,當從倉庫拉取鏡像時Docker引擎檢驗到需要模塊就不會再去下載,并在此基礎上再下載安裝其他層的依賴模塊,這種機制也讓鏡像能快速下載。常用命令拉取,查找,刪除,提交。

1.1 docker images 來列出本地主機上的鏡像

docker images -a列出本地所有的鏡像

docker images -p只顯示鏡像ID

docker images --digests顯示鏡像的摘要信息

docker images --no-trunc顯示完整的鏡像信息

1.2 docker search TERM

docker search tomcat從Docker Hub上查找tomcat鏡像

1.3 docker pull [OPTIONS] NAME[:TAG] 可以從某個人的公共倉庫(包括自己是私人倉庫)拉取,如果沒有網絡,或者從其他私服獲取鏡像。

docker pull tomcat從Docker Hub上下載tomcat鏡像。等價于:docker pull tomcat:latest

1.4 docker commit -m "提交的描述信息" -a "作者" 容器ID 要創建的目標鏡像名稱:[標簽名]提交容器使之成為一個新的鏡像。

如:docker commit -m "新的tomcat" -a "lizq" f9e29e8455a5 mytomcat:1.2

1.5 docker rmi <image_id/image_name ...>

docker rmi hello-world 從Docker中刪除hello-world鏡像

docker rmi -f hello-world 從Docker中強制刪除hello-world鏡像

docker rmi -f hello-world nginx 從Docker中強制刪除hello-world鏡像和nginx鏡像

docker rmi -f $(docker images -aq) 通過docker images -aq查詢到的鏡像ID來刪除所有鏡像

2 容器動態的鏡像,通過鏡像創建的容器,一個鏡像可以生成多個容器。常用命令創建,刪除,查找,停止。

2.1 docker run [OPTIONS] IMAGE根據鏡像新建并啟動容器。IMAGE是鏡像ID或鏡像名稱

OPTIONS說明:

?--name=“容器新名字”:為容器指定一個名稱

?-d:后臺運行容器,并返回容器ID,也即啟動守護式容器

?-i:以交互模式運行容器,通常與-t同時使用

?-t:為容器重新分配一個偽輸入終端,通常與-i同時使用

?-P:隨機端口映射

?-p:指定端口映射,有以下四種格式:

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

2.2 docker ps列出當前所有正在運行的容器

docker ps -a列出所有的容器

docker ps -l列出最近創建的容器

docker ps -n 3列出最近創建的3個容器

docker ps -q只顯示容器ID

docker ps --no-trunc顯示當前所有正在運行的容器完整信息

exit退出并停止容器

Ctrl+p+q只退出容器,不停止容器

2.3 docker start 啟動一個已有的容器

2.4 docker restart 容器ID或容器名稱重新啟動容器

2.5 docker stop 優雅停止正在運行的容器 docker stop $(docker ps -aq) 批量停止

2.6 docker kill 立即停止容器中的主要進程

2.7 docker rm <container_id/contaner_name>

docker rm 容器ID或容器名稱刪除容器

docker rm -f 容器ID或容器名稱強制刪除容器

docker rm $(docker ps -a -q) 刪除多個容器

docker logs -f -t --since --tail 容器ID或容器名稱查看容器日志

如:docker logs -f -t --since=”2018-09-10” --tail=10 f9e29e8455a5

?-f : 查看實時日志

?-t : 查看日志產生的日期

?--since : 此參數指定了輸出日志開始日期,即只輸出指定日期之后的日志

?--tail=10 : 查看最后的10條日志

2.8 docker top 容器ID或容器名稱查看容器內運行的進程

2.9 docker inspect 用于查看鏡像和容器的詳細信息,默認會列出全部信息,可以通過--format參數來指定輸出的模板格式,以便輸出特定信息

2.10 docker attach 可以連接到正在運行的容器,觀察容器的運行狀況,或與容器的主進程進行交互

2.11 docker exec 容器ID進到容器內

2.12 docker cp 容器ID:容器內的文件路徑 宿主機路徑從容器內拷貝文件到宿主機.

3 倉庫分為公有倉庫和私有倉庫,倉庫存放鏡像的服務器。

數據卷即宿主機與容器之間存放數據目錄的映射,通過-v 宿主機目錄:虛擬機目錄 。作用是數據持久化,不設置會出現刪除容器,重要數據也跟著刪除。另一個作用是容器間數據同步。

4 鏡像構建通過Docker語法關鍵字創建dockerFile,再通過命令生成鏡像。其實就是通過命令文件生成鏡像。

4.1 創建數據卷

dockerrun 命令的時候,使用-v參數標記可以在容器內創建一個數據卷,多次使用-v標記可 以創建多個數據卷

docker run -dp --name testVolume -v /testVolume ubuntu:14.04

使用-v標記也可以指定掛載一個本地的已有目錄到容器中去作為數據卷

docker run -dp --name testVolume -v /src/webapp:/opt/testVolume ubuntu:1404

docker掛載數據卷的默認權限是讀寫,ro指定只讀:

docker run -dp --name web -v /src/webapp:/opt/webapp:ro ubuntu:14.04

4.2 數據卷容器

需要在容器之間共享一些持續更新的數據,最簡單的方式是使用數據卷容器,數據卷容器其實是一個普通的容器,專門用來提供數據卷供其它容器掛載

創建一個數據卷容器dbdata,并在其中創建一個數據卷掛載到/dbdata:

docker run -ti -v /dbdata --name dbdata ubuntu:14.04

接著我們可以在其他容器中使用–volumes-form來掛載dbdata容器中的數據卷,例如創建db1和db2兩個容器,并從dbdata容器掛載數據卷:

docker run -ti --volumes-from dbdata --name db1 ubuntu:14.04

docker run -ti --volumes-from dbdata --name db2 ubuntu:14.04

5 dockerFile語法

5.1 Dockerfile 由一行行命令語句組成,并且支持以 # 開頭的注釋行。

一般的,Dockerfile 分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令。

5.2 FROM 格式為 FROM <image>或FROM <image>:<tag>。

第一條指令必須為 FROM 指令。并且,如果在同一個Dockerfile中創建多個鏡像時,可以使用多個 FROM 指令(每個鏡像一次)。

5.3 MAINTAINER 格式為MAINTAINER <name> 指定維護者信息。

5.4 RUN 格式為 RUN <command> 或 RUN ["executable", "param1", "param2"]。

前者將在 shell 終端中運行命令,即 /bin/sh -c;后者則使用 exec 執行。指定使用其它終端可以通過第二種方式實現,例如 RUN ["/bin/bash", "-c", "echo hello"]。

每條 RUN 指令將在當前鏡像基礎上執行指定命令,并提交為新的鏡像。當命令較長時可以使用 \ 來換行。

5.5 CMD

支持三種格式

CMD ["executable","param1","param2"] 使用 exec 執行,推薦方式;

CMD command param1 param2 在 /bin/sh 中執行,提供給需要交互的應用;

CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認參數;

指定啟動容器時執行的命令,每個 Dockerfile 只能有一條 CMD 命令。如果指定了多條命令,只有最后一條會被執行。

如果用戶啟動容器時候指定了運行的命令,則會覆蓋掉 CMD 指定的命令。

5.6 EXPOSE 格式為EXPOSE <port> [<port>...]。

告訴 Docker 服務端容器暴露的端口號,供互聯系統使用。在啟動容器時需要通過 -P,Docker 主機會自動分配一個端口轉發到指定的端口。

5.7 ENV 格式為 ENV <key> <value>。 指定一個環境變量,會被后續 RUN 指令使用,并在容器運行時保持。

例如

ENV PG_MAJOR 9.3

ENV PG_VERSION 9.3.4

RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …

ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

5.8 ADD 格式為 ADD <src> <dest>。

該命令將復制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目錄的一個相對路徑;也可以是一個 URL;還可以是一個 tar 文件(自動解壓為目錄)。

5.9 COPY 格式為 COPY <src> <dest>。

復制本地主機的 <src>(為 Dockerfile 所在目錄的相對路徑)到容器中的 <dest>。

當使用本地目錄為源目錄時,推薦使用 COPY。

5.10 ENTRYPOINT

兩種格式:

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2(shell中執行)。

配置容器啟動后執行的命令,并且不可被 docker run 提供的參數覆蓋。

每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最后一個起效。

5.11 VOLUME 格式為 VOLUME ["/data"]。

創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放數據庫和需要保持的數據等。

5.12 USER 格式為 USER daemon。

指定運行容器時的用戶名或 UID,后續的 RUN 也會使用指定用戶。

當服務不需要管理員權限時,可以通過該命令指定運行用戶。并且可以在之前創建所需要的用戶,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要臨時獲取管理員權限可以使用 gosu,而不推薦 sudo。

5.13 WORKDIR 格式為 WORKDIR /path/to/workdir。

為后續的 RUN、CMD、ENTRYPOINT 指令配置工作目錄。

可以使用多個 WORKDIR 指令,后續命令如果參數是相對路徑,則會基于之前命令指定的路徑。例如

WORKDIR /a

WORKDIR b

WORKDIR c

RUN pwd

則最終路徑為 /a/b/c。

5.14 ONBUILD 格式為 ONBUILD [INSTRUCTION]。

配置當所創建的鏡像作為其它新創建鏡像的基礎鏡像時,所執行的操作指令。

例如,Dockerfile 使用如下的內容創建了鏡像 image-A。

[...]

ONBUILD ADD . /app/src

ONBUILD RUN /usr/local/bin/python-build --dir /app/src

[...]

如果基于 image-A 創建新的鏡像時,新的Dockerfile中使用 FROM image-A指定基礎鏡像時,會自動執行ONBUILD 指令內容,等價于在后面添加了兩條指令。

FROM image-A

#Automatically run the following

ADD . /app/src

RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 指令的鏡像,推薦在標簽中注明,例如 ruby:1.9-onbuild

6 容器編排即有些生產環境有大量容器需要維護,重復操作也很多。通過docker-compose對容器批量操作,高效,安全的維護容器。

“Docker容器的模板怎么創建”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女