00305 Docker入门教程及常见操作指南


前言

Docker入门教程及常见操作指南。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. Install Docker Engine
  2. Install Docker Engine on Ubuntu

Docker基础概念

  1. 镜像(Image):只读模板,包含运行环境和应用程序
  2. 容器(Container):镜像的运行实例
  3. 仓库(Registry):存储镜像的服务器(默认Docker Hub)

安装Docker

  1. Install Docker Engine
  2. Install Docker Engine on Ubuntu

常用操作

镜像管理

# ✅ 搜索镜像
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

实用技巧

  1. 清理无用资源:

    docker system prune
  2. 查看容器日志:

    docker logs -f <container_id>
  3. 查看容器资源使用:

    docker stats
  4. 保存/加载镜像:

    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

常见问题

  1. 权限问题:确保用户属于docker组
  2. 端口冲突:检查-p参数设置的端口是否被占用
  3. 数据丢失:使用volume持久化重要数据
  4. 中文乱码:在Dockerfile中添加:
ENV LANG C.UTF-8

建议通过实际项目练习来巩固这些操作,后续可以学习:

  • 容器编排(Kubernetes)
  • 镜像优化技巧
  • 容器安全实践
  • 持续集成/交付(CI/CD)集成

结语

第三百零五篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录