前言

      本章讲解Docker常用命令之一的镜像命令

方法

1.永远的helloworld

我们知道,任何的语言和技术都有它入门的hello world。就如同我们刚开始学习java那样。

我们在什么也不清楚的时候运行我们的第一个命令:docker run hello-world观察效果如下:

docker desktop 命令行工具 docker命令行api_docker

这个画面代表着我们第一个docker学习的命令运行成功啦!Hello from Docker!

每当我们学习一个命令的时候,它的参数很复杂,我们可以使用命令+--help,docker也不例外。

使用命令docker --help观察docker的所有常用命令:

Options:

  --api-cors-header=                   Set CORS headers in the remote API
  -b, --bridge=                        Attach containers to a network bridge
  --bip=                               Specify network bridge IP
  -D, --debug=false                    Enable debug mode
  -d, --daemon=false                   Enable daemon mode
  --default-gateway=                   Container default gateway IPv4 address
  --default-gateway-v6=                Container default gateway IPv6 address
  --default-ulimit=[]                  Set default ulimits for containers
  --dns=[]                             DNS server to use
  --dns-search=[]                      DNS search domains to use
  -e, --exec-driver=native             Exec driver to use
  --exec-opt=[]                        Set exec driver options
  --exec-root=/var/run/docker          Root of the Docker execdriver
  --fixed-cidr=                        IPv4 subnet for fixed IPs
  --fixed-cidr-v6=                     IPv6 subnet for fixed IPs
  -G, --group=docker                   Group for the unix socket
  -g, --graph=/var/lib/docker          Root of the Docker runtime
  -H, --host=[]                        Daemon socket(s) to connect to
  -h, --help=false                     Print usage
  --icc=true                           Enable inter-container communication
  --insecure-registry=[]               Enable insecure registry communication
  --ip=0.0.0.0                         Default IP when binding container ports
  --ip-forward=true                    Enable net.ipv4.ip_forward
  --ip-masq=true                       Enable IP masquerading
  --iptables=true                      Enable addition of iptables rules
  --ipv6=false                         Enable IPv6 networking
  -l, --log-level=info                 Set the logging level
  --label=[]                           Set key=value labels to the daemon
  --log-driver=json-file               Default driver for container logs
  --log-opt=map[]                      Set log driver options
  --mtu=0                              Set the containers network MTU
  -p, --pidfile=/var/run/docker.pid    Path to use for daemon PID file
  --registry-mirror=[]                 Preferred Docker registry mirror
  -s, --storage-driver=                Storage driver to use
  --selinux-enabled=false              Enable selinux support
  --storage-opt=[]                     Set storage driver options
  --tls=false                          Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/ca.pem         Trust certs signed only by this CA
  --tlscert=~/.docker/cert.pem         Path to TLS certificate file
  --tlskey=~/.docker/key.pem           Path to TLS key file
  --tlsverify=false                    Use TLS and verify the remote
  --userland-proxy=true                Use userland proxy for loopback traffic
  -v, --version=false                  Print version information and quit

Commands:
    attach    Attach 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 from a container's filesystem to the host path
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Stream the contents of a container as a tar archive
    history   Show the history of an image
    images    List images
    import    Create a new filesystem image from the contents of a tarball
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive
    login     Register or log in to a Docker registry server
    logout    Log out from a Docker registry server
    logs      Fetch the logs of a container
    pause     Pause all processes within a container
    port      Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
    ps        List containers
    pull      Pull an image or a repository from a Docker registry server
    push      Push an image or a repository to a Docker registry server
    rename    Rename an existing container
    restart   Restart a running container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image to a tar archive
    search    Search for an image on the Docker Hub
    start     Start a stopped container
    stats     Display a stream of a containers' resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Lookup the running processes of a container
    unpause   Unpause a paused container
    version   Show the Docker version information
    wait      Block until a container stops, then print its exit code

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

有点多哈,大家不要慌,本章仅仅是将基础的镜像命令哦!

2.docker的镜像命令

1)docker images命令

该命令用于列举出本地所拥有的镜像列表,使用docker images效果如下:

docker desktop 命令行工具 docker命令行api_nginx_02

docker images表格的属性说明:

  • REPOSITORY:镜像的仓库源
  • TAG:镜像的标签(版本),可以使用REPOSITORY:TAG指定具体版本的镜像,如不指定,默认最新版本即latest
  • IMAGE ID:镜像的ID
  • CREATED:镜像的创建时间
  • VIRTUAL SIZE :镜像的大小

该命令该有一些其他的参数,这些参数可以组合使用:

  • -a:表示列举出本地所有的镜像(含中间映像层)
  • -q:表示只显示镜像的ID,可以在批量删除是组合使用
  • --digests:表示显示镜像的摘要信息,即备注
  • --no-trunc:表示显示镜像的完整ID

2)docker search XXX 命令

该命令用于查找远程仓库的镜像,需要指定镜像名称,如我们查找nginx的镜像,运行命令:docker search nginx

docker desktop 命令行工具 docker命令行api_docker_03

docker search 表格的属性说明:

  • NAME:镜像的名称
  • DESCRIPTION:镜像的描述
  • STARS:镜像的收藏数
  • OFFICIAL:是否为官方镜像
  • AUTOMATED:是否自动构建

我们在https://hub.docker.com/上搜索,同样可以得到如下的结果:

docker desktop 命令行工具 docker命令行api_Docker_04

该命令该有一些其他的参数,这些参数可以组合使用:

  • --no-trunc:表示显示镜像的完整DESCRIPTION
  • -s:列举收藏数不小于指定值的镜像
  • --automated:列举出自动构建的镜像

docker desktop 命令行工具 docker命令行api_docker_05

3)docker pull XXX:[TAG] 命令

该命令用于拉取远程镜像仓库的镜像到本地仓库,需要附加镜像名称参数,如我们拉取nginx镜像:docker pull nginx

如果我们不加TAG的话,默认拉取最新的版本。

docker desktop 命令行工具 docker命令行api_nginx_06

我们再次使用docker images列举镜像:

docker desktop 命令行工具 docker命令行api_Docker_07

我们可以看到,我们的镜像被拉取到了本地仓库。

4)docker rmi XX 命令

该命令用于删除本地仓库的指定镜像,需要给出镜像ID

  • 删除一个镜像:docker rmi ID
  • 删除多个镜像:docker rmi ID1 ID2 ID3....
  • 删除全部镜像:docker rmi $(docker images -q)

该命令该有一些其他的参数:

  • -f:表示强制删除该镜像

docker desktop 命令行工具 docker命令行api_docker_08

docker desktop 命令行工具 docker命令行api_docker_09