Docker 容器基本操作
运行容器
使用 docker run 命令启动容器。例如,运行一个 Ubuntu 容器并进入交互式终端:
bash
docker run -it ubuntu /bin/bash
-it:分配交互式终端。ubuntu:镜像名称。/bin/bash:启动后执行的命令。
列出容器
查看正在运行的容器:
bash
docker ps
查看所有容器(包括已停止的):
bash
docker ps -a
停止与启动容器
停止运行中的容器:
bash
docker stop <容器ID或名称>
启动已停止的容器:
bash
docker start <容器ID或名称>
删除容器
删除已停止的容器:
bash
docker rm <容器ID或名称>
强制删除运行中的容器:
bash
docker rm -f <容器ID或名称>
容器与主机文件交互
复制文件到容器
将主机文件复制到容器内:
bash
docker cp /host/path/file.txt <容器ID>:/container/path/
从容器复制文件
将容器内文件复制到主机:
bash
docker cp <容器ID>:/container/path/file.txt /host/path/
挂载数据卷
启动时挂载主机目录到容器:
bash
docker run -v /host/path:/container/path ubuntu
/host/path:主机目录路径。/container/path:容器内挂载路径。
容器网络配置
映射端口
将容器端口映射到主机端口:
bash
docker run -p 8080:80 nginx
8080:主机端口。80:容器内服务端口。
查看容器网络信息
显示容器网络配置:
bash
docker inspect <容器ID> | grep IPAddress
自定义网络
创建自定义网络并运行容器:
bash
docker network create my_network
docker run --network=my_network --name=my_container ubuntu
容器日志与监控
查看日志
输出容器日志:
bash
docker logs <容器ID>
实时跟踪日志:
bash
docker logs -f <容器ID>
资源监控
查看容器资源使用情况:
bash
docker stats <容器ID>
容器持久化与数据管理
使用数据卷
创建命名数据卷并挂载:
bash
docker volume create my_volume
docker run -v my_volume:/container/path ubuntu
备份数据卷
备份数据卷到主机:
bash
docker run --rm -v my_volume:/data -v /backup:/backup ubuntu tar cvf /backup/backup.tar /data
容器与镜像管理
提交容器为镜像
将容器修改保存为新镜像:
bash
docker commit <容器ID> my_new_image
导出与导入容器
导出容器为文件:
bash
docker export <容器ID> > container.tar
导入文件为镜像:
bash
docker import container.tar my_imported_image
多容器编排(Docker Compose)
编写 docker-compose.yml
示例文件:
yaml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
启动服务
运行多容器应用:
bash
docker-compose up -d
停止服务:
bash
docker-compose down
容器安全实践
限制资源
限制容器内存和CPU使用:
bash
docker run --memory=1g --cpus=2 ubuntu
以非 root 用户运行
指定容器内用户:
bash
docker run --user 1000 ubuntu
只读文件系统
启动只读容器:
bash
docker run --read-only ubuntu