记录一些 Docker 常用命令。

环境信息

docker -v
docker info

镜像相关命令

docker search <keyword>
docker pull <image-name>[:<tag>]
docker images
docker rmi <image-name>
docker inspect [--type image] <image-name>

容器相关命令

docker run                          \
  [--rm]                            \
  [-d|-it|-itd]                     \
  [--name <container-name>]         \
  [-p <host-port>:<container-port>] \
  [-v <host-dir>:<container-dir>]   \
  [-e <env-variable>[=<value>]]     \
  <image-name>[:<tag>]              \
  [<cmd>] [<args>]
docker ps [-a]
docker stop <container-name>
docker start <container-name>
docker exec -it <container-name> /bin/sh
docker cp <file> <container-name>:<path>
docker logs <container-name>
docker inspect [--type container] <container-name>
docker rm <container-name>

常用镜像部署

MySQL

https://hub.docker.com/_/mysql

docker run -d --name <container-name> -e MYSQL_ROOT_PASSWORD=<password> mysql:8.0
docker run -d --name <container-name> -e MYSQL_ALLOW_EMPTY_PASSWORD=1 mysql:8.0

docker exec -it <container-name> mysql

PostgreSQL

https://hub.docker.com/_/postgres

docker run -d --name <container-name> -e POSTGRES_PASSWORD=<password> postgres:17

docker exec -it <container-name> psql -U postgres

镜像构建相关

https://docs.docker.com/reference/dockerfile

Dockerfile 如下:

# 指定基础镜像
FROM <image-name>[:<tag>]

# 配置环境变量
ENV <var>=<value>
ENV PATH="/some/path:${PATH}"

# 拷贝文件 <file> 到镜像中,目标路径为 <path>
COPY <file> <path>

# 切换工作路径
WORKDIR <path>

# 执行命令
RUN <cmd> [<arg> ...]
RUN mkdir some_dir && tar -zxf some_file.tar.gz -C some_dir

# 指定容器启动时默认执行的命令
ENTRYPOINT <cmd> [<arg> ...]

构建相关命令:

# 构建镜像
docker build -t <image-name> .

# 删除构建缓存
docker builder prune [--all]