03_Docker基础命令

参考资料

  • 《官方文档》
  • 《Docker 命令大全》

Docker命令使用说明

Docker命令分为多级命令,同级命令可以合并使用,子级命令也可以不加上级命令直接使用。

所有命令均可通过--help查看对应帮助文档。

docker [命令] --help

其中:[]包裹内容为可选内容。

命令语法中的[OPTIONS]参数为--helpOptions选项。

  • 示例
  1. 查看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
  1. 使用
# 查看所有镜像,并显示镜像摘要
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]]
  • 示例
  1. 查看镜像
docker images
  • 输出
# REPOSITORY 仓库
# TAG 标签
# IMAGE ID 镜像ID
# CREATED 创建时间
# SIZE 大小
REPOSITORY          TAG                   IMAGE ID            CREATED             SIZE
hello-world         latest                bf756fb1ae65        6 months ago        13.3kB
  1. 只显示镜像ID
doccker images -q

拉取镜像: docker pull

拉取Docker镜像到本地。

  • 语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • 示例
  1. 拉取nginx镜像
docker pull nginx
  1. 拉取指定版本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
. . 指定上下文
  • 示例
  1. 编写Dockerfile
# 编写Dockerfile
FROM centos
RUN echo "Hello World!!" > hello_world.txt
  1. 根据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 rundocker 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 killdocker 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 execdocker 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)

你可能感兴趣的:(03_Docker基础命令)