常用Docker命令

2022-5-6 大约 2 分钟

# 常用Docker命令

# 管理镜像

# docker build

从Dockerfile创建一个镜像

docker build [options] .
  -t "app/container_name" # 名称
  --build-arg APP_HOME=$APP_HOME # 设置构建时间变量
1
2
3

# docker run

docker run [options] IMAGE
  # 选项参见 `docker create` 
1
2

# 示例

$ docker run -it debian:buster /bin/bash
1

在容器中运行bash

# 管理容器

# docker create

docker create [options] IMAGE
  -a, --attach               # 附加stdout/err
  -i, --interactive          # 附加stdin
  -t, --tty                  # tty
      --name NAME            # 命名镜像
  -p, --publish 5000:5000    # 端口映射(主机:容器)
      --expose 5432          # 将一个端口暴露给链接的容器
  -P, --publish-all          # 发布所有端口
      --link container:alias # linking
  -v, --volume `pwd`:/app    # mount (需要绝对路径)
  -e, --env NAME=hello       # 环境变量
1
2
3
4
5
6
7
8
9
10
11

# 示例

$ docker create --name app_redis_1 \
  --expose 6379 \
  redis:3.0.2
1
2
3

创建一个 redis 容器

# docker exec

docker exec [options] CONTAINER COMMAND
  -d, --detach        # run in background
  -i, --interactive   # stdin
  -t, --tty           # interactive
1
2
3
4

# 示例

$ docker exec app_web_1 tail logs/development.log
$ docker exec -t -i app_web_1 rails c
1
2

进入容器并运行命令

# docker start

docker start [options] CONTAINER
  -a, --attach        # attach stdout/err
  -i, --interactive   # attach stdin

docker stop [options] CONTAINER
1
2
3
4
5

启动/停止容器

# docker update

docker update --restart unless-stopped CONTAINER
1

设置容器的启动策略

# docker ps

$ docker ps
$ docker ps -a
$ docker kill $ID
1
2
3

使用 ps 和 kill 管理容器

# docker logs

$ docker logs CONTAINER_ID
$ docker logs CONTAINER_ID 2>&1 | less
$ docker logs -f CONTAINER_ID 
1
2
3

查看容器日志

# 镜像

# docker images

$ docker images
  REPOSITORY   TAG        ID
  ubuntu       12.10      b750fe78269d
  me/myapp     latest     7b2431a8d968
1
2
3
4
$ docker images -a   
1

# docker rmi

docker rmi IMAGE_ID
1

删除镜像

# 清理

# 清理所有

docker system prune
1

清理悬空的(即不与容器相关联)镜像、容器、卷和网络。

docker system prune -a
1

删除任何停止的容器和所有未使用的镜像

# 容器

# 停止所有正在运行的容器
docker stop $(docker ps -a -q)

# 删除停止的容器
docker container prune
1
2
3
4
5

# 镜像

docker image prune [-a]
1

删除所有的镜像

# 数据卷

docker volume prune
1

删除所有的数据卷