参考资料
- 《官方文档》
- 《Docker 命令大全》
Docker命令使用说明
Docker命令分为多级命令,同级命令可以合并使用,子级命令也可以不加上级命令直接使用。
所有命令均可通过--help
查看对应帮助文档。
docker [命令] --help
其中:[]
包裹内容为可选内容。
命令语法中的[OPTIONS]
参数为--help
中Options
选项。
- 示例
- 查看images帮助文档
docker images --help
- 输出
# 语法
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
# 作用
List images
# Options选项
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show numeric IDs
- 使用
# 查看所有镜像,并显示镜像摘要
docker images --digests
- 输出
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
hello-world latest sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202 bf756fb1ae65 6 months ago 13.3kB
命令集
Docker系统
查看版本:docker -v
查看Docker版本信息。
- 示例
docker -v
# 或
docker --version
# 或
docker version # 详细信息
查看详情:docker info
查看Docker详细信息。
- 示例
docker info
镜像: Images
查看镜像:docker images
查看Docker镜像。
- 语法
docker images [OPTIONS] [REPOSITORY[:TAG]]
- 示例
- 查看镜像
docker images
- 输出
# REPOSITORY 仓库
# TAG 标签
# IMAGE ID 镜像ID
# CREATED 创建时间
# SIZE 大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 6 months ago 13.3kB
- 只显示镜像ID
doccker images -q
拉取镜像: docker pull
拉取Docker镜像到本地。
- 语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- 示例
- 拉取nginx镜像
docker pull nginx
- 拉取指定版本nginx镜像
docker pull nginx:1.18.0
Docker默认从DockerHub拉取镜像,镜像具体版本推荐到DockerHub查看。点击跳转DockerHub
删除镜像:docker rmi
删除Docker镜像。
- 语法
docker rmi [OPTIONS] IMAGE [IMAGE...]
- 示例
# 删除hello-world镜像
docker rmi hello-world
# 骚操作,删除所有镜像
docker rmi $(docker images -q)
构建镜像:docker build
通过Dockerfile构建镜像。
- 语法
docker build [OPTIONS] PATH | URL | -
- 常用参数
参数 | 示例 | 说明 |
---|---|---|
-t |
-t mytomcat:latest |
指定构建的镜像名称和版本 |
-f |
-f Dockerfile_MyTomcat |
指定Dockerfile文件,默认为Dockerfile |
. |
. |
指定上下文 |
- 示例
- 编写Dockerfile
# 编写Dockerfile
FROM centos
RUN echo "Hello World!!" > hello_world.txt
- 根据Dockerfile构建镜像
# 注意后面的“.”
docker build -t mytomcat .
# 或
docker build -f Dockerfile -t mytomcat:latest .
# 或
docker build -f Dockerfile -t mytomcat .
容器:Containers
使用容器ID时,可以只使用ID前几位,只要能标识唯一性就可以。
例如:容器ID为
fac240c44f79
,使用时,可以使用fa
标识当前容器。以启动为例:docker start fa
查看容器:docker ps
查看容器信息。
- 语法
docker ps [OPTIONS]
- 示例
# 查看所有运行的容器
docker ps
# 查看所有容器
docker ps -a
# 查看所有容器的ID
docker ps -a -q
# 或
docker ps -aq
查看元数据:docker inspect
查看容器/镜像的元数据信息。
- 语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
- 示例
# 查看nginx元数据
docker inspect nginx
运行容器:docker run
以镜像为模板,运行容器。
- 语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 常用参数
参数 | 示例 | 说明 |
---|---|---|
-d |
后台运行 | |
-name |
-name nginx | 给容器命名 |
-p |
-p 80:80 | 端口映射。宿主机端口:docker端口 |
-P |
宿主机随机端口映射 | |
-it |
-it nginx /bin/bash | 交互模式启动。 |
-it
交互模式启动,必须指定和谁交互。比如上面的/bin/bash参数,就表示和bash交互。常用:sh、bash。
- 示例
# 后台启动nginx
docker run -d -p 80:80 nginx
# 后台启动nginx 并命名
docker run -d -name nginx_test -p 80:80 nginx
# 交互模式启动nginx
docker run -it -p 80:80 nginx /bin/bash
# 交互模式启动nginx并命名
docker run -it -name nginx_test -p 80:80 nginx /bin/bash
这里有个坑
Docker 使用交互模式启动,会直接进入容器内部,当使用exit退出时,容器也会自动停止。
交互模式启动容器,退出不停止方法:
ctrl + p + q
启动容器:docker start
启动容器。
- 语法
docker start [OPTIONS] CONTAINER [CONTAINER...]
- 示例
# 启动nginx。可以通过容器ID或容器名启动
docker start nginx
docker run
和docker start
的区别:
docker run
:以镜像为模板启动,启动时需要传递参数。比如端口映射等。
docker start
:以容器为模板启动,启动时默认使用docker run的参数。大白话:
docker run启动的时候要传参数,只在第一次启动时使用。
docker start直接用docker run的参数,不用单独再传参数了。
重启容器:docker restart
重启指定容器。
- 语法
docker restart [OPTIONS] CONTAINER [CONTAINER...]
- 示例
# 重启nginx容器
docker restart nginx
停止容器
停止指定容器。
docker stop
(推荐)
- 语法
docker stop [OPTIONS] CONTAINER [CONTAINER...]
- 示例
# 停止nginx。可以通过容器ID或容器名停止
docker stop nginx
# 骚操作,停止所有正在运行的容器
docker stop $(docker ps -q)
docker kill
-
docker kill
和docker stop
类似,docker kill推荐在stop停止不了的时候使用。
重命名:docker rename
重命名容器。
- 语法
docker rename CONTAINER NEW_NAME
- 示例
# 将nginx_test重命名为nginx
docker rename nginx_test nginx
进入容器
进入容器内部。
docker exec
(推荐)
- 语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
- 示例
# 以交互模式进入nginx容器内部
docker exec -it nginx /bin/bash
# 查看容器内部结构
whereis -l
docker attach
- 语法
docker attach [OPTIONS] CONTAINER
- 示例
docker attach nginx
docker exec
和docker attach
对比
docker exec
:以新会话方式进入容器,使用exit退出时,不会停止容器。
docker attach
:进入容器,并保持原有会话,使用exit退出时,会停止容器。
查看日志:docker logs
查看容器的日志。
- 语法
docker logs [OPTIONS] CONTAINER
- 示例
# 查看最新10条nginx日志
docker logs --tail 10 nginx
查看进程:docker top
查看容器中运行的进程信息,支持 ps 命令参数。
- 语法
docker top CONTAINER [ps OPTIONS]
- 示例
# 查看nginx内部进程
docker top nginx
查看资源:docker stats
查看容器实时资源统计信息。
- 语法
docker stats [OPTIONS] [CONTAINER...]
- 示例
# 查看nginx实时资源占用情况
docker stats nginx
# 查看所有容器实时资源占用情况
docker stats -a
拷贝文件:docker cp
用于容器与主机之间的数据拷贝。
- 语法
# 容器=>主机
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
# 主机=>容器
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
- 示例
# 将nginx容器的配置文件拷贝到当前目录
docker cp nginx:/etc/nginx/nginx.conf .
# 将本地当前目录的配置文件拷贝到nginx容器
docker cp ./nginx1.conf nginx:/etc/nginx/
拷贝文件和Docker容器是否启动无关。
导出容器:docker export
导出指定容器。
- 语法
docker export [OPTIONS] CONTAINER
- 示例
# 导出nginx容器到当前目录
docker exprot nginx > nginx.tar
# 或
docker export nginx -o nginx.tar
导入容器:docker import
导入指定容器,并在docker创建对应镜像。
- 语法
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
- 示例
# 从当前目录导入nginx容器
docker import nginx.tar nginx:v1.0
# 通过http导入容器
docker import http://example.com/example.tgz example/imagere:v1.0
提交容器:docker commit
根据容器的更改创建新镜像。
- 语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- 常用参数
参数 | 说明 |
---|---|
-a | 指定作者 |
-m | 提交描述 |
- 示例
# 1. 提交tomcat容器
docker commit -a "vv_lin" -m "commit message" tomcat tomcat_custom:1.0
# 2. 查看提交的容器
docker images
删除容器:docker rm
删除指定的容器。
- 语法
docker rm [OPTIONS] CONTAINER [CONTAINER...]
- 示例
# 删除nginx容器
docker rm nginx
# 骚操作,删除所有容器
docker rm $(docker ps -a -q)
# 或
docker rm $(docker ps -aq)