【Docker】docker命令行详解

前言

 用户使用docker时,需要使用docker命令行与docker daemon交互。docker daemon是docker服务的守护进程,负责接收并分发执行docker命令。

命令帮助

可以使用docker或docker help获取命令帮助

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's changes
  cp          Copy files/folders between a container and the local filesystem
 .......

子命令分类

分类 子命令
docker环境信息 info,version
容器生命周期管理 create,exec,kill,pause,run,start,stop,restart,unpause
镜像仓库 login,logout,pull,push,search
镜像管理 build,images,import,load,rmi,save,tag,commit
容器运维操作 attach,export,inspect,port,ps,rename,stats,top,wait,cp,diff,update
容器资源管理 volume,network
系统日志信息 events,history,logs

以下梳理了1张docker命令结构图:
docker command结构图

子命令详解

1. docker环境信息

docker info用于检查docker是否安装正确。如果docker安装正确,会输出docker的配置信息。
docker info结合docker version使用,能够提取到详细的docker环境信息。

2. 容器生命周期管理

 容器生命周期管理主要是容器的启、停,下面主要讲解最常用的docker run命令和负责容器启停的docker start/stop/restart命令。

  • docker run命令
    docker run 可以新建一个容器来运行,命令使用方法如下:
docker run [OPTIONS][IMAGE][COMMAND][ARGS]

示例:

# docker run -i -t --name mytest debian:12.1 /bin/bash
root@2118ee1e4b62:/# 

docker run 启动一个容器,并为其分配一个伪终端执行/bin/bash命令,用户可以在该伪终端与容器进行交互。其中:

  • -i表示使用交互模式,始终保持输入流开放;
  • -t表示分配一个伪终端,一般两个参数可以结合-it;
  • –name指定容器名称,未指定,docker将为容器随机分配一个名字;
    除了这些选项,docker run还提供了更多的选项:
  • -c用于给运行在容器中的所有进程分配CPU的shares值,是一个相对权重,实际处理速度与宿主机的CPU有关系;
  • -m用于限制容器中所有进程分配的内存总量,以B,K,M,G为单位;
  • -v用于挂载一个volume,可以用多个-v参数同时挂载多个volume。volume的格式为[host-dir]:[container-dir]:[rw|ro]
  • -p用于将容器的端口暴露给宿主机的端口,常用格式为hostPort:container-port。暴露端口,可以让外部主机通过宿主机暴露的端口来访问容器内的应用。
  • docker start/stop/restart命令
    对于已经存在的容器,可以通过docker start/stop/restart来启动,停止和重启
    docker start 使用-i选项开启交互模式,始终保持输入流开放,使用-a来附加标准输入、输出或错误输出。docker stop/restart命令使用-t来设定容器停止前的等待时间。

3. Docker registry

dokcer registry是存储容器镜像的仓库,可以启动一个dokcer registry容器来创建私有镜像仓库,以此来完成镜像的搜索,上传和下载

docker run -d -p 5000:5000 --name registry --restart always -v /docker/data/registry:/var/lib/registry registry:latest
  • dokcer pull
    主要用于从私有仓库或共有仓库中拉取image或repository。该命令的使用方式如下:
    docker pull [OPTION] NAME[:tag @DIGEST]
#从官方Hub拉取ubuntu:latest镜像
docker pull ubuntu
#从官方Hub拉取并指明“ubuntu:12.04”tag的镜像
docker pull ubuntu:12.04
  • docker push
    可以将本地的image或repository推送到镜像仓库,使用方式如下:
    docker push [OPTIONS] NAME[:tag]

4. 镜像管理

  • docker images命令
    列出主机上的镜像,默认只列出最顶层的镜像,使用-a显示所有镜像,使用方法如下:
    docker images [OPTIONS] [REPOSITORY[:TAG]]
  • docker rm/rmi命令
    这两个命令的功能都是删除,docker rmi用户删除镜像,docker rm用于删除容器。可同时删除多个镜像或容器,也可按条件来删除。
docker rmi $(docker images -f "dangling=true" -q)

5.容器运维操作

  • docker attach
    docker attach对于开发者来说十分有用,它可以连接到正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互。使用方法如下:
    docker attach [OPTIONS] CONTAINER
  • docker inspect
    用来获取镜像或容器的详细信息,默认会列出全部信息,可以通过–format(-f)参数来指定输出的模板格式。使用方式如下:
    docker inspect [OPTIONS][CONTAINER | IMAGE…]
    示例:
    1.获取容器运行时IP地址
# docker inspect -f '{
   
   { .NetworkSettings.IPAddress}}' nginx
172.17.0.2

2.获取容器运行日志路径

# docker inspect --format='{
   
   {.LogPath}}' nginx
/var/lib/docker/containers/dc43028b8b230dd1d6c3ce339936e946a6ad8f61fce62fd50ebc9a990e31176d/dc43028b8b230dd1d6c3ce339936e946a6ad8f61fce62fd50ebc9a990e31176d-json.log

  • docker ps
    docker ps 可以查看容器的相关信息,默认只显示正在运行的容器信息。使用方法如下:
    docker ps [options]
    docker ps命令常用的选项有-a和-l。-a参数可以查看所有容器,包括停止的容器;-l选项则只查看最新创建的容器,包括不在运行中的容器。

6. 其它子命令

  • docker commit
    commit命令可以将一个容器固化为一个新的镜像。当需要制定特定的镜像时,会进行修改容器的配置。使用方式如下:
    docker commit [OPTIONS] [CONTAINER] [REPOSITORY [:TAG] ]
  • docker events/history/logs
    events,history,logs这3个命令用于查看Docker的系统日志信息。events命令会去打印出实时的系统事件;history命令去打印出指定镜像的历史版本信息,即构建该镜像的每一层镜像的命令记录;logs命令会打印出容器中进程的运行日志。
    使用方法如下:
    docker events [OPTIONS]
    docker history [OPTIONS]
    docker logs [OPTIONS] CONTAINER

猜你喜欢

转载自blog.csdn.net/Ethin_l/article/details/132066365