作者:Carrie
出处:https://home.cnblogs.com/u/hanjiali
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

安装完的docker后,我们就要接触相应的基础命令,下面我们分镜像命令和容器命令进行相应的介绍。

查看镜像的相关命令

1标识镜像的方法 

  • 第一种:REPOSITORY :TAG 
  • 第二种:IMAGE ID (镜像id)

  • 		1、REPOSITORY :TAG
    			centos:latest
    		2、IMAGE ID  (镜像id)
            	0d120b6ccaa8 (sha256:64位的号码,默认只截取12位)

 

2.查看镜像

  • docker image ls  查看镜像信息
  • docker image ls --no-trunc  详细查看镜像信息
  • [root@localhost ~]# docker image ls 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        8 days ago          133MB
    centos              7                   8652b9f0cb4c        2 weeks ago         204MB
    centos              7.9.2009            8652b9f0cb4c        2 weeks ago         204MB
    centos              7.6.1810            f1cb7c7d58b7        20 months ago       202MB
    [root@localhost ~]# docker image ls --no-trunc
    REPOSITORY          TAG                 IMAGE ID                                                                  CREATED             SIZE
    nginx               latest              sha256:bc9a0695f5712dcaaa09a5adc415a3936ccba13fc2587dfd76b1b8aeea3f221c   8 days ago          133MB
    centos              7                   sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf   2 weeks ago         204MB
    centos              7.9.2009            sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf   2 weeks ago         204MB
    centos              7.6.1810            sha256:f1cb7c7d58b73eac859c395882eec49d50651244e342cd6c68a5c7809785f427   20 months ago       202MB

   

  • 描述

 

  • docker image ls 列出映像

 

  • 用法

  • docker image ls [OPTIONS] [REPOSITORY[:TAG]]
  • 选项

名字,速记 默认 描述
--all , -a   Show all images (default hides intermediate images) -----显示所有映像(默认隐藏中间映像)
--digests   Show digests -----显示摘要
--filter , -f   Filter output based on conditions provided -----根据提供的条件过滤输出
--format   Pretty-print images using a Go template -----使用Go模板的漂亮打印映像
--no-trunc   Don’t truncate output -----不要截断输出
--quiet , -q   Only show numeric IDs -----仅显示数字ID

3.查看镜像详细信息

  • 1.通过id号进行查看(id号不需要全部复制)
    [root@localhost ~]# docker image inspect bc9a0695f5712dcaaa
    2.通过镜像名:tag进行查看
    [root@localhost ~]# docker image inspect nginx:lates

4.image 的基础命令

  • 1.	 [root@localhost Carrie]# docker image --help
    Usage:	docker image COMMAND
    
    Manage images
    
    Commands:
      build       Build an image from a Dockerfile
      创建       从dockerfile生成一个镜像
      history     Show the history of an image
      历史       显示镜像的历史
      import      Import the contents from a tarball to create a filesystem image

                                 从tarball导入内容以创建文件系统映像。

      inspect     Display detailed information on one or more images
      检查       在一个或多个图像上显示详细信息
      load        Load an image from a tar archive or STDIN
      加载        从a tar archive or STDIN中加载一个镜像
      ls          List images
      list show    列出镜像
      prune       Remove unused images
      修剪        删除未使用的镜像
      pull        Pull an image or a repository from a registry
      拉取       从注册表中拉取镜像或存储库
      push        Push an image or a repository to a registry
      推          给注册表推镜像或存储库
      rm          Remove one or more images
      删除          删除一个或者多个镜像
      save        Save one or more images to a tar archive (streamed to STDOUT by default)
      保存        保存一个或者多个镜像到a tar archive (streamed to STDOUT by default)
      tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE   
      标记       创建一个标志 (改名作用)
    

      

查看docker信息的命令

1.查看docker的版本信息

  •  docker version
  • [root@localhost docker]# docker version
    Client: Docker Engine - Community
     Version:           19.03.13
     API version:       1.40
     Go version:        go1.13.15
     Git commit:        4484c46d9d
     Built:             Wed Sep 16 17:03:45 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.13
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.15
      Git commit:       4484c46d9d
      Built:            Wed Sep 16 17:02:21 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.3.7
      GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    

 

 

2.查看docker的详细信息

  •  docker info
  • [root@localhost docker]# docker info
    Client:
     Debug Mode: false
    
    Server:
     Containers: 0
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 1
     Server Version: 19.03.13
     Storage Driver: overlay2
      Backing Filesystem: xfs
      Supports d_type: true
      Native Overlay Diff: true
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
     runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
     init version: fec3683
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-1160.6.1.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 2
     Total Memory: 3.682GiB
     Name: localhost.localdomain
     ID: HKP3:SX23:3TYR:OV22:A6HB:7GZW:L5IY:PMFF:Q7BS:4PZP:X2UB:OEHT
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Registry Mirrors:
      https://72idtxd8.mirror.aliyuncs.com/
     Live Restore Enabled: false
    

 

镜像的基础操作

 

1.查找镜像

  • docker search  nginx (从网上查找的镜像)
  • 如果想指定星级 可以加-s 星级数(docker search nginx -s 20) ----------->显示星级数高于20的镜像
  • [root@localhost docker]# docker search nginx
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    名字 描述 星级 是否官方创建
    nginx Official build of Nginx. 14063 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1912 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 795 [OK] linuxserver/nginx An Nginx container, brought to you by LinuxS… 131 jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 115 tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 105 [OK] bitnami/nginx Bitnami nginx Docker Image 90 [OK] alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou… 80 [OK] jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 72 [OK] nginxdemos/hello NGINX webserver that serves a simple page co… 63 [OK] nginx/nginx-ingress NGINX Ingress Controller for Kubernetes 45 privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al… 42 [OK] nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 21 schmunk42/nginx-redirect A very simple container to redirect HTTP tra… 19 [OK] nginx/nginx-prometheus-exporter NGINX Prometheus Exporter 15 centos/nginx-112-centos7 Platform for running nginx 1.12 or building … 15 staticfloat/nginx-certbot Opinionated setup for automatic TLS certs lo… 14 [OK] raulr/nginx-wordpress Nginx front-end for the official wordpress:f… 13 [OK] centos/nginx-18-centos7 Platform for running nginx 1.8 or building n… 13 mailu/nginx Mailu nginx frontend 8 [OK] bitwarden/nginx The Bitwarden nginx web server acting as a r… 7 flashspys/nginx-static Super Lightweight Nginx Image 7 [OK] bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 6 [OK] wodby/nginx Generic nginx 1 [OK] ansibleplaybookbundle/nginx-apb An APB to deploy NGINX

      

2.从仓库中拉取镜像(下载镜像)

  • docker image pull nginx 
  • [root@localhost docker]# docker image ls -a
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    [root@localhost docker]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    852e50cd189d: Pull complete 
    571d7e852307: Pull complete 
    addb10abd9cb: Pull complete 
    d20aa7ccdb77: Pull complete 
    8b03f1e11359: Pull complete 
    Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    [root@localhost docker]#  docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        9 days ago          133MB
    

 

3.从容器中导出镜像到宿主机

  • docker image save nginx > /Carrie/nginx  
  • [root@localhost Carrie]# docker image save nginx > /Carrie/nginx
    

 

 

4.删除镜像

  • 删除一个镜像:docker image  rm nginx 
  • 删除所有镜像:docker image rmi -f  'docker image ls -q'
  • [root@localhost Carrie]# docker image rm nginx
    Untagged: nginx:latest
    Untagged: nginx@sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
    Deleted: sha256:bc9a0695f5712dcaaa09a5adc415a3936ccba13fc2587dfd76b1b8aeea3f221c
    Deleted: sha256:a6862ade3b91fdde2aa8a3d77fdcc95b1eb6c606be079c11b7f97f249d0e731d
    Deleted: sha256:32bcbe3740b68d0625744e774b404140366c0c4a2b2eadf32280d66ba001b4fb
    Deleted: sha256:2dc5e43f496e41a18c016904b6665454a53be22eb4dcc1b468d864b4e2d1f311
    Deleted: sha256:5fe6a7c579cd9fbcfa604810974c4c0c16893f4c40bc801545607ebd0accea74
    Deleted: sha256:f5600c6330da7bb112776ba067a32a9c20842d6ecc8ee3289f1a713b644092f8
    

5.从宿主机中导入镜像

  • docker image tag nginx load -i /Carrie/nginx (-i 从tar包中读取文件内容)
  • [root@localhost Carrie]# docker image tag nginx load -i /Carrie/nginx 
    f5600c6330da: Loading layer [==================================================>]  72.52MB/72.52MB
    7ccabd267c9f: Loading layer [==================================================>]  64.54MB/64.54MB
    850c2400ea4d: Loading layer [==================================================>]  3.072kB/3.072kB
    f790aed835ee: Loading layer [==================================================>]  4.096kB/4.096kB
    7e914612e366: Loading layer [==================================================>]  3.584kB/3.584kB
    Loaded image: nginx:latest
    [root@localhost Carrie]# docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        12 hours ago        133MB
    centos              7                   8652b9f0cb4c        11 days ago         204MB
    centos              7.6.1810            f1cb7c7d58b7        20 months ago       202MB
    

 

6.镜像命名

  •  docker image tag ID号  新名:TAG
  • [root@localhost docker]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        9 days ago          133MB
    centos              7                   8652b9f0cb4c        2 weeks ago         204MB
    [root@localhost docker]# docker image tag 8652b9f0cb4c centos7.0:7.0
    [root@localhost docker]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              bc9a0695f571        9 days ago          133MB
    centos7.0           7.0                 8652b9f0cb4c        2 weeks ago         204MB
    centos              7                   8652b9f0cb4c        2 weeks ago         204MB
    

7.镜像的上传(将镜像传到仓库中)

  •  
  •  
  •  

容器的基础操作

  • 启动容器是要依赖镜像的
  • 容器一般有两种形式一种为交互式容器(工具类容器),另一种为守护式容器

1.启动交互式容器

  • docker container run -it nginx 
  • 参数介绍如下:
  • –detach -d 在后台运行容器,并且打印容器id。
    –interactive -i 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
    –tty -t 分配一个伪tty,一般与 -i 连用。
  •  docker容器运行之后,不会进入容器,只会提示容器已经运行
    [root@localhost docker]# docker container run -it nginx
    /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
    /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
    10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
    10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
    /docker-entrypoint.sh: Configuration complete; ready for start up
    
  • 如果想要进入容器,需要开启一个进程窗口,一般是/bin/bash
  • docker container run -it nginx /bin/bash
  • [root@localhost docker]# docker container run -it nginx /bin/bash
    root@36a432a211d4:/# 
    

2.启动守护式容器

  •  docker run -d --name="container-nginx" nginx 
  •  --name='' ------容器名字
    [root@localhost docker]# docker run -d --name="container-nginx" nginx 
    \83f20975051a756b756ed6cddfaea7b22d3e23a6d91faaeb06d0df4f47abdada

    这就是已经启动了nginx的服务,用curl命令可以直接看到nginx的页面

  • [root@localhost docker]# curl 192.168.2.222:8080
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>

     

3.docker容器的网络访问

  默认情况下,容器之间是可以ping通的,但是容器无法和宿主机外部连接,所以无法在浏览器中显示nginx.

  解决这个问题只需要启动容器时需要指定映射。

  • 1.宿主机的8080端口映射到container的80端口    : -p 8080:80 映射端口
    [root@localhost docker]# docker run -d --name="container-nginx" -p 8080:80 nginx
    
  •  查看容器和宿主机是否连接
  •  2.指定某段地址的8080端口映射到container的80端口   
  • [root@localhost docker]# docker run -d --name="container-nginx" -p 192.168.2.0:8080:80 nginx
    

      

  • 3.随机某段地址的端口映射到container的80端口 (随机端口从32768开始)
  • [root@localhost docker]# docker run -d --name="container-nginx" -p 192.168.2.0::80 nginx
    

      

  • 4.随机端口映射到container的80端口 
  • [root@localhost docker]# docker run -d --name="container-nginx" -p 80 nginx
    

      

4 .查看版本

  • cat /etc/redhat-release

  • [root@localhost docker]# cat /etc/redhat-release 
    CentOS Linux release 7.9.2009 (Core)
    

5.查看容器的状态

  • docker container ls
  • [root@localhost docker]# docker container ls
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES

    容器的唯一标识 镜像 容器的命令 时间 状态 映射端口 名字
    1e42240498a7        nginx               "/docker-entrypoint.…"   About an hour ago   Up About an hour    0.0.0.0:8080->80/tcp   Carrie_nginx

 

6.查看容器的状态信息

  • 第一种:docker container ls -a  显示所有容器
  • 第二种: docker container ps    显示开启的容器
  • [root@localhost ~]# docker container ls -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                  NAMES
    83f20975051a        nginx               "/docker-entrypoint.…"   12 hours ago        Up 5 seconds                80/tcp                 container-nginx
    b95a2f892de1        nginx               "/docker-entrypoint.…"   12 hours ago        Exited (0) 12 hours ago                            brave_bell
    36a432a211d4        nginx               "/docker-entrypoint.…"   12 hours ago        Exited (130) 12 hours ago                          magical_kowalevski
    1577a37d246d        nginx               "/docker-entrypoint.…"   12 hours ago        Exited (0) 12 hours ago                            affectionate_poincare
    579c50bca513        nginx               "/docker-entrypoint.…"   12 hours ago        Exited (0) 12 hours ago                            awesome_neumann
    1e42240498a7        nginx               "/docker-entrypoint.…"   13 hours ago        Up 13 hours                 0.0.0.0:8080->80/tcp   Carrie_nginx
    [root@localhost ~]# docker container ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    83f20975051a        nginx               "/docker-entrypoint.…"   12 hours ago        Up About a minute   80/tcp                 container-nginx
    1e42240498a7        nginx               "/docker-entrypoint.…"   13 hours ago        Up 13 hours         0.0.0.0:8080->80/tcp   Carrie_nginx
    

 

7.启动容器

  • 当镜像变成容器启动时用run命令,当容器生成再进行启动时就需要用start命令
  • 启动到后台
  • [root@localhost ~]# docker container ls -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             
    1e42240498a7        nginx               "/docker-entrypoint.…"   13 hours ago        Up 13 hours                 0.0.0.0:8080->80/tcp   Carrie_nginx
    [root@localhost ~]# docker container start 1e42240498a7 
    1e42240498a7
    

 

8.进入容器的命令

  • 1.docker run;创建和启动一个新的容器实例,操作对象是镜像,选项较多,如果你要创建和启动一个容器,只能用run;
  • 实例:docker run -d --name="container-nginx" nginx
  • [root@localhost docker]# docker run -d --name="container-nginx" nginx 
    \83f20975051a756b756ed6cddfaea7b22d3e23a6d91faaeb06d0df4f47abdada
    

      

  • 2.docker exec: 在已运行的容器中,执行命令,操作对象是容器,如果你要进入已运行的容器,并且执行命令,用exec;用exec的方式进入容器,退出容器时不会关闭容器
  • 实例:docker container exec -it 1e42240498a7 /bin/bash
  • [root@localhost ~]# docker container start 1e4
    1e4
    [root@localhost ~]# docker container exec -it 1e42240498a7 /bin/bash
    root@1e42240498a7:/# ls -a
    .   .dockerenv	boot  docker-entrypoint.d   etc   lib	 media	opt   root  sbin  sys  usr
    ..  bin		dev   docker-entrypoint.sh  home  lib64  mnt	proc  run   srv   tmp  var
    

      

  • 3.docker attach: 同样操作的是已运行的容器,可以将本机标准输入(键盘输入)输到容器中,也可以将容器的输出显示在本机的屏幕上,如果你想查看容器运行过程中产生的标准输入输出,用attach,用attach的方式进入容器,但是退出容器时会关闭容器
  • 实例:docker container attach 1e42240498a7
  • [root@localhost ~]# docker container ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    83f20975051a        nginx               "/docker-entrypoint.…"   13 hours ago        Up 4 seconds        80/tcp                 container-nginx
    1e42240498a7        nginx               "/docker-entrypoint.…"   14 hours ago        Up 35 seconds       0.0.0.0:8080->80/tcp   Carrie_nginx
    [root@localhost ~]# docker container attach 1e42240498a7
    

 

        

           了解进入容器的命令详解请查看下一章博客:https://www.cnblogs.com/hanjiali/p/14088844.html

 

9.关闭容器 

  • docker container stop  1e42240498a7 
  • 停止容器
  • [root@localhost ~]# docker container stop  1e42240498a7 
    1e42240498a7
    

   

10.容器前台转后台运行

  • curl+p,q  将容器丢到后台运行  
  • docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。

11.容器的导出

  • docker export 1e4 > /Carrie/nginx.tar
  • [root@localhost ~]# docker container ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    1e42240498a7        nginx               "/docker-entrypoint.…"   15 hours ago        Up 8 minutes        0.0.0.0:8080->80/tcp   Carrie_nginx
    [root@localhost ~]# docker export 1e4 > /Carrie/nginx.tar
    [root@localhost ~]# ls /Carrie/nginx.tar 
    /Carrie/nginx.tar
    

12.容器的导入

  • docker import /Carrie/nginx.tar
  • [root@localhost ~]# docker container ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    1e42240498a7        nginx               "/docker-entrypoint.…"   15 hours ago        Up 8 minutes        0.0.0.0:8080->80/tcp   Carrie_nginx
    [root@localhost ~]# docker rm -f 1e4
    1e4
    [root@localhost ~]# docker container ls -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
    
    [root@localhost ~]# docker import /Carrie/nginx.tar
    sha256:7959eb583395d45ecb7d2e152061ade41742c3cf5f208d5f49c8d270ad9247bb
    
    [root@localhost ~]# docker images 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    <none>              <none>              7959eb583395        29 seconds ago      131MB
    [root@localhost ~]# docker tag 7959eb583395 nginx:Carrie
    [root@localhost ~]# docker images 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               Carrie              7959eb583395        3 minutes ago       131MB
    

      

 

posted on 2020-12-03 11:15  不吃葡萄楞吐皮  阅读(189)  评论(0编辑  收藏  举报