zoukankan      html  css  js  c++  java
  • docker命令的基本操作

    一。帮助信息

      1. 分组的操作

    [gh@localhost ~]$ docker --help
    
    Management Commands:
      builder     Manage builds
      config      Manage Docker configs
      container   Manage containers
      engine      Manage the docker engine
      image       Manage images
      network     Manage networks
      node        Manage Swarm nodes
      plugin      Manage plugins
      secret      Manage Docker secrets
      service     Manage services
      stack       Manage Docker stacks
      swarm       Manage Swarm
      system      Manage Docker
      trust       Manage trust on Docker images
      volume      Manage volumes

      2. 分组详细操作信息,比如查看 image 的操作信息

    [gh@localhost ~]$ docker image --help
    
    Commands:
      build       Build an image from a Dockerfile
      history     Show the history of an image
      import      Import the contents from a tarball to create a filesystem image
      inspect     Display detailed information on one or more images
      load        Load an image from a tar archive or STDIN
      ls          List images
      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)
      tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
    
    [gh@localhost ~]$ 

    二。基本操作

      1. image 操作

    docker image pull :下载镜像 (从国内仓库下载:https://c.163.com/hub)
    [gh@localhost ~]$ docker image pull hub.c.163.com/library/busybox:latest
    latest: Pulling from library/busybox
    aab39f0bc16d: Pull complete 
    Digest: sha256:662af1d642674367b721645652de96f9c147417c2efb708eee4e9b7212697762
    Status: Downloaded newer image for hub.c.163.com/library/busybox:latest
    [gh@localhost ~]$ 
    docker image ls :查看镜像
    [gh@localhost ~]$ docker image ls
    REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
    hub.c.163.com/library/busybox   latest              d20ae45477cb        16 months ago       1.13MB
    hub.c.163.com/public/nginx      1.2.1               2dc68ff797db        2 years ago         172MB
    [gh@localhost ~]$ 

    docker image rm : 删除镜像

    [gh@localhost ~]$ docker image rm hub.c.163.com/library/busybox
    Untagged: hub.c.163.com/library/busybox:latest
    Untagged: hub.c.163.com/library/busybox@sha256:662af1d642674367b721645652de96f9c147417c2efb708eee4e9b7212697762
    Deleted: sha256:d20ae45477cbc89863fff11d01cdccf28e4ff06ce2eb2f0206ef971b14eaf6c0
    Deleted: sha256:6a749002dd6a65988a6696ca4d0c4cbe87145df74e3bf6feae4025ab28f420f2
    [gh@localhost ~]$ docker image ls
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    hub.c.163.com/public/nginx   1.2.1               2dc68ff797db        2 years ago         172MB
    [gh@localhost ~]$ 

    docker image tag:创建标签和仓库名称。(只是一个引用,类似软链接)

    [gh@localhost ~]$ docker image ls
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    busybox                      latest              d20ae45477cb        16 months ago       1.13MB
    hub.c.163.com/public/nginx   1.2.1               2dc68ff797db        2 years ago         172MB
    [gh@localhost ~]$ docker image tag hub.c.163.com/public/nginx:1.2.1 nginx:1.2.1
    [gh@localhost ~]$ docker image ls
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    busybox                      latest              d20ae45477cb        16 months ago       1.13MB
    nginx                        1.2.1               2dc68ff797db        2 years ago         172MB
    hub.c.163.com/public/nginx   1.2.1               2dc68ff797db        2 years ago         172MB
    [gh@localhost ~]$ 

    更多操作: docker image --help

      2. container 操作

    ---- docker container ls :查看容器

    ---- docker container create :创建但不运行容器

    ---- docker container start : 运行已经创建的容器

    ---- docker container run : 创建并运行容器

    ---- docker container stop : 停止运行容器

    ---- docker container pause : 暂停容器

    ---- docker container unpause : 恢复暂停的容器

    更多操作: docker container --help

    使用帮助:docker container run --help

    ---- docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

    ---- docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]

    [COMMAND]:可传入容器运行的命令

    [ARG...] : 传入参数

    [OPTIONS]:选项

    -t :使用终端

    -i :交互式访问

    --name:名称

    --network:网络(不加默认桥接网络)

    [gh@localhost ~]$ ifconfig
    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:86:28:05:ff  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    --rm : 容器一停就删除

    -d :后台运行

    ---- 用终端交互式运行容器 busybox

    [gh@localhost ~]$ docker container run --name aaaaa -it hub.c.163.com/library/busybox
    / # 
    / # ls
    bin   dev   etc   home  proc  root  sys   tmp   usr   var
    / # 

    ---- 在容器里面创建 /var/html 文件夹

    / # mkdir /var/html
    / # ls /var/html/
    / # 

    ---- 创建 index.html 文件并写入文字

    / # cat /var/html/index.html 
    ------------
    ccccccccccccccccccccc
    -----------------
    / # 

    ---- 查看httpd命令 

    / # httpd -help

    -p:监听端口,默认80

    -h:网页根目录

    -f:前台运行

    ---- 运行httpd服务

    / # httpd -f -h /var/html/

    ---- 打开另一个终端查看容器

    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS               NAMES
    df6c8e341432        hub.c.163.com/library/busybox   "sh"                16 minutes ago      Up 16 minutes                           aaaaa
    [gh@localhost ~]$ 

    ---- 查看名字为 aaaaa 的地址

    [gh@localhost ~]$ docker container inspect aaaaa |grep "IPAddress"
                "SecondaryIPAddresses": null,
                "IPAddress": "172.17.0.2",
                        "IPAddress": "172.17.0.2",
    [gh@localhost ~]$ 

    ---- 访问容器 httpd 服务

    [gh@localhost ~]$ curl 172.17.0.2
    ------------
    ccccccccccccccccccccc
    -----------------
    [gh@localhost ~]$ 

     ---- 退出aaaaa容器

    / # httpd -f -h /var/html/
    ^C
    / # exit
    [gh@localhost ~]$ 

    ---- 查看容器

    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [gh@localhost ~]$ docker container ls -a
    CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS                            PORTS               NAMES
    df6c8e341432        hub.c.163.com/library/busybox   "sh"                28 hours ago        Exited (130) About a minute ago                       aaaaa
    [gh@localhost ~]$ 

    ---- 运行停止的容器并进入交互式终端

    [gh@localhost ~]$ docker container start -i aaaaa
    / # 
    / # exit
    [gh@localhost ~]$ 

    ---- 直接运行容器(默认为守护进程)

    [gh@localhost ~]$ docker container start aaaaa
    aaaaa
    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS               NAMES
    df6c8e341432        hub.c.163.com/library/busybox   "sh"                28 hours ago        Up 12 seconds                           aaaaa
    [gh@localhost ~]$ 

    ---- 进入已经运行的容器

    [gh@localhost ~]$ docker container attach aaaaa
    / # 
    / # exit
    [gh@localhost ~]$ 

    ---- 删除已经停止的容器

    [gh@localhost ~]$ docker container rm aaaaa
    aaaaa
    [gh@localhost ~]$ docker container ls -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [gh@localhost ~]$ 

    ---- 容器里的程序必须运行在前台,不然容器一运行就结束了

    [gh@localhost ~]$ docker container run --name web1 -d hub.c.163.com/library/busybox
    302f332ee47165b59c867c1316d17fb7ffc964c9f3819884ba0e426bbd113a94
    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [gh@localhost ~]$ docker container ls -a
    CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS                      PORTS               NAMES
    302f332ee471        hub.c.163.com/library/busybox   "sh"                11 seconds ago      Exited (0) 10 seconds ago                       web1
    [gh@localhost ~]$ 
    COMMAND 显示了"sh"说明容器里运行的是shell,容器一运行就结束.要加-it交互式终端运行
    ---- 后台运行nginx
    [gh@localhost ~]$ docker container run --name web1 -d nginx:1.2.1
    d711ad57db0e874433f1111e45899265ac162be3d72a0bf28e5c7a13ab0e2f00
    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    d711ad57db0e        nginx:1.2.1         "/bin/sh -c '/etc/in…"   11 seconds ago      Up 11 seconds       22/tcp, 80/tcp, 443/tcp   web1
    [gh@localhost ~]$ 
    COMMAND显示了容器运行在前台的命令,PORTS 为端口映射
    ---- 访问映射的80端口
    [gh@localhost ~]$ curl 172.17.0.2
    <html>
    <head>
    <title>Welcome to nginx!</title>
    </head>
    <body bgcolor="white" text="black">
    <center><h1>Welcome to nginx!</h1></center>
    </body>
    </html>
    [gh@localhost ~]$ 
    ---- 停止容器并尝试交互式终端启动
    [gh@localhost ~]$ docker container stop web1
    web1
    [gh@localhost ~]$ docker container start web1
    start
    [gh@localhost ~]$ docker container start -ai web1
    Starting nginx: nginx.

    前台运行着 nginx

     ---- 向web1容器执行命令

    [gh@localhost ~]$ docker container exec web1 ls -l /bin/sh
    lrwxrwxrwx 1 root root 4 Mar  1  2012 /bin/sh -> dash
    [gh@localhost ~]$ 

    ---- 绕过主进程交互式终端执行容器shell命令

    [gh@localhost ~]$ docker container exec -it web1 /bin/sh
    # ps -e
       PID TTY          TIME CMD
         1 ?        00:00:00 sh
        10 ?        00:00:00 nginx
        11 ?        00:00:00 sshd
        12 ?        00:00:00 nginx
        13 ?        00:00:00 nginx
        14 ?        00:00:00 nginx
        15 ?        00:00:00 nginx
       158 pts/0    00:00:00 sh
       163 pts/0    00:00:00 ps
    # exit
    [gh@localhost ~]$ 

    能够看到第一个shell,即前台,正在运行Nginx。

    ---- 把Nginx停止,容器也停止

    [gh@localhost ~]$ docker container exec web1 ps -e
       PID TTY          TIME CMD
         1 ?        00:00:00 sh
        10 ?        00:00:00 nginx
        11 ?        00:00:00 sshd
        12 ?        00:00:00 nginx
        13 ?        00:00:00 nginx
        14 ?        00:00:00 nginx
        15 ?        00:00:00 nginx
        16 ?        00:00:00 ps
    [gh@localhost ~]$ docker container exec web1 kill -2 10 11
    [gh@localhost ~]$ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [gh@localhost ~]$ 

    ---- 查看容器日志

    [gh@localhost ~]$ docker container logs web1 
    Starting nginx: nginx.
    [gh@localhost ~]$ 

    日志不是保存在文件里,而是直接输出终端

  • 相关阅读:
    learnVUEnote
    DOUAudioStreamer 中kqueue的应用
    OpenGL ES 2.0 渲染管线 学习笔记
    顶点着色器 学习笔记
    XCode 8.3 Automatically manage signing 问题
    【暴力】【几何】Codeforces Round #431 (Div. 2) B. Tell Your World
    标题
    【枚举】【gcd】Codeforces Round #432 (Div. 2) D. Arpa and a list of numbers
    【预处理】Codeforces Round #433 853B. Jury Meeting
    【构造】【规律】Codeforces Round #431 (Div. 2) C. From Y to Y
  • 原文地址:https://www.cnblogs.com/GH-123/p/10207942.html
Copyright © 2011-2022 走看看