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

Ubuntu系統(tǒng)下Docker鏡像構(gòu)建與容器管理的完整指南

 更新時間:2026年05月07日 08:46:13   作者:炘爚  
這篇文章主要為大家詳細介紹了Docker鏡像構(gòu)建與容器管理的核心知識,主要內(nèi)容包括鏡像構(gòu)建,容器啟動,端口映射等,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

一、安裝Docker

依次按照下面步驟即可完成docker的安裝。

1、更新軟件源

sudo apt update

2、安裝基本軟件

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y

3、指定使用阿里云鏡像

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

4、安裝docker-ce

sudo apt-get install docker-ce -y

5、查看docker版本

docker version

6、配置可用鏡像源,創(chuàng)建daemon.json文件,切換到/etc/docker

cd /etc/docker
sudo touch daemon.json

7、編輯/etc/docker/daemon.json文件

sudo vim daemon.json

8、把下面的內(nèi)容復(fù)制到daemon.json文件中

{
    "registry-mirrors": [
        "https://docker.1panel.live",
        "https://hub.rat.dev"
    ]
}

9、重啟docker

systemctl daemon-reload
systemctl restart docker

10、繼續(xù)驗證和部署

# 1. 拉取測試鏡像
docker pull hello-world
docker run hello-world

11、拉取nginx

# 1. 拉取 Nginx
docker pull nginx

# 2. 運行 Nginx 容器
docker run -d --name my-nginx -p 8080:80 nginx

# 3. 查看運行狀態(tài)
docker ps

12、拉取redis

docker run -d --name my-redis -p 6380:6379 redis

13、拉取mysql

docker run -d --name my-mysql -p 3366:3365 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

二、鏡像構(gòu)建

1. 什么是 Docker 鏡像

  • 它是一個只讀的模板,包含了運行應(yīng)用所需的一切:代碼、依賴庫、配置文件、環(huán)境變量等。
  • 可以把它想象成一個打包好的綠色軟件安裝包,拿到哪里都能直接運行,不用再裝依賴。
  • 鏡像的底層是分層存儲:比如 nginx:alpine 鏡像,底層是 Alpine Linux 系統(tǒng),上層是 Nginx 服務(wù),每一層都是只讀的,修改時只會在最上層添加新層,節(jié)省空間。

2. 鏡像構(gòu)建的兩種方式

方式 1:拉取官方鏡像(docker pull)

命令格式:

docker pull 鏡像名:版本
# 比如:
docker pull nginx:alpine
docker pull mysql:8.0
docker pull redis:alpine

原理:從 Docker Hub(官方鏡像倉庫)下載別人已經(jīng)構(gòu)建好的鏡像,直接用,不用自己寫配置。

配置的國內(nèi)鏡像源 ustc.edu.cn 就是用來加速下載的,面試可以說:“我配置了國內(nèi)鏡像源,解決了官方倉庫訪問慢的問題”。

方式 2:自定義構(gòu)建(docker build+ Dockerfile)

核心文件:Dockerfile(鏡像的構(gòu)建腳本)

一個完整的 Nginx 項目鏡像構(gòu)建流程:

1.準備項目文件:index.html(你的網(wǎng)頁代碼)

2.寫 Dockerfile

# 1. 基礎(chǔ)鏡像:基于輕量版 Nginx 構(gòu)建
FROM nginx:alpine
# 2. 復(fù)制本地文件到容器的 Nginx 目錄
COPY index.html /usr/share/nginx/html/index.html
# 3. 聲明容器提供服務(wù)的端口
EXPOSE 80
# 4. 容器啟動時執(zhí)行的命令(讓 Nginx 前臺運行,容器不會退出)
CMD ["nginx", "-g", "daemon off;"]

3.構(gòu)建鏡像:

docker build -t my-web-app:v1 .

我了解 Dockerfile 編寫,能將靜態(tài)項目打包成鏡像,實現(xiàn)一次構(gòu)建、隨處運行,解決了開發(fā)環(huán)境和生產(chǎn)環(huán)境不一致的問題

二、容器啟動、端口映射與環(huán)境隔離

1. 容器是什么?和鏡像的關(guān)系?

  • 容器是鏡像運行起來的實例,一個鏡像可以啟動無數(shù)個容器。
  • 鏡像只讀,容器可寫:啟動容器時,Docker 會在鏡像的只讀層上添加一個可寫層,所有修改都發(fā)生在可寫層,不會影響鏡像本身。
  • 容器和虛擬機的區(qū)別:
    • 虛擬機:模擬一整套硬件,運行完整的操作系統(tǒng),占用資源多、啟動慢。
    • Docker 容器:共享主機的內(nèi)核,只打包應(yīng)用和依賴,占用資源少、秒級啟動,這就是 “輕量級容器化” 的優(yōu)勢。

2. 容器啟動(docker run)

命令格式:

docker run [參數(shù)] 鏡像名

你必須掌握的 3 個核心參數(shù):

  1. -d:后臺運行容器,不占用終端,比如 docker run -d nginx:alpine
  2. --name:給容器起個名字,方便管理,比如 docker run -d --name my-nginx nginx:alpine
  3. -e:設(shè)置環(huán)境變量,比如啟動 MySQL 時設(shè)置密碼:docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

3. 端口映射(-p)—— 外部訪問容器服務(wù)的關(guān)鍵

命令格式:

docker run -p 主機端口:容器端口 鏡像名
# 比如:
docker run -d -p 8080:80 --name my-nginx nginx:alpine

含義:把主機的 8080 端口,映射到容器的 80 端口(Nginx 默認端口),外部訪問主機IP:8080 就能訪問容器里的 Nginx 服務(wù)。

我了解 Docker 端口映射原理,能將容器服務(wù)暴露到主機網(wǎng)絡(luò),實現(xiàn)外部訪問,同時通過不同主機端口區(qū)分多個同類型容器,避免端口沖突。

4. 環(huán)境隔離(Docker 的核心優(yōu)勢)

  • 每個容器都有獨立的:
    • 文件系統(tǒng):容器里的文件不會影響主機和其他容器
    • 網(wǎng)絡(luò)棧:默認使用橋接網(wǎng)絡(luò),每個容器有獨立的 IP,互相隔離
    • 進程空間:容器里的進程是主機進程的子進程,互相不干擾
  • 作用:提升應(yīng)用部署的安全性,比如你在容器里裝的軟件,不會污染主機環(huán)境;Nginx 容器崩潰了,不會影響 MySQL 容器。
  • 我了解 Docker 的環(huán)境隔離機制,容器之間相互隔離,互不影響,提升了應(yīng)用部署的安全性和穩(wěn)定性,也方便了多版本、多服務(wù)的并行部署。

三、快速部署 MySQL、Redis、Nginx 等中間件

1. Nginx 部署(Web 服務(wù)器)

# 拉取鏡像
docker pull nginx:alpine

# 啟動容器,端口映射 8080:80
docker run -d -p 8080:80 --name my-nginx nginx:alpine
  • 驗證:主機瀏覽器訪問 http://虛擬機IP:8080,能看到 Nginx 歡迎頁
  • 我能通過 Docker 快速部署 Nginx 服務(wù),配置端口映射,實現(xiàn)靜態(tài)資源的訪問,也能通過掛載本地配置文件修改 Nginx 配置

2. MySQL 部署(數(shù)據(jù)庫)

# 拉取鏡像
docker pull mysql:8.0
# 啟動容器,設(shè)置 root 密碼,端口映射 3306:3306
docker run -d -p 3306:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

驗證:用主機的數(shù)據(jù)庫工具(Navicat)連接 虛擬機IP:3306,用戶 root,密碼 123456

我能通過 Docker 快速部署 MySQL 服務(wù),設(shè)置 root 密碼,配置端口映射,實現(xiàn)外部客戶端連接,也了解數(shù)據(jù)卷掛載,將數(shù)據(jù)持久化到主機,避免容器刪除后數(shù)據(jù)丟失。

3. Redis 部署(緩存)

# 拉取鏡像
docker pull redis:alpine
# 啟動容器,端口映射 6379:6379
docker run -d -p 6379:6379 --name my-redis redis:alpine
  • 驗證:用 Redis 客戶端連接 虛擬機IP:6379,能正常讀寫數(shù)據(jù)
  • 我能通過 Docker 快速部署 Redis 緩存服務(wù),配置端口映射,實現(xiàn)外部客戶端連接,也了解 Redis 持久化配置。

四、容器生命周期管理

階段命令格式作用
創(chuàng)建啟動docker rundocker run [參數(shù)] 鏡像名創(chuàng)建并啟動容器
查看狀態(tài)docker psdocker ps查看正在運行的容器
docker ps -adocker ps -a查看所有容器(包括已停止的)
運行中操作docker execdocker exec -it 容器名 /bin/bash進入運行中的容器,調(diào)試命令
docker logsdocker logs 容器名查看容器日志
停止重啟docker stopdocker stop 容器名優(yōu)雅停止容器
docker startdocker start 容器名啟動已停止的容器
docker restartdocker restart 容器名重啟容器
刪除清理docker rmdocker rm 容器名刪除已停止的容器
docker rmidocker rmi 鏡像名刪除無用鏡像

我熟練掌握 Docker 容器的生命周期管理,能通過命令實現(xiàn)容器的創(chuàng)建、啟動、停止、重啟、刪除,也能通過 docker exec 進入容器調(diào)試,查看日志排查問題”。

五、將項目打包鏡像并發(fā)布運

  1. 準備項目文件:你的網(wǎng)頁代碼 index.html
  2. 編寫 Dockerfile:定義鏡像的構(gòu)建規(guī)則
  3. 構(gòu)建鏡像:docker build -t my-project:v1 .
  4. 運行容器:docker run -d -p 8080:80 my-project:v1
  5. 發(fā)布運行:可以把鏡像推送到私有倉庫,在其他服務(wù)器上拉取運行,實現(xiàn)一次構(gòu)建、隨處運行。

我了解 Docker 項目打包流程,能將靜態(tài)項目通過 Dockerfile 構(gòu)建成鏡像,實現(xiàn)應(yīng)用的容器化部署,解決了開發(fā)環(huán)境和生產(chǎn)環(huán)境不一致的問題,也方便了項目的持續(xù)集成與交付”

六、高頻問題

Docker 鏡像和容器的區(qū)別?

  • 鏡像:只讀模板,用來創(chuàng)建容器,多個容器可以共享同一個鏡像
  • 容器:鏡像運行起來的實例,可寫,每個容器相互隔離

Docker 容器和虛擬機的區(qū)別?

  • 虛擬機:模擬硬件,運行完整操作系統(tǒng),占用資源多、啟動慢
  • Docker 容器:共享主機內(nèi)核,只打包應(yīng)用和依賴,輕量、秒級啟動,隔離性稍弱但足夠滿足業(yè)務(wù)需求

Docker 端口映射的原理?

Docker 會在主機上監(jiān)聽指定端口,把請求轉(zhuǎn)發(fā)到容器的對應(yīng)端口,外部通過主機端口訪問容器服務(wù)

到此這篇關(guān)于Ubuntu系統(tǒng)下Docker鏡像構(gòu)建與容器管理的完整指南的文章就介紹到這了,更多相關(guān)Docker鏡像構(gòu)建與容器管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker加載鏡像時報錯no space left on device的徹底解決方案

    Docker加載鏡像時報錯no space left on device的徹底解

    本文詳細記錄了在部署FastDDS鏡像時遇到磁盤空間不足的問題,并介紹了從排查到徹底解決的完整過程,通過分析根分區(qū)空間占用情況,將Docker數(shù)據(jù)根目錄遷移到大分區(qū),并修改daemon.json文件中的data-root配置,最終成功解決了問題,需要的朋友可以參考下
    2025-11-11
  • docker安裝portainer方法詳細步驟

    docker安裝portainer方法詳細步驟

    portainer是一款容器管理可視化界面,不想在虛擬中使用命令管理容器的小伙伴,可以選擇安裝portainer對容器進行管理,查看日志、啟動、停止容器等非常方便,這篇文章主要介紹了docker安裝portainer方法詳細步驟,需要的朋友可以參考下
    2022-10-10
  • Docker 教程之私有倉庫詳解

    Docker 教程之私有倉庫詳解

    這篇文章主要介紹了Docker 教程之私有倉庫詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Docker數(shù)據(jù)卷掛載及宿主機目錄掛載使用和區(qū)別

    Docker數(shù)據(jù)卷掛載及宿主機目錄掛載使用和區(qū)別

    本文主要介紹了Docker數(shù)據(jù)卷掛載及宿主機目錄掛載使用和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2024-02-02
  • docker添加網(wǎng)橋并設(shè)置ip地址范圍操作

    docker添加網(wǎng)橋并設(shè)置ip地址范圍操作

    這篇文章主要介紹了docker添加網(wǎng)橋并設(shè)置ip地址范圍操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker搭建lnmp環(huán)境的實現(xiàn)步驟

    docker搭建lnmp環(huán)境的實現(xiàn)步驟

    DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一鍵安裝程序,本文就來介紹一下docker搭建lnmp環(huán)境的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • Docker安裝Nginx問題及錯誤分析

    Docker安裝Nginx問題及錯誤分析

    這篇文章主要介紹了Docker安裝Nginx的問題及錯誤分析正確的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Docker 特性與原理詳細介紹與解析

    Docker 特性與原理詳細介紹與解析

    這篇文章主要介紹了Docker 特性與原理的相關(guān)資料,大家在了解基本命令和基本知識后,來看下原理性的通信,需要的朋友可以參考下
    2016-10-10
  • docker鏡像封裝方便打包上傳一鍵部署

    docker鏡像封裝方便打包上傳一鍵部署

    這篇文章主要為大家介紹了docker鏡像封裝方便打包上傳一鍵部署,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 通過Docker運行AnythingLLM的方法

    通過Docker運行AnythingLLM的方法

    這篇文章主要介紹了通過Docker運行AnythingLLM的方法,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-12-12

最新評論

兰考县| 游戏| 绥江县| 佳木斯市| 柘荣县| 东台市| 诸暨市| 威信县| 新乡县| 沂源县| 象山县| 大名县| 托里县| 岑溪市| 泰顺县| 青阳县| 杂多县| 兴义市| 武隆县| 大宁县| 昌都县| 浦城县| 宕昌县| 靖宇县| 衡东县| 大足县| 峨山| 凤台县| 香格里拉县| 漠河县| 武鸣县| 伊宁县| 顺义区| 龙口市| 娄烦县| 如皋市| 太谷县| 应用必备| 富阳市| 太康县| 辽宁省|