前言
Docker入门教程及常见操作指南。
Operating System: Ubuntu 22.04.4 LTS
参考文档
Docker基础概念
- 镜像(Image):只读模板,包含运行环境和应用程序
- 容器(Container):镜像的运行实例
- 仓库(Registry):存储镜像的服务器(默认Docker Hub)
安装Docker
常用操作
镜像管理
# ✅ 搜索镜像
docker search ubuntu
# ✅ 拉取镜像
docker pull nginx:latest
# ✅ 查看本地镜像
docker images
# ✅ 删除镜像
docker rmi <image_id>
# ✅ 构建镜像(需Dockerfile)
docker build -t my-image:1.0 .
容器操作
# ✅ 给容器指定名字
docker run -it --name myubuntu ubuntu
# ✅ 运行容器(前台模式)
docker run -it ubuntu /bin/bash
# ✅ 运行容器(后台模式),访问:http://localhost:8080
docker run -d -p 8080:80 --name my-nginx nginx
# ✅ 查看运行中的容器
docker ps
# ✅ 查看所有容器
docker ps -a
# ✅ 停止容器
docker stop <container_id>
# ✅ 启动已停止的容器
docker start <container_id>
# ✅ 进入运行中的容器
docker exec -it <container_id> /bin/bash
# ✅ 删除容器
docker rm <container_id>
网络管理
# ✅ 查看网络:
docker network ls
# ✅ 创建网络:
docker network create mynetwork
# ✅ 在同一网络下启动多个容器:
docker run -it --network=mynetwork --name=container1 ubuntu
docker run -it --network=mynetwork --name=container2 ubuntu
然后你可以在 container1 里 ping container2。
📂 挂载本地目录(持久化数据)
# 创建数据卷
docker volume create my-vol
# 使用数据卷
docker run -d -v my-vol:/data --name db mysql
# 绑定主机目录
docker run -d -v /host/path:/container/path nginx
docker run -it -v /本地路径:/容器内路径 ubuntu
📌 示例:挂载当前目录到容器的 /data
docker run -it -v $(pwd):/data ubuntu
🔄 构建自定义镜像(Dockerfile)
创建一个名为 Dockerfile 的文件,内容如下:
FROM ubuntu
RUN apt update && apt install -y curl
CMD ["bash"]
构建镜像:
docker build -t myubuntu .
然后运行:
docker run -it myubuntu
Dockerfile示例
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
🧹 容器清理(释放空间)
# 停止所有容器
docker stop $(docker ps -q)
# 删除所有容器
docker rm $(docker ps -aq)
# 删除所有未使用镜像
docker image prune -a
📦 保存和加载镜像(备份用途)
✅ 保存镜像为 tar 文件:
docker save -o myimage.tar myubuntu
✅ 从 tar 文件加载镜像:
docker load -i myimage.tar
🔍 查看容器日志
docker logs 容器ID或名称
可以加上 -f 实时查看:
docker logs -f 容器ID
🔧 进入已经运行的容器
docker exec -it 容器ID bash
或者有的容器是 sh:
docker exec -it 容器ID sh
📄 导出和导入容器(容器备份)
✅ 导出容器为文件:
docker export 容器ID > container.tar
✅ 导入为新镜像:
cat container.tar | docker import - mycontainerimage
实用技巧
清理无用资源:
docker system prune
查看容器日志:
docker logs -f <container_id>
查看容器资源使用:
docker stats
保存/加载镜像:
docker save -o my-image.tar my-image:1.0 docker load -i my-image.tar
🔙 如何退出容器
✅ 退出但保持容器运行(推荐学习用)
Ctrl + P + Q
这样你就退出了容器的终端,但容器依然在后台运行。
你可以用以下命令查看正在运行的容器:
docker ps
⛔️ 退出并终止容器
在容器中直接输入:
exit
或按下:
Ctrl + D
这样容器会直接停止并退出。
🔄 重新进入已经运行的容器
如果你用 Ctrl + P + Q 退出了一个正在运行的容器,可以用以下命令重新进入:
docker attach 容器ID或容器名
或者使用更推荐的方式(不会干扰容器主终端):
docker exec -it 容器ID bash
✅ 总结:建议记住的几个命令
# 常用容器启动方式(带交互、命名、挂载)
docker run -it --name test -v $(pwd):/data ubuntu
# 后台运行 + 映射端口
docker run -d -p 8080:80 --name web nginx
# 查看运行容器
docker ps
# 停止 + 删除容器
docker stop 容器ID && docker rm 容器ID
# 进入容器
docker exec -it 容器ID bash
# 清理无用资源
docker system prune -a
常见问题
- 权限问题:确保用户属于docker组
- 端口冲突:检查-p参数设置的端口是否被占用
- 数据丢失:使用volume持久化重要数据
- 中文乱码:在Dockerfile中添加:
ENV LANG C.UTF-8
建议通过实际项目练习来巩固这些操作,后续可以学习:
- 容器编排(Kubernetes)
- 镜像优化技巧
- 容器安全实践
- 持续集成/交付(CI/CD)集成
结语
第三百零五篇博文写完,开心!!!!
今天,也是充满希望的一天。