【docker】常用命令

帮助命令

docker --version	# 显示 Docker 版本信息
docker version		# 显示 Docker 版本信息
docker info			# 显示 Docker 系统信息,包括镜像数量和容器数量
docker --help		# 帮助文档

一、镜像命令

1、拉取镜像

从镜像仓库中下载镜像到本地,一般是保存在/var/lib/docker目录(分层下载)

# 拉取最新版本的镜像
docker pull ubuntu

# 拉取指定版本镜像
docker pull ubuntu:14.04

2、查看本地镜像列表

同一个仓库源可以有多个 TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG 定义不同的镜像,默认使用 latest 镜像

# 语法:docker images [选项] [仓库[:标签]]

-a	# 列出本地所有镜像
-f	# 显示过滤的镜像
-q	# 只显示镜像id
--digests	# 显示镜像的摘要信息
--no-trunc	# 不截断输出(显示完整的镜像id)

# 列出本地主机上的镜像
[root@wzg ~]# docker images

# 显示所有镜像id(可实现镜像的批量操作)
[root@wzg ~]# docker images -aq
[root@wzg ~]# docker rmi $(docker images centos -aq)

# 显示ubuntu镜像的摘要信息
[root@wzg ~]# docker images ubuntu --digests 

# 显示ubuntu完整的镜像id
[root@wzg ~]# docker images ubuntu --no-trunc

# -f选项
# 通过dangling的布尔值列出无标签的镜像
[root@wzg ~]# docker images -f dangling=true

# -f before=(<镜像名>[:标签]|<镜像ID>|<镜像digest>)   过滤出指定镜像之前创建的
# -f since=(<镜像名>[:标签]|<镜像ID>|<镜像digest>)    过滤出指定镜像之后创建的

# 使用镜像名加标签标识
[root@wzg ~]# docker images -f before=centos:latest

# 使用镜像ID标识
[root@wzg ~]# docker images -f before=5d0da3dc9764

# 使用digest值标识(格式为:仓库名称@摘要)
[root@wzg ~]# docker images -f since=ubuntu@sha256:0f71fa8d4d2d4292c3c617fda2b36f6dabe5c8b6e34c3dc5b0d17d4e704bd39c

3、设置镜像标签

标签就是描述镜像的版本信息,可以使用docker tag为镜像添加标签,即为镜像命名。
镜像仓库可以有多个标签。一个镜像也可以有多个标签。
如果一个镜像有多个标签,只有当最后一个标签被删除时,才真正删除镜像。

# 语法:docker tag  源镜像[:标签]  目标镜像[:标签]
# 创建标签让目标镜像关联到源镜像

# 为由镜像ID标识的镜像加上标签
[root@wzg ~]# docker tag 5d0da3dc9764 centos:version1.0

# 为由仓库名称标识的镜像加上标签
[root@wzg ~]# docker tag centos centos:version2.0       

# 为由仓库名称和镜像ID组合标识的镜像加上标签
[root@wzg ~]# docker tag centos:latest centos:version3.0

# 指定一个注册服务器的主机名(可能包含端口)
[root@wzg ~]# docker tag 5d0da3dc9764 aliyun:5000/centos:version4.0
[root@wzg ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
aliyun:5000/centos   version4.0          5d0da3dc9764        6 months ago        231MB
centos               latest              5d0da3dc9764        6 months ago        231MB
centos               version1.0          5d0da3dc9764        6 months ago        231MB
centos               version2.0          5d0da3dc9764        6 months ago        231MB
centos               version3.0          5d0da3dc9764        6 months ago        231MB

4、查看镜像详细信息

docker inspect 命令查看Docker对象(镜像、容器、任务)的详细信息。默认以JSON数组格式输出结果。

# 语法:docker inspect [选项] 名称|ID 

-f (--format)	# 指定特定内容输出
-s    			# 容器类型显示全部文件大小
--type		    # 返回json格式信息

# 查看centos/httpd镜像详细信息
[root@wzg ~]# docker inspect centos/httpd 

# 获取镜像的体系结构
[root@wzg ~]# docker inspect --format='{{.Architecture}}' centos/httpd
amd64

# 获取镜像的根文件系统信息
[root@wzg ~]# docker inspect --format='{{.RootFS}}' centos/httpd
{layers [sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956 sha256:d15c61d3ecdaa582e75e2966792238c0325578ec9e0d2a1ed3183995345323d6 sha256:7c937d8a9f4f7a9761c292a6c7bcff1cc10384985282fa4fa5a04bfdb155bc90 sha256:920640105caf8a18f7db0df2638b863cbc73c2e0668d0559c5f9c93c474e8879] }

# 用JSON格式获取镜像的根文件系统信息
[root@wzg ~]# docker inspect --format='{{json .RootFS}}' centos/httpd
{"Type":"layers","Layers":["sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956","sha256:d15c61d3ecdaa582e75e2966792238c0325578ec9e0d2a1ed3183995345323d6","sha256:7c937d8a9f4f7a9761c292a6c7bcff1cc10384985282fa4fa5a04bfdb155bc90","sha256:920640105caf8a18f7db0df2638b863cbc73c2e0668d0559c5f9c93c474e8879"]}

5、查看镜像的构建历史

查看镜像的构建历史,即 DockerFile的执行过程,每一层镜像都相当于一个子镜像。

# 语法:docker history [选项] 镜像名

[root@wzg ~]# docker history ubuntu:16.04
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
b6f507652425        6 months ago        /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           6 months ago        /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B                  
<missing>           6 months ago        /bin/sh -c rm -rf /var/lib/apt/lists/*          0B                  
<missing>           6 months ago        /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B                
<missing>           6 months ago        /bin/sh -c #(nop) ADD file:11b425d4c08e81a3e…   135MB               

# <missing>行表明相应的层在其他系统上构建,并且已经不可用了,可以忽略这些层。
# CREATED BY 表示每一层的构建操作命令

# 显示完整的操作命令
[root@wzg ~]# docker history ubuntu:16.04 --no-trunc

6、查找镜像

docker search 命令搜索docker hub仓库中的镜像

# 语法:docker search 镜像

# 可选项
--filter=stars=50		# 列出收藏数不小于指定值的镜像

[root@wzg ~]# docker search mysql

7、删除本地镜像

可以使用镜像的ID、标签、镜像摘要标识符来指定删除本地镜像。
如果一个镜像有多个标签,则当最后一个标签被删除时,镜像才真正删除。

# 语法:docker rmi [选项] 镜像名 
# 语法:docker image rm [选项] 镜像名 

# 选项:
-f    		# 强制删除
--no-prune  # 不删除没有标签的父镜像

# 删除单个
docker rmi 镜像ID
docker rmi 镜像名:tag
docker rmi 镜像摘要

# 删除全部
docker rmi -f $(docker images -qa)

# 镜像摘要标识,先删了摘要再删了镜像
[root@wzg ~]# docker images --digests
REPOSITORY           TAG          DIGEST               IMAGE ID           CREATED           SIZE
centos/httpd         latest       sha256:26c667……369   2cc07fbb5000       3 years ago       258MB
[root@wzg ~]# docker image rm centos/httpd@sha256:26c6674463ff3b8529874b17f8bb55d21a0dcf86e025eafb3c9eeee15ee4f369
Untagged: centos/httpd@sha256:26c6674463ff3b8529874b17f8bb55d21a0dcf86e025eafb3c9eeee15ee4f369
[root@wzg ~]# docker images --digests -a
REPOSITORY           TAG           DIGEST         IMAGE ID           CREATED             SIZE
centos/httpd         latest        <none>         2cc07fbb5000       3 years ago         258MB
[root@wzg ~]# docker rmi centos/httpd:latest
……

二、容器命令

1、ps显示容器列表

# 语法:docker ps [OPTIONS]

	# 不带选项列出正在运行的容器
-a	# 列出所有的容器
-q	# 只显示容器编号
-s	# 显示容器所用的空间
-l	# 显示最近创建的容器
-n=?	# 显示最近n个创建的容器
--no-trunc	# 显示完整id信息
-f		# 过滤容器,可以通过id,name,status
# docker ps -af id= [name=] [status=]
# docker pause $(docker ps -af status=running -q)

2、run创建并启动容器

使用 docker run 创建一个新的容器并启动,docker在后台运行的操作如下:

1.检查本地是否存在指定的镜像,如没有就从仓库自动下载
2.基于镜像创建容器并启动
3.为容器分配文件系统,并在镜像层顶部增加一个可读写的容器层
4.从主机配置的网桥接口将一个虚拟接口桥接到容器
5.从网桥的地址池给容器分配一个IP地址
6.运行用户指定的应用程序
7.根据设置决定是否终止容器运行

# 语法
docker run [OPTIONS选项] IMAGE镜像 [COMMAND命令] [ARG参数...]

-d	# 后台运行容器,并返回容器ID。(不加-d,退出容器将自动终止容器)
-i	# 容器的标准输入保持打开,以交互模式运行容器
-t	# 为容器重新分配一个伪输入终端
-p	# 设置端口映射,格式:'主机端口:容器端口'
--rm	# 容器退出时自动删除
--name	# 为容器指定名称
-v		# 将主机本地的目录和容器目录绑定,实现数据的持久化,将数据存储在本地文件系统中
--restart	#设置重启策略,如设置always,表示容器即使异常退出也会自动重启
--dns		#指定容器使用的dns服务器(默认是和主机的dns设置一致)


# 启动容器执行命令后自动终止容器
docker run ubuntu:16.04 /bin/echo '这是一个自动终止的容器'

# 启动容器执行命令后退出自动删除
docker run --rm ubuntu:16.04  /bin/echo '这是一个自动删除的容器'

# 用交互模式启动容器,在容器内执行/bin/bash命令
docker run -ti ubuntu:16.04 /bin/bash	#只要退出容器,容器就自动终止

# 启动容器并让其以守护进程的形式在后台运行
docker run -d ubuntu:16.04		#容器立即退出,bash没有连接到终端且无法运行
docker run -td ubuntu:16.04 /bin/bash

# 指定端口和名称
docker run -p 80:80 --name test ubuntu:16.04

3、退出容器

Ctrl+D	# 容器停止退出
exit	# 容器停止退出
ctrl+P+Q	# 容器不停止退出

4、rm删除容器

# 删除容器
docker rm CONTAINER容器…		# 删除指定容器(-f强制删除运行中的容器)
docker rm -f $(docker ps -aq)	# 删除所有容器

# 删除所有未运行的容器(created和exited状态)
docker container prune

5、inspect查看详情(元数据)

# inspect命令查看容器详细信息
# 语法:docker container inspect [OPTIONS选项] CONTAINER容器
-s				# 显示所有文件大小
-f (--format)	#筛选输出内容

# 获取容器的名称
docker container inspect -f='{{.Name}}'

# 通过JSON格式的State子节获取容器的状态元数据
docker container inspect --format='{{.State}}' CONTAINER容器
docker container inspect --format='{{json .State}}' CONTAINER容器

# 多层次筛选信息
docker container inspect --format='{{.NetworkSettings.Networks.bridge.Gateway}}'

6、attach进入容器

实质是将 Docker 主机本地的标准输入、标准输出和错误流连接到了一个正在运行的容器上。

# 语法:docker attach [OPTIONS选项] CONTAINER容器

--detach-keys string 	# 覆盖分离容器的键顺序
--no-stdin  			# 不连接标准输入(问题:ctrl+C依然将容器停掉?)                              
--sig-proxy         # 将所有接收的信号代理给进程(=false,表示不将信息代理给进程,ctrl+C退出但不停止容器)

# 示例:连接到一个运行中的容器并从中退出
[root@wzg ~]# docker run -d --name topdemo ubuntu /usr/bin/top -b
[root@wzg ~]# docker attach topdemo
[root@wzg ~]# docker attach --sig-proxy=false topdemo

7、exec进入容器

docker exec [OPTIONS选项] CONTAINER容器 COMMAND命令 [ARG参数...]

  -d, --detach           	# 后台运行(分离模式)
      --detach-keys string  # 覆盖分离容器的键顺序
  -e, --env list            # 设置环境变量
  -i, --interactive         # 保持标准输入开启
      --privileged          # 给予扩展权限
  -t, --tty                	# 分配一个伪输入终端
  -u, --user string        	# 用户名或ID
  -w, --workdir string      # 容器内工作目录

# 案例:进入容器,交互执行命令
[root@wzg ~]# docker exec -ti topdemo /bin/bash

# 案例:不进入容器执行命令
[root@wzg ~]# docker exec -i topdemo echo '11111'
11111

# 区别
# exec	是在容器中打开新的终端,并且可以启动新的进程
# attach 直接进入容器启动命令的终端,不会启动新的进程

8、其他命令

# 创建容器
docker create [OPTIONS选项] IMAGE镜像 [COMMAND命令] [ARG参数...]

# 其他命令
docker start CONTAINER容器…		# 启动容器
docker restart CONTAINER容器…		# 重启容器
docker stop CONTAINER容器…		# 停止容器
docker kill CONTAINER容器…		# 强制停止容器
docker pause CONTAINER容器…		# 挂起容器(暂停容器中所有的进程)
docker unpause CONTAINER容器…		# 恢复容器中被暂停的所有进程
docker rename CONTAINER容器 NEW_NAME	# 重命名容器
docker top CONTAINER容器…			# 查看容器中运行的进程信息(UID是用户ID,PID是进程ID,PPID是父进程ID)
docker logs CONTAINER容器…		# 查看容器的输出信息
	# -t 显示时间戳
	# -f 打印最新的日志
	# --tail number 显示多少条
docker cp 容器id:容器内路径 目的主机路径		#从容器内拷贝文件到主机上

docker命令

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile                    # 构建镜像
  commit      Create a new image from a container changes         # 从变动的容器创建镜像
  cp          Copy files/folders between a container and the local filesystem       # 本地和容器间复制
  create      Create a new container
  diff        Inspect changes to files or directories on a container filesystem
  events      Get real time events from the server
  exec        Run a command in a running container                # 在运行中的容器中执行命令
  export      Export a container filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information                     # 显示系统信息
  inspect     Return low-level information on Docker objects      # 返回容器的详细信息
  kill        Kill one or more running containers                 # 强制停止一个容器
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container                       # 获取容器的日志
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers                                     # 查看容器列表
  pull        Pull an image or a repository from a registry       # 拉取镜像
  push        Push an image or a repository to a registry         # 推送镜像
  rename      Rename a container
  restart     Restart one or more containers                      # 重启容器
  rm          Remove one or more containers                       # 删除容器
  rmi         Remove one or more images                           # 删除镜像
  run         Run a command in a new container                   
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

容器命令

Usage:  docker container COMMAND
  attach        # 连接正在运行的容器
  commit        # 从当前容器创建新镜像
  cp         	# 在容器和文件系统间复制文件和目录
  create     	# 创建新容器
  diff          # 检查容器创建以来文件系统上文件或目录的更改
  exec          # 从正在运行的容器中执行命令
  export        # 将容器文件系统导出为归档文件
  inspect      	# 显示容器详细信息
  kill         	# 杀死一个正在运行的容器(强关)
  logs         	# 获取容器的日志信息
  ls            # 输出容器列表(docker ps)
  pause        	# 暂停一个或多个容器的所有进程
  port      	# 列出容器的端口映射或特定的映射
  prune        	# 删除所有停止的容器
  rename      	# 对容器改名
  restart       # 重启容器
  rm           	# 删除容器
  run          	# 创建新容器并执行命令
  start      	# 启动容器
  stats        	# 显示容器资源使用统计信息
  stop       	# 停止容器
  top         	# 显示容器正在运行的进程
  unpause     	# 恢复容器中被暂停的所有进程
  update 	# 更新容器配置
  wait          # 阻塞容器运行,直到容器停止运行,输出退出码

声明:未经许可,不得转载

posted @ 2022-03-28 17:01  王智刚  阅读(186)  评论(0编辑  收藏  举报