Docker在Ubuntu系統(tǒng)中的詳細(xì)操作指南
一、Docker 簡(jiǎn)介
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,允許開(kāi)發(fā)者將應(yīng)用及其依賴打包在一個(gè)輕量級(jí)、可移植的容器中,實(shí)現(xiàn)快速部署和運(yùn)行。
二、系統(tǒng)要求
- 操作系統(tǒng):Ubuntu 20.04 或更高版本(推薦使用 LTS 版本)
- 用戶權(quán)限:具有 sudo 權(quán)限
- 網(wǎng)絡(luò):能夠訪問(wèn)互聯(lián)網(wǎng)(用于下載 Docker 和鏡像)
三、安裝 Docker Engine
方法一:使用官方安裝腳本(推薦)
# 更新系統(tǒng)軟件包 sudo apt update # 安裝依賴包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # 添加 Docker 官方 GPG 密鑰 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加 Docker 官方倉(cāng)庫(kù) echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新軟件包索引 sudo apt update # 安裝 Docker 引擎 sudo apt install -y docker-ce docker-ce-cli containerd.io # 驗(yàn)證是否安裝成功 sudo docker --version
四、驗(yàn)證 Docker 是否正常運(yùn)行
# 運(yùn)行測(cè)試容器 sudo docker run hello-world
如果輸出類似下面的內(nèi)容,說(shuō)明 Docker 安裝成功:
Hello from Docker! This message shows that your installation appears to be working correctly.
五、配置 Docker 用戶權(quán)限(避免每次使用 sudo)
默認(rèn)情況下,只有 root 用戶或 docker
組用戶才能運(yùn)行 Docker 命令。
# 創(chuàng)建 docker 用戶組(如果尚未存在) sudo groupadd docker # 將當(dāng)前用戶添加到 docker 組 sudo usermod -aG docker $USER # 重新加載用戶組權(quán)限 newgrp docker # 驗(yàn)證是否可以不使用 sudo 運(yùn)行 Docker docker run hello-world
注意:退出終端后重新登錄,權(quán)限才會(huì)生效。
六、Docker 常用命令
1. 查看運(yùn)行中的容器
docker ps
2. 查看所有容器(包括已停止的)
docker ps -a
3. 查看本地鏡像
docker images
4. 拉取鏡像
docker pull nginx
5. 運(yùn)行容器
docker run -d -p 8080:80 --name mynginx nginx
-d
:后臺(tái)運(yùn)行-p 8080:80
:將宿主機(jī)的 8080 端口映射到容器的 80 端口--name mynginx
:為容器指定名稱nginx
:使用的鏡像名
6. 停止容器
docker stop mynginx
7. 啟動(dòng)已存在的容器
docker start mynginx
8. 刪除容器
docker rm mynginx
注意:刪除前請(qǐng)先停止容器。
9. 刪除鏡像
docker rmi nginx
七、構(gòu)建自定義鏡像(使用 Dockerfile)
示例:構(gòu)建一個(gè)簡(jiǎn)單的 Python Web 應(yīng)用
1. 創(chuàng)建項(xiàng)目目錄結(jié)構(gòu)
mkdir myapp cd myapp touch app.py Dockerfile
2. 編寫(xiě) app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello from Docker!" if __name__ == "__main__": app.run(host='0.0.0.0', port=5000)
3. 編寫(xiě) Dockerfile
FROM python:3.10-slim WORKDIR /app COPY app.py . EXPOSE 5000 CMD ["python", "app.py"]
4. 構(gòu)建鏡像
docker build -t myapp .
5. 運(yùn)行容器
docker run -d -p 5000:5000 --name myapp-container myapp
6. 瀏覽器訪問(wèn)
http://localhost:5000
八、數(shù)據(jù)卷掛載(Volume)
如果你希望容器內(nèi)的數(shù)據(jù)持久化保存,可以使用 Volume。
docker run -d -p 5000:5000 \ -v $(pwd)/data:/app/data \ --name myapp-container myapp
$(pwd)/data
:宿主機(jī)上的目錄/app/data
:容器中的目錄
九、網(wǎng)絡(luò)配置
Docker 會(huì)自動(dòng)為容器分配 IP,也可以自定義網(wǎng)絡(luò):
docker network create mynetwork docker run --network mynetwork --name app1 -d myapp docker run --network mynetwork --name app2 -d anotherapp
十、Docker Compose(多容器管理)
1. 安裝 Docker Compose
# 下載最新版本 sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 賦予執(zhí)行權(quán)限 sudo chmod +x /usr/local/bin/docker-compose # 驗(yàn)證安裝 docker-compose --version
2. 示例:使用 docker-compose.yml 管理多服務(wù)
# docker-compose.yml version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
# 啟動(dòng)服務(wù) docker-compose up -d # 停止服務(wù) docker-compose down
十一、清理 Docker 資源
1. 刪除所有停止的容器
docker container prune
2. 刪除所有無(wú)用的鏡像
docker image prune -a
3. 刪除所有未使用的卷
docker volume prune
4. 刪除所有未使用的網(wǎng)絡(luò)
docker network prune
十二、常見(jiàn)問(wèn)題與解決方法
問(wèn)題 | 解決方法 |
---|---|
權(quán)限問(wèn)題(Permission denied) | 確保用戶已加入 docker 組,使用 newgrp docker 刷新權(quán)限 |
容器無(wú)法訪問(wèn)? | 檢查端口映射、防火墻設(shè)置 |
構(gòu)建失??? | 檢查 Dockerfile 語(yǔ)法,依賴是否完整 |
磁盤空間不足? | 使用 docker system prune 清理無(wú)用資源 |
以上就是Docker在Ubuntu系統(tǒng)中的詳細(xì)操作指南的詳細(xì)內(nèi)容,更多關(guān)于Docker在Ubuntu中的操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker network 自定義網(wǎng)絡(luò)配置與管理指南詳細(xì)過(guò)程
Docker網(wǎng)絡(luò)是容器間通信和與外部世界交互的基礎(chǔ),通過(guò)自定義網(wǎng)絡(luò),可以實(shí)現(xiàn)容器間的隔離、靜態(tài) IP 分配和服務(wù)發(fā)現(xiàn),這篇文章主要介紹了docker network 自定義網(wǎng)絡(luò)配置與管理指南,需要的朋友可以參考下2025-05-05docker默認(rèn)存儲(chǔ)路徑修改方法總結(jié)
docker默認(rèn)存儲(chǔ)路徑是/var/lib/docker,占用服務(wù)器根分區(qū),容易導(dǎo)致磁盤空間占滿,下面這篇文章主要給大家介紹了關(guān)于docker默認(rèn)存儲(chǔ)路徑修改方法的相關(guān)資料,需要的朋友可以參考下2023-10-10在Docker中部署Confluence和jira-software的方法步驟
這篇文章主要介紹了在Docker中部署Confluence和jira-software的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06如何Docker化Python Django應(yīng)用程序
今天小編就為大家分享一篇關(guān)于如何Docker化Python Django應(yīng)用程序的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-09-09國(guó)內(nèi)最新可用Docker鏡像源網(wǎng)址與配置方法(全網(wǎng)最全)
使用國(guó)內(nèi)鏡像源可以大幅提升鏡像拉取速度,減少網(wǎng)絡(luò)波動(dòng),幫助初學(xué)者快速上手Docker,本文將詳細(xì)介紹國(guó)內(nèi)最熱門的Docker鏡像源平臺(tái),希望對(duì)大家有所幫助2025-06-06Docker容器Container鏡像Image如何存儲(chǔ)詳解
本文主要介紹Docker容器(Container)和鏡像(Image)是如何進(jìn)行數(shù)據(jù)存儲(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09docker網(wǎng)卡的IP地址修改方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于docker網(wǎng)卡的IP地址修改方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06Docker 和 Containerd 目錄結(jié)構(gòu)及存儲(chǔ)機(jī)制詳解
Docker和Containerd是兩種流行的容器運(yùn)行時(shí)工具,它們都有自己的目錄結(jié)構(gòu)和存儲(chǔ)機(jī)制,本文詳細(xì)介紹了Docker和Containerd的目錄結(jié)構(gòu)和存儲(chǔ)機(jī)制,并對(duì)比了它們之間的主要區(qū)別,包括存儲(chǔ)路徑、掛載點(diǎn)管理、配置文件和日志文件,感興趣的朋友一起看看吧2025-02-02Alpine鏡像中telnet轉(zhuǎn)移至busybox-extras
今天小編就為大家分享一篇關(guān)于Alpine鏡像中telnet轉(zhuǎn)移至busybox-extras,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12docker鏡像無(wú)法刪除 Error:No such image:xxxxxx解決
這篇文章主要介紹了docker鏡像無(wú)法刪除 Error:No such image:xxxxxx解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09