这是一篇记录 Docker 容器常用命令的文章,在此记录了我需要的 Docker 命令,我也会随着学习增加相关命令到这篇文章。
镜像管理命令
# 查看本地镜像
docker images
# 搜索镜像
docker search nginx
# 拉取镜像(下载)
docker pull nginx:latest
docker pull ubuntu:20.04
# 删除镜像
docker rmi nginx:latest
# 强制删除镜像
docker rmi -f nginx:latest
容器生命周期管理
# 创建并启动容器
docker run nginx
docker run -d nginx # 后台运行
docker run -it ubuntu bash # 交互式运行
# 常用参数:
# -d:后台运行
# -it:交互模式
# --name:指定容器名
# -p:端口映射
# -v:挂载卷
# 示例:运行Nginx并映射端口
docker run -d --name my-nginx -p 8080:80 nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop 容器ID/容器名
# 启动已停止的容器
docker start 容器ID/容器名
# 重启容器
docker restart 容器ID/容器名
# 进入容器内部
docker exec -it 容器ID/容器名 bash
# 删除容器
docker rm 容器ID/容器名
# 强制删除运行中的容器
docker rm -f 容器ID/容器名
容器操作命令
# 查看容器日志
docker logs 容器ID/容器名
docker logs -f 容器ID/容器名 # 实时查看
# 查看容器资源使用情况
docker stats
# 查看容器内部进程
docker top 容器ID/容器名
# 复制文件到容器
docker cp 本地文件路径 容器ID:容器内路径
# 从容器复制文件到本地
docker cp 容器ID:容器内路径 本地文件路径
实战演练
示例1:运行一个 Nginx 服务器
# 1. 拉取Nginx镜像
docker pull nginx
# 2. 运行Nginx容器
docker run -d --name my-site -p 8080:80 nginx
# 3. 访问网站
# 打开浏览器访问:http://localhost:8080
# 4. 修改默认页面
docker exec -it my-site bash
# 进入容器后执行:
echo "<h1>Hello Docker!</h1>" > /usr/share/nginx/html/index.html
exit
# 5. 查看日志
docker logs my-site
# 6. 停止容器
docker stop my-site
示例2:运行一个 Python 应用
创建一个简单的 Python Flask 应用:
# 1. 创建一个项目目录
mkdir my-flask-app
cd my-flask-app
# 2. 创建app.py
cat > app.py << 'EOF'
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)
EOF
# 3. 创建Dockerfile
cat > Dockerfile << 'EOF'
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
RUN pip install flask
EXPOSE 5000
CMD ["python", "app.py"]
EOF
# 4. 构建镜像
docker build -t my-flask-app .
# 5. 运行容器
docker run -d --name flask-app -p 5000:5000 my-flask-app
# 6. 访问应用
# 打开浏览器访问:http://localhost:5000
数据持久化(Volume)
# 创建数据卷
docker volume create my-data
# 查看数据卷
docker volume ls
# 使用数据卷运行容器
docker run -d --name mysql-db \
-v my-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
mysql:5.7
# 绑定挂载(使用本地目录)
docker run -d --name my-site \
-v /本地/网站/目录:/usr/share/nginx/html \
-p 8080:80 \
nginx
-v后面的本地路径可以用${PWD}获取当前路径,${PWD}/config就是获取当前路径作为前缀组成完整的绝对路径。
清理命令
# 清理未使用的容器
docker container prune
# 清理未使用的镜像
docker image prune
# 清理所有未使用的资源
docker system prune -a
查看详细信息
# 查看容器详细信息
docker inspect 容器ID/容器名
# 查看镜像详细信息
docker inspect 镜像名:标签
注意事项
- 容器命名:总是用 –name 给容器命名,方便管理
- 端口冲突:确保宿主机端口没有被占用
- 资源限制:可以用 -m 限制内存,–cpus 限制CPU
- 日志管理:定期清理日志,避免占用太多磁盘空间
- 安全考虑:不要以root用户运行容器中的应用