Docker 入门完全指南

容器这东西,用上了就回不去了。比虚拟机轻,比装环境快,一套走天下。

先搞清楚几个概念

  • 镜像(Image):只读模板,类似装系统的ISO
  • 容器(Container):镜像跑起来的实例,类似装好系统的虚拟机
  • 仓库(Registry):存镜像的地方,Docker Hub是最大的公共仓库

安装

# Ubuntu
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Mac
brew install --cask docker

# Windows
# 下载Docker Desktop,开启WSL2后端

装完验证:

docker --version
docker run hello-world

镜像操作

# 拉镜像
docker pull nginx:1.25

# 看本地镜像
docker images

# 删除镜像
docker rmi nginx:1.25

# 搜索镜像
docker search nginx

容器操作

# 跑容器
docker run -d --name my-nginx -p 80:80 nginx:1.25

# 看运行中的容器
docker ps

# 看所有容器(含停止的)
docker ps -a

# 停止/启动/重启
docker stop my-nginx
docker start my-nginx
docker restart my-nginx

# 进容器里看
docker exec -it my-nginx bash

# 看容器日志
docker logs my-nginx
docker logs -f my-nginx  # 实时跟踪

# 删容器
docker rm my-nginx
docker rm -f my-nginx  # 强制删运行中的

端口映射

# -p 宿主机端口:容器端口
docker run -d -p 8080:80 nginx      # 访问localhost:8080
docker run -d -p 127.0.0.1:3306:3306 mysql  # 只本机访问
docker run -d -P nginx              # 随机映射端口

数据挂载

# -v 宿主机路径:容器路径
docker run -d -v /data/nginx:/usr/share/nginx/html nginx

# 具名卷
docker run -d -v nginx-data:/usr/share/nginx/html nginx

环境变量

docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
docker run -d --env-file ./env.list nginx

清理

# 删停止的容器
docker container prune

# 删没用的镜像
docker image prune

# 全清(慎用)
docker system prune -a

常见坑

  1. 容器删了数据就没了,重要数据必须挂载卷
  2. 容器内时区默认UTC,加-e TZ=Asia/Shanghai或挂载时区文件
  3. 容器内root就是宿主机root,生产环境用-u指定用户
  4. 端口被占用先查netstat -tlnp | grep 端口号

Docker入门就这么点东西,记住pull/run/exec三板斧就能干活了。后面再慢慢学网络、数据卷、编排这些。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐