文章目錄
- 前言
- 1. Docker 容器是什么?
- 隔離性
- 輕量級
- 可移植性
- 可復用性
- 2. Docker 核心概念
- 鏡像
- 容器
- 倉庫
- Dockerfile
- 3. Docker 基本使用
- (1) 安裝 Docker
- (2) 容器生命周期管理
- (3) 鏡像管理
- (4) 進入容器內部
- (5) 數據持久化(掛載卷)
- (6) 網絡管理
- 4. Dockerfile 示例
- 5. Docker 典型使用場景
- 快速部署應用
- 微服務架構
- CI/CD流水線
- 開發環境隔離
- 6. 常見問題
- 權限問題
- 清理資源
- 查看日志
- 總結
前言
本文簡單介紹了Docker容器的概念以及使用。
1. Docker 容器是什么?
Docker 容器是一種輕量級、可移植的虛擬化技術,允許開發者將應用程序及其依賴環境打包成一個獨立的運行單元。容器基于 Docker 鏡像運行,具有以下特點:
隔離性
隔離性:每個容器運行在獨立的用戶空間,互不干擾(基于 Linux 的 cgroups 和 namespaces)。
輕量級
輕量級:與虛擬機(VM)相比,容器共享主機 OS 內核,無需額外運行完整的操作系統,啟動更快、占用資源更少。
可移植性
可移植性:容器可以在任何支持 Docker 的環境中運行(開發、測試、生產環境一致)。
可復用性
可復用性:容器鏡像可以存儲在倉庫(如 Docker Hub)中,供他人下載使用。
2. Docker 核心概念
鏡像
鏡像(Image) 只讀模板,包含運行容器所需的代碼、庫、環境變量等(如 ubuntu:20.04)。
容器
容器(Container) 鏡像的運行實例,具有可寫層(存儲運行時數據)。
倉庫
倉庫(Registry) 存儲鏡像的服務,如 Docker Hub(公共倉庫)或私有倉庫(如 Harbor)。
Dockerfile
Dockerfile 文本文件,定義如何構建鏡像(通過 docker build 命令)。
3. Docker 基本使用
(1) 安裝 Docker
Linux(Ubuntu):
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Windows/macOS:下載 Docker Desktop。驗證安裝:
docker --version # 查看版本
docker run hello-world # 運行測試容器
(2) 容器生命周期管理
命令 作用
docker run <鏡像> 創建并啟動容器(如 docker run nginx)
docker start <容器ID> 啟動已停止的容器
docker stop <容器ID> 停止運行中的容器
docker restart <容器ID> 重啟容器
docker rm <容器ID> 刪除容器
docker ps 查看運行中的容器(加 -a 顯示所有)
示例:
docker run -d -p 80:80 --name my_nginx nginx # 后臺運行Nginx并映射端口80
docker ps # 查看容器
docker stop my_nginx # 停止容器
(3) 鏡像管理
命令 作用
docker pull <鏡像名> 下載鏡像(如 docker pull ubuntu)
docker images 查看本地鏡像
docker rmi <鏡像ID> 刪除鏡像
docker build -t <鏡像名> . 通過 Dockerfile 構建鏡像(需在Dockerfile所在目錄運行)
示例:
docker pull alpine:latest # 下載Alpine Linux鏡像
docker images # 列出鏡像
docker rmi alpine # 刪除鏡像
(4) 進入容器內部
docker exec -it <容器ID> /bin/bash # 交互式進入容器
參數說明:
-i:保持交互式輸入。
-t:分配偽終端(TTY)。
/bin/bash:啟動Shell(根據鏡像可能為 /bin/sh)。
(5) 數據持久化(掛載卷)
容器默認是臨時存儲,重啟后數據丟失。需通過卷(Volume)或綁定掛載持久化數據:
docker run -v /宿主機路徑:/容器路徑 <鏡像> # 綁定掛載
docker run -v 卷名:/容器路徑 <鏡像> # 使用Docker卷
示例:
docker run -v /home/user/data:/var/www/html nginx # 掛載主機目錄
(6) 網絡管理
命令 作用
docker network ls 查看網絡列表
docker network create 創建自定義網絡
docker run --network 指定容器網絡(如 --network=host 使用主機網絡)
示例:
docker network create my_net # 創建網絡
docker run --network=my_net --name app1 my_app # 容器使用自定義網絡
4. Dockerfile 示例
通過 Dockerfile 自定義鏡像:
# 基于Ubuntu鏡像
FROM ubuntu:20.04# 安裝依賴
RUN apt update && apt install -y python3# 復制本地文件到容器
COPY app.py /app/
# 設置工作目錄
WORKDIR /app
# 定義啟動命令
CMD ["python3", "app.py"]
構建鏡像:
docker build -t my_python_app .
5. Docker 典型使用場景
快速部署應用
快速部署應用:**一鍵運行數據庫(MySQL)、Web服務器(Nginx)**等。
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
微服務架構
微服務架構:每個服務運行在獨立容器中,通過網絡通信。
CI/CD流水線
CI/CD 流水線:在容器中運行測試和構建,確保環境一致。
開發環境隔離
開發環境隔離:避免“在我機器上能運行”問題。
6. 常見問題
權限問題
權限問題:在 Linux 上,非 root 用戶需加入 docker 組:
sudo usermod -aG docker $USER
清理資源
清理資源:
docker system prune # 刪除無用鏡像、容器、網絡
查看日志
查看日志:
docker logs <容器ID>
總結
Docker 容器通過標準化環境,極大提升了開發、部署的效率。
核心步驟:
1.拉取鏡像 → 2. 運行容器 → 3. 管理生命周期 → 4. 自定義鏡像(Dockerfile) → 5. 持久化數據/配置網絡。
掌握這些基礎操作后,可進一步學習 Docker Compose(多容器編排)和 Kubernetes(容器集群管理)。