亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker入門教程之拉取/創(chuàng)建鏡像以及運行和管理容器

 更新時間:2025年08月12日 10:19:14   作者:Mr.Ants  
在拉取鏡像的過程中,由于網(wǎng)絡(luò)問題、架構(gòu)問題或鏡像找不到等原因,可能會遇到一些困難,這篇文章主要介紹了Docker入門教程之拉取/創(chuàng)建鏡像以及運行和管理容器的相關(guān)資料,需要的朋友可以參考下

寫在前面:

本篇簡單介紹一下如何入手 Docker,從 創(chuàng)建/拉取 鏡像,再到運行和管理容器,還包括導(dǎo)出容器等操作。這里先貼一下官方的文檔地址:

Docker Docs:https://docs.docker.com/

一、Docker 介紹

作為一個開源的應(yīng)用容器引擎,Docker 可以讓開發(fā)者將應(yīng)用以及應(yīng)用的依賴打包到一個可移植的容器中,然后發(fā)布到任何安裝了 Docker 的服務(wù)器上運行。這些容器就像一個個輕量級的虛擬機,但與傳統(tǒng)虛擬機相比,Docker 容器更加高效、快速和資源友好。

主要特點:

  1. 輕量級

    Docker 容器共享主機內(nèi)核,不需要像虛擬機那樣模擬完整的操作系統(tǒng),因此啟動速度極快,通常在幾秒鐘內(nèi)就能啟動。
    占用的資源少,多個容器可以在同一臺服務(wù)器上高效運行,提高了服務(wù)器的利用率。
  2. 可移植性

    由于容器包含了應(yīng)用及其所有依賴,所以可以在不同的環(huán)境中輕松遷移,無論是從開發(fā)環(huán)境到測試環(huán)境,還是從本地服務(wù)器到云服務(wù)器。
    保證了應(yīng)用在不同環(huán)境中的一致性運行,減少了因環(huán)境差異導(dǎo)致的問題。
  3. 高效性

    容器的快速啟動和停止特性使得應(yīng)用的部署和擴展變得非常容易。
    可以根據(jù)需求快速創(chuàng)建和銷毀容器,實現(xiàn)彈性的資源分配。
  4. 隔離性

    每個容器都有自己獨立的文件系統(tǒng)、網(wǎng)絡(luò)和進程空間,實現(xiàn)了應(yīng)用之間的隔離。
    一個容器中的問題不會影響到其他容器,提高了系統(tǒng)的穩(wěn)定性和安全性。

核心組成:

  1. 鏡像(Image)

    是一個只讀的模板,包含了應(yīng)用程序及其所有依賴(如庫、框架、配置文件等)。
    可以從 Docker 倉庫中下載或自己創(chuàng)建鏡像,然后基于鏡像創(chuàng)建容器。
  2. 容器(Container)

    是由鏡像創(chuàng)建的運行實例,是一個獨立的運行環(huán)境。
    可以對容器進行啟動、停止、刪除等操作,也可以在容器中運行應(yīng)用程序。
  3. 倉庫(Repository)

    用于存儲和分發(fā) Docker 鏡像,可以是公共倉庫(如 Docker Hub),也可以是私有倉庫。
    開發(fā)者可以將自己創(chuàng)建的鏡像推送到倉庫中,以便在不同的環(huán)境中使用。

使用場景

  1. 應(yīng)用部署

    簡化了應(yīng)用的部署過程,提高了部署的效率和可靠性。
    可以快速將應(yīng)用部署到多臺服務(wù)器上,實現(xiàn)大規(guī)模的應(yīng)用部署。
  2. 微服務(wù)架構(gòu)

    適合用于構(gòu)建微服務(wù)架構(gòu),每個微服務(wù)可以運行在一個獨立的容器中。
  3. 開發(fā)環(huán)境一致性

    保證了開發(fā)、測試和生產(chǎn)環(huán)境的一致性,減少了因環(huán)境差異導(dǎo)致的問題。
    開發(fā)者可以在本地使用與生產(chǎn)環(huán)境相同的容器來進行開發(fā)和測試。

二、創(chuàng)建鏡像

這里介紹幾種常見的創(chuàng)建鏡像的方式,大家可以根據(jù)自己需求選擇。

2.1 從 Docker Hub 拉取鏡像

第一步:登錄/注冊 Docker Hub

如果沒有則先去官網(wǎng)(https://hub.docker.com/)注冊一個,然后登錄即可(Desktop版圖形化操作即可,普通的則打開終端輸入 “ docker login ”)。

第二步:查找所需的鏡像

可以直接在官網(wǎng)去搜索即可,這里寫幾個常用的鏡像:

  1. Alpine:基于輕量級 Linux 操作系統(tǒng)的鏡像,體積非常小巧,只有 5MB 左右,提供了一些基本的工具和包,如 bash、curl、gcc 等,適合構(gòu)建輕量級的容器。
  2. Ubuntu:基于 Debian 的 Linux 操作系統(tǒng),常用版本(LTS):22.04、20.04、18.04;
  3. Nginx:廣泛使用的 Web 服務(wù)器軟件,也可用作反向代理、負載均衡和 HTTP 緩存服務(wù)器。結(jié)合其他技術(shù)如 WordPress 等,可以用于構(gòu)建高性能的 Web 應(yīng)用程序。
  4. Redis:基于內(nèi)存的數(shù)據(jù)存儲系統(tǒng),常用于實時數(shù)據(jù)緩存、排名、計數(shù)器、分布式會話管理等方面,具有快速、可靠且易于使用的特點,適合構(gòu)建可擴展的分布式系統(tǒng)。
  5. MySQL:流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),支持多數(shù)據(jù)類型、多連接和高性能,是開發(fā)人員構(gòu)建數(shù)據(jù)庫應(yīng)用程序的常用選擇之一。
  6. Node.js:基于 JavaScript 的后端服務(wù)器技術(shù),支持高性能、非阻塞 I/O 和事件驅(qū)動編程,許多開發(fā)者使用它來構(gòu)建 Node.js 的 Web 應(yīng)用程序和 Web 服務(wù)。
  7. Tomcat:一個流行的 Java Web 應(yīng)用服務(wù)器,用于運行 Java Web 應(yīng)用程序3。
  8. CentOS:一種常用的 Linux 發(fā)行版鏡像,提供了穩(wěn)定的操作系統(tǒng)環(huán)境,適合用于各種服務(wù)器應(yīng)用的部署。

第三步:拉取所需鏡像

在命令行中輸入docker pull [鏡像名稱]:[標簽]。

如果不指定標簽,默認會拉取 latest(最新)標簽的鏡像。

例如,要拉取官方的 Ubuntu 鏡像,可輸入

docker pull ubuntu # 最新版
docker pull ubuntu:22.04 # 特定版

后續(xù):可創(chuàng)建自己的鏡像倉庫

登錄上 Docker Hub,在存儲庫頁面上,選擇創(chuàng)建存儲庫。

將其進行命名,比如<you-username>/my-Privateal-repo,將可見性設(shè)置為私有。

配置完自己鏡像后,可以上傳到倉庫。上傳鏡像之前,先對鏡像進行標記:

docker tag my_image:latest <you-username>/my-Privateal-repo

使用 docker push 命令將標記后的鏡像上傳到私有倉:

docker push <you-username>/my-private-repo

當(dāng)然,可以在另外機器上或使用 pull 拉取驗證鏡像。

2.2 用 Dockerfile 創(chuàng)建鏡像

Dockerfile 是一個文本文件,包含了一系列指令,用于描述如何構(gòu)建一個 Docker 鏡像。這些指令會按照順序依次執(zhí)行,最終生成一個包含特定應(yīng)用及其依賴的鏡像,使用 Dockerfile 創(chuàng)建鏡像是一種常見且高效的方式,

常見指令:

  1. FROM:指定基礎(chǔ)鏡像,它是構(gòu)建新鏡像的起點。例如:FROM ubuntu:22.04
  2. RUN:在鏡像構(gòu)建過程中執(zhí)行命令。可以用于安裝軟件包、配置環(huán)境等。例如:RUN apt-get update && apt-get install -y python3
  3. COPY 或 ADD:將本地文件或目錄復(fù)制到鏡像中。例如:COPY. /app將當(dāng)前目錄下的所有文件復(fù)制到鏡像中的/app目錄。
  4. WORKDIR:設(shè)置工作目錄。例如:WORKDIR /app將后續(xù)命令的工作目錄設(shè)置為/app。
  5. CMD 或 ENTRYPOINT:指定容器啟動時要執(zhí)行的命令。例如:CMD ["python", "app.py"]表示啟動容器時運行python app.py命令。

示例:

先編寫一個 app.py 文件:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Docker!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

再創(chuàng)建一個 Dockerfile 文件:

FROM python:3.10

WORKDIR /app

COPY..

RUN pip install flask

EXPOSE 5000

CMD ["python", "app.py"]

上面的 Dockerfile 中,設(shè)置了工作目錄,拷貝當(dāng)前目錄文件到鏡像內(nèi),并安裝了 Flask 庫,暴露容器的 5000 端口,最后在容器啟動后運行命令啟動程序。

接下來只需要在包含 Dockerfile 和 app.py 文件的目錄下,運行構(gòu)建鏡像即可:

docker build -t myflaskapp:latest .

其中 -t 參數(shù)指定鏡像的名稱和標簽,最后的 . 表示 Dockerfile 所在的目錄。

構(gòu)建鏡像后,啟動容器即可:

docker run -p 5000:5000 myflaskapp:latest

這里將容器的 5000 端口映射到主機的 5000 端口,這樣就可以在瀏覽器中訪問http://localhost:5000 來查看 Flask 應(yīng)用的輸出。

Dockerfile 的優(yōu)勢:

  1. Dockerfile 本身就是一種文檔,它清晰地展示了鏡像的構(gòu)建過程和包含的內(nèi)容。其他開發(fā)人員可以更容易理解和使用這個鏡像;
  2. 可以根據(jù)具體需求自定義鏡像的內(nèi)容和配置??梢赃x擇不同的基礎(chǔ)鏡像、安裝特定的軟件包、設(shè)置環(huán)境變量等,滿足各種復(fù)雜的應(yīng)用場景;
  3. 可以確保每次構(gòu)建的鏡像都是一致的,無論在哪個環(huán)境中構(gòu)建。

存在的不足:

  1. 當(dāng)構(gòu)建復(fù)雜的鏡像時,Dockerfile 可能會變得冗長和復(fù)雜,需要合理組織指令和管理依賴關(guān)系;
  2. 如果配置中使用了不可信的源或安裝了未知的軟件包,可能會引入安全風(fēng)險。需要謹慎選擇基礎(chǔ)鏡像和軟件源;
  3. 當(dāng)基礎(chǔ)鏡像較大或者需要下載大量的軟件包時,構(gòu)建過程可能會比較耗時,并且依賴于良好的網(wǎng)絡(luò)連接。

之前我們遇到過,當(dāng)配置的軟件源更新或者網(wǎng)絡(luò)原因等,導(dǎo)致無法構(gòu)建甚至版本控制不理想等問題。所以對于相對復(fù)雜的鏡像環(huán)境,還是不建議這樣構(gòu)建,直接傳輸鏡像會更穩(wěn)定。

2.3 導(dǎo)出的鏡像文件直接導(dǎo)入

Docker 支持直接把容器導(dǎo)出成 tar 的壓縮文件,然后從這個文件導(dǎo)入鏡像,即可完美復(fù)刻容器的環(huán)境和內(nèi)容。

1. 找出要導(dǎo)出容器的 名稱 或 ID

docker ps # 會列出正在運行的容器
docker ps -a # 會列出所有的容器

2. 導(dǎo)出容器到 .tar 文件

docker export container_name > container.tar

后面的文件名可以自己指定

3. 在目標電腦上導(dǎo)入鏡像

docker import container.tar new_image_name:tag

其中 new_image_name 是新鏡像的名稱,tag 是標簽(可選)。

這種方法的好處就是:對于特定狀態(tài)的容器,可以快速地在不同環(huán)境中進行遷移,無需重新構(gòu)建鏡像。如果目標環(huán)境沒有網(wǎng)絡(luò)連接或者網(wǎng)絡(luò)受限,這種方式可以避免從遠程倉庫拉取鏡像的問題。

當(dāng)然,與使用 Dockerfile 構(gòu)建的鏡像不同,通過這種方式導(dǎo)入的鏡像沒有構(gòu)建歷史記錄。這可能會在一些需要追蹤構(gòu)建過程或進行調(diào)試的情況下帶來不便。

三、運行和管理容器

3.1 命令行運行

可以基于之前生成的鏡像來啟動容器,當(dāng)然一個鏡像可以啟動多個容器,但是一個容器一定是基于某個鏡像的。命令比較簡單,這里就著重給大家介紹幾個常用的配置。

1. 分離模式

以分離模式(detached mode)運行容器,即容器在后臺運行,不會將容器的輸出打印到終端。

docker run -d my_image

2. 映射端口

將主機的 某個 端口映射到容器的 指定 端口,比如 8080-80,這樣可以通過訪問主機的 8080 端口來訪問容器內(nèi)運行在 80 端口的服務(wù)。

docker run -p 8080:80 my_image

3. 容器命名

為容器命名,方便后續(xù)對該容器進行管理和識別。不寫則會隨機生成,可用 docker ps -a 查找。

docker run --name my_container my_image

4. 掛載目錄

將主機上的指定目錄掛載到容器內(nèi)的指定目錄,實現(xiàn)數(shù)據(jù)持久化,并且兩側(cè)是同步的。

docker run --name my_container -v /host/data:/container/data my_image

5. 設(shè)置環(huán)境變量

設(shè)置環(huán)境變量和值,容器內(nèi)的應(yīng)用可以讀取這個環(huán)境變量。

docker run --name my_container -e MY_ENV_VARIABLE=value my_image

6. 限制內(nèi)存

限制容器使用的內(nèi)存,防止容器過度占用主機資源。(Windows 下可能不行,得改 WSL2配置)

docker run --name my_container --memory 512m my_image

7. 限制核心

限制容器最多使用主機 CPU 核心數(shù)。(Windows 下可能不行,得改 WSL2配置)

docker run --name my_container --cpus 0.5 my_image

8. 連接網(wǎng)絡(luò)

將容器連接到 Docker 網(wǎng)絡(luò),如果該網(wǎng)絡(luò)不存在,Docker 會自動創(chuàng)建。這樣可以方便容器之間的通信和網(wǎng)絡(luò)隔離。(當(dāng)然,網(wǎng)絡(luò)模式有很多種,我的另一篇有詳細介紹)

docker run --name my_container --network my_network my_image

9. 退出重啟

設(shè)置容器的自動重啟策略為總是在退出時自動重啟。這在容器因某些原因意外退出時很有用,可以確保服務(wù)的連續(xù)性。

docker run --name my_container --restart always my_image

容器開啟后,就可以運行程序了,當(dāng)然可以打開新的終端,輸入命令進入到容器內(nèi)部:

   docker exec -it [容器名稱或 ID] /bin/bash

這里的 -i 表示允許交互,-t 表示分配一個偽終端。這樣就可以進入容器并啟動一個 bash shell。

想退出用 exit 即可,但是退出后容器默認會在后臺運行。

停止容器:

docker stop [容器名稱或 ID]

發(fā)送一個 SIGTERM 信號給容器,讓容器內(nèi)的主進程有機會進行優(yōu)雅的關(guān)閉。如果容器在一段時間內(nèi)(默認是 10 秒)沒有停止,Docker 會發(fā)送一個 SIGKILL 信號強制停止容器。

刪除容器:

docker rm [容器名稱或 ID]

刪除一個已停止的容器。如果容器正在運行,需要先停止容器才能刪除。

docker rm -f [容器名稱或 ID]

強制刪除一個正在運行的容器。使用這個命令時要注意,可能會導(dǎo)致數(shù)據(jù)丟失或其他問題。

查看容器日志:

docker logs [容器名稱或 ID]

查看容器的日志輸出??梢允褂?code>-f參數(shù)來實時跟蹤日志輸出。

重啟容器:

docker restart [容器名稱或 ID]

復(fù)制文件:

docker cp [源路徑] [容器名稱或 ID]:[目標路徑]

將本地文件或目錄復(fù)制到容器中。

docker cp [容器名稱或 ID]:[源路徑] [目標路徑]

將容器中的文件或目錄復(fù)制到本地。

3.2 Docker Compose

Docker Compose 是一個用于定義和運行多容器應(yīng)用程序的工具,它是開啟精簡高效的開發(fā)和部署體驗的關(guān)鍵??梢砸淮涡詥踊蛲V苟鄠€相關(guān)容器,提高開發(fā)和調(diào)試效率。

可以在單個易于理解的 YAML 配置文件中輕松管理服務(wù)、網(wǎng)絡(luò)和卷。然后,通過一個命令,就可以從配置文件中創(chuàng)建并啟動所有服務(wù)。

注意,適用于多容器和復(fù)雜管理的情況,容器較少的情況下就沒有必要了。

使用之前需要安裝,這里不具體介紹,根據(jù)官方文檔即可。可以用此命令查看:

使用需要創(chuàng)建一個 docker-compose.yml 文件,在文件中定義服務(wù)(容器)、網(wǎng)絡(luò)、卷等。

這里展示一個示例,包含一個 Web 服務(wù)器(Nginx)和一個后端應(yīng)用(假設(shè)是一個 Python Flask 應(yīng)用):

services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      -./nginx_config:/etc/nginx/conf.d
    networks:
      - mynetwork

  app:
    build:.
    command: python app.py
    volumes:
      - app_data:/app/data
    networks:
      - mynetwork
    environment:
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=mydb
      - DB_USER=myuser
      - DB_PASSWORD=mypassword

  db:
    image: postgres
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword
      - POSTGRES_DB=mydb
    networks:
      - mynetwork

volumes:
  app_data:
  db_data:

networks:
  mynetwork:
    driver: bridge

上面配置中,通過 networks 部分定義了一個名為 mynetwork 的網(wǎng)絡(luò),類型為 bridge。三個服務(wù)(web、app 和 db)都連接到這個自定義網(wǎng)絡(luò),使得它們可以通過服務(wù)名稱相互通信。

定義了兩個卷 app_data 和 db_data。web 服務(wù)將本地的 ./nginx_config 目錄掛載到容器內(nèi)的 /etc/nginx/conf.d,用于配置 Nginx。

app 服務(wù)將卷 app_data 掛載到容器內(nèi)的 /app/data,用于數(shù)據(jù)存儲。db 服務(wù)將卷 db_data 掛載到容器內(nèi)的 /var/lib/postgresql/data,用于 PostgreSQL 數(shù)據(jù)庫的數(shù)據(jù)存儲。

四、總結(jié)

上面詳細介紹了 Docker 的基本操作,涵蓋了生成鏡像、運行容器以及管理容器等多方面內(nèi)容。然而,Docker 作為一款功能極為強大的軟件,其能力遠不止于此。

在容器間的交互方面,Docker 支持容器間的加密通訊,確保數(shù)據(jù)在不同容器之間傳輸?shù)陌踩院捅C苄?。通過加密機制,敏感信息得以在復(fù)雜的容器化環(huán)境中安全流轉(zhuǎn)。

同時,Docker 擁有豐富的插件功能。例如,某些插件可以實現(xiàn)更高效的存儲管理,優(yōu)化容器對存儲資源的利用;還有些插件能夠增強網(wǎng)絡(luò)配置的靈活性,為容器間的通訊提供更多定制化的選項。此外,插件還可以與其他工具和技術(shù)進行集成,進一步提升 Docker 在不同場景下的適用性和實用性。

官方文檔內(nèi)容也比較多,大家按需學(xué)習(xí)即可。

到此這篇關(guān)于Docker入門教程之拉取/創(chuàng)建鏡像以及運行和管理容器的文章就介紹到這了,更多相關(guān)Docker拉取創(chuàng)建鏡像及運行和管理容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Dockerfile文件編寫實戰(zhàn)練習(xí)及注意事項

    Dockerfile文件編寫實戰(zhàn)練習(xí)及注意事項

    Dockerfile?是一個用于構(gòu)建?Docker?鏡像的文本文件,通過一系列指令來定義鏡像的構(gòu)建過程,這篇文章主要介紹了Dockerfile文件編寫實戰(zhàn)練習(xí)及注意事項的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • docker-compose搭建mongodb、mysql的詳細過程

    docker-compose搭建mongodb、mysql的詳細過程

    這篇文章主要介紹了docker-compose搭建mongodb、mysql的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Docker容器網(wǎng)絡(luò)更改的實現(xiàn)

    Docker容器網(wǎng)絡(luò)更改的實現(xiàn)

    本文主要介紹了Docker容器網(wǎng)絡(luò)更改的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Windows(Win11)如何安裝Docker(Docker Desktop)

    Windows(Win11)如何安裝Docker(Docker Desktop)

    這篇文章主要介紹了Windows(Win11)如何安裝Docker(Docker Desktop),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • docker部署jupyter的詳細教程

    docker部署jupyter的詳細教程

    這篇文章主要介紹了docker部署jupyter的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • Docker部署XXL-JOB的示例代碼

    Docker部署XXL-JOB的示例代碼

    XXL-JOB是一個分布式任務(wù)調(diào)度平臺,可通過MySQL用戶創(chuàng)建和Docker容器化快速部署,本文詳細介紹了從環(huán)境準備到驗證部署的全過程,具有一定的參考價值,感興趣的可以了解一下
    2024-10-10
  • Docker Compose之Sidecar模式詳解

    Docker Compose之Sidecar模式詳解

    這篇文章主要介紹了Docker Compose之Sidecar模式,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • docker下安裝Nginx的方法

    docker下安裝Nginx的方法

    這篇文章主要介紹了docker下安裝Nginx的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 初次使用Docker的體驗筆記總結(jié)

    初次使用Docker的體驗筆記總結(jié)

    這篇文章主要介紹了初次使用Docker的體驗筆記總結(jié),對初學(xué)Docker具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • 教你如何將應(yīng)用從docker-compose遷移到k8s中

    教你如何將應(yīng)用從docker-compose遷移到k8s中

    這篇文章主要介紹了如何將應(yīng)用從docker-compose遷移到k8s中,本文給大家分享一個專門的遷移工具,可方便地通過docker-compose.yaml自動生成k8s的yaml部署文件,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07

最新評論