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

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

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

寫在前面:

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

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

一、Docker 介紹

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

主要特點:

  1. 輕量級

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

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

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

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

核心組成:

  1. 鏡像(Image)

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

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

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

使用場景

  1. 應用部署

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

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

    保證了開發(fā)、測試和生產(chǎn)環(huán)境的一致性,減少了因環(huán)境差異導致的問題。
    開發(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、curlgcc 等,適合構建輕量級的容器。
  2. Ubuntu:基于 Debian 的 Linux 操作系統(tǒng),常用版本(LTS):22.04、20.04、18.04;
  3. Nginx:廣泛使用的 Web 服務器軟件,也可用作反向代理、負載均衡和 HTTP 緩存服務器。結合其他技術如 WordPress 等,可以用于構建高性能的 Web 應用程序。
  4. Redis:基于內(nèi)存的數(shù)據(jù)存儲系統(tǒng),常用于實時數(shù)據(jù)緩存、排名、計數(shù)器、分布式會話管理等方面,具有快速、可靠且易于使用的特點,適合構建可擴展的分布式系統(tǒng)。
  5. MySQL:流行的關系數(shù)據(jù)庫管理系統(tǒng),支持多數(shù)據(jù)類型、多連接和高性能,是開發(fā)人員構建數(shù)據(jù)庫應用程序的常用選擇之一。
  6. Node.js:基于 JavaScript 的后端服務器技術,支持高性能、非阻塞 I/O 和事件驅動編程,許多開發(fā)者使用它來構建 Node.js 的 Web 應用程序和 Web 服務。
  7. Tomcat:一個流行的 Java Web 應用服務器,用于運行 Java Web 應用程序3。
  8. CentOS:一種常用的 Linux 發(fā)行版鏡像,提供了穩(wěn)定的操作系統(tǒng)環(huán)境,適合用于各種服務器應用的部署。

第三步:拉取所需鏡像

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

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

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

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

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

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

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

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

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

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

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

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

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

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

常見指令:

  1. FROM:指定基礎鏡像,它是構建新鏡像的起點。例如:FROM ubuntu:22.04。
  2. RUN:在鏡像構建過程中執(zhí)行命令??梢杂糜诎惭b軟件包、配置環(huán)境等。例如:RUN apt-get update && apt-get install -y python3。
  3. COPY 或 ADD:將本地文件或目錄復制到鏡像中。例如:COPY. /app將當前目錄下的所有文件復制到鏡像中的/app目錄。
  4. WORKDIR:設置工作目錄。例如:WORKDIR /app將后續(xù)命令的工作目錄設置為/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 中,設置了工作目錄,拷貝當前目錄文件到鏡像內(nèi),并安裝了 Flask 庫,暴露容器的 5000 端口,最后在容器啟動后運行命令啟動程序。

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

docker build -t myflaskapp:latest .

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

構建鏡像后,啟動容器即可:

docker run -p 5000:5000 myflaskapp:latest

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

Dockerfile 的優(yōu)勢:

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

存在的不足:

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

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

2.3 導出的鏡像文件直接導入

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

1. 找出要導出容器的 名稱 或 ID

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

2. 導出容器到 .tar 文件

docker export container_name > container.tar

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

3. 在目標電腦上導入鏡像

docker import container.tar new_image_name:tag

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

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

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

三、運行和管理容器

3.1 命令行運行

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

1. 分離模式

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

docker run -d my_image

2. 映射端口

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

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ù)持久化,并且兩側是同步的。

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

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

設置環(huán)境變量和值,容器內(nèi)的應用可以讀取這個環(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)絡

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

docker run --name my_container --network my_network my_image

9. 退出重啟

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

docker run --name my_container --restart always my_image

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

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

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

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

停止容器:

docker stop [容器名稱或 ID]

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

刪除容器:

docker rm [容器名稱或 ID]

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

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

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

查看容器日志:

docker logs [容器名稱或 ID]

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

重啟容器:

docker restart [容器名稱或 ID]

復制文件:

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

將本地文件或目錄復制到容器中。

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

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

3.2 Docker Compose

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

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

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

使用之前需要安裝,這里不具體介紹,根據(jù)官方文檔即可??梢杂么嗣畈榭矗?/p>

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

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

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)絡,類型為 bridge。三個服務(web、app 和 db)都連接到這個自定義網(wǎng)絡,使得它們可以通過服務名稱相互通信。

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

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

四、總結

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

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

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

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

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

相關文章

  • Docker-client for python詳解及簡單示例

    Docker-client for python詳解及簡單示例

    這篇文章主要介紹了Docker-client for python詳解及簡單示例的相關資料,需要的朋友可以參考下
    2017-04-04
  • 一文系統(tǒng)梳理Docker中容器的常用命令

    一文系統(tǒng)梳理Docker中容器的常用命令

    這篇文章主要為大家詳細介紹了Docker容器中的常用命令,包括啟動流程、容器運行原理及容器日志查看方法并詳細解析DockerD架構與鏡像原理,希望對大家有所幫助
    2026-05-05
  • docker容器增加或者修改容器映射端口的實現(xiàn)方法

    docker容器增加或者修改容器映射端口的實現(xiàn)方法

    在只有使用docker安裝的容器,沒有使用docker-compose或者其他客戶端工具,如果要增加或者修改容器端口,也是可以增加或者修改容器端口映射,本文給大家介紹了docker容器增加或者修改容器映射端口的實現(xiàn)方法,需要的朋友可以參考下
    2025-01-01
  • docker --link容器互聯(lián)的實現(xiàn)

    docker --link容器互聯(lián)的實現(xiàn)

    –link可以通過容器名互相通信,容器間共享環(huán)境變量,本文主要介紹了docker --link容器互聯(lián)的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 為運行中的docker容器設置時區(qū)

    為運行中的docker容器設置時區(qū)

    本文主要介紹了為運行中的docker容器設置時區(qū),主要介紹了2種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • docker compose安裝es+kibana 8.12.2的詳細過程

    docker compose安裝es+kibana 8.12.2的詳細過程

    因云平臺需要改造,es7升級為es8,所以記錄一下,es8需要開啟ssl認證,需要配置證書,全本帶你用docker安裝,便于后面es8的學習,這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 詳解如何查看 docker 容器使用的資源

    詳解如何查看 docker 容器使用的資源

    本篇文章主要介紹了詳解如何查看 docker 容器使用的資源,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務器監(jiān)控

    docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務器監(jiān)控

    這篇文章主要為大家介紹了docker部署Prometheus+Cadvisor+Grafana實現(xiàn)服務器監(jiān)控,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 如何解決IDEA無法連接docker中的數(shù)據(jù)庫的問題

    如何解決IDEA無法連接docker中的數(shù)據(jù)庫的問題

    這篇文章主要介紹了如何解決IDEA無法連接docker中的數(shù)據(jù)庫的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • docker所有常用命令總結大全(配上思維導圖加圖表顯示)

    docker所有常用命令總結大全(配上思維導圖加圖表顯示)

    掌握一些必備的Docker命令對于使用Docker的工程師非常重要,這篇文章主要介紹了docker所有常用命令的相關資料,文中配上思維導圖加圖表顯示,講解的非常詳細,需要的朋友可以參考下
    2025-08-08

最新評論

分宜县| 抚州市| 开封县| 华安县| 深泽县| 南通市| 金塔县| 武平县| 民乐县| 宣城市| 嵩明县| 桐乡市| 炎陵县| 共和县| 长汀县| 齐河县| 济宁市| 梧州市| 江陵县| 都昌县| 宜兴市| 安溪县| 赤峰市| 东丽区| 白水县| 罗甸县| 小金县| 海丰县| 舒城县| 新巴尔虎左旗| 虹口区| 新密市| 清河县| 乌鲁木齐市| 苍南县| 颍上县| 禹州市| 营口市| 长宁县| 太湖县| 镇坪县|