一、Docker 简介
Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包在一个轻量级、可移植的容器中,实现快速部署和运行。
二、系统要求
三、安装 Docker Engine
方法一:使用官方安装脚本(推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo docker --version
|
四、验证 Docker 是否正常运行
1 2 | sudo docker run hello-world
|
如果输出类似下面的内容,说明 Docker 安装成功:
1 2 | Hello from Docker!
This message shows that your installation appears to be working correctly.
|
五、配置 Docker 用户权限(避免每次使用 sudo)
默认情况下,只有 root 用户或 docker 组用户才能运行 Docker 命令。
1 2 3 4 5 6 7 8 9 10 11 | sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
|
注意:退出终端后重新登录,权限才会生效。
六、Docker 常用命令
1. 查看运行中的容器
2. 查看所有容器(包括已停止的)
3. 查看本地镜像
4. 拉取镜像
5. 运行容器
1 | docker run -d -p 8080:80 --name mynginx nginx
|
6. 停止容器
7. 启动已存在的容器
8. 删除容器
注意:删除前请先停止容器。
9. 删除镜像
七、构建自定义镜像(使用 Dockerfile)
示例:构建一个简单的 Python Web 应用
1. 创建项目目录结构
1 2 3 | mkdir myapp
cd myapp
touch app.py Dockerfile
|
2. 编写 app.py
1 2 3 4 5 6 7 8 9 10 | 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. 编写 Dockerfile
1 2 3 4 5 | FROM python:3.10-slim
WORKDIR /app
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]
|
4. 构建镜像
5. 运行容器
1 | docker run -d -p 5000:5000 --name myapp-container myapp
|
6. 浏览器访问
八、数据卷挂载(Volume)
如果你希望容器内的数据持久化保存,可以使用 Volume。
1 2 3 | docker run -d -p 5000:5000 \
-v $(pwd)/data:/app/data \
--name myapp-container myapp
|
$(pwd)/data:宿主机上的目录
/app/data:容器中的目录
九、网络配置
Docker 会自动为容器分配 IP,也可以自定义网络:
1 2 3 | 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
1 2 3 4 5 6 7 8 | 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
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
|
2. 示例:使用 docker-compose.yml 管理多服务
1 2 3 4 5 6 7 8 9 | version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
|
1 2 3 4 5 | docker-compose up -d
docker-compose down
|
十一、清理 Docker 资源
1. 删除所有停止的容器
2. 删除所有无用的镜像
3. 删除所有未使用的卷
4. 删除所有未使用的网络
十二、常见问题与解决方法
| 问题 | 解决方法 |
|---|
| 权限问题(Permission denied) | 确保用户已加入 docker 组,使用 newgrp docker 刷新权限 |
| 容器无法访问? | 检查端口映射、防火墙设置 |
| 构建失败? | 检查 Dockerfile 语法,依赖是否完整 |
| 磁盘空间不足? | 使用 docker system prune 清理无用资源 |
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。