• Docker 入门


    • Docker Hello World

    Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

    输出Hello world

    root@Ubuntu14:/# docker run ubuntu:15.10 /bin/echo "hello world"
    Unable to find image 'ubuntu:15.10' locally 15.10: Pulling from library/ubuntu 7dcf5a444392: Pull complete 759aa75f3cee: Pull complete 3fa871dc8a2b: Pull complete 224c42ae46e7: Pull complete Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3 Status: Downloaded newer image for ubuntu:15.10 hello world

    各个参数解析:

    • docker: Docker 的二进制执行文件。

    • run:与前面的 docker 组合来运行一个容器。

    • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

    • /bin/echo "Hello world": 在启动的容器里执行的命令

    以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

    • 运行交互式容器

    我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

    root@Ubuntu14:/# docker run -i -t ubuntu:15.10 /bin/bash
    root@f33f0dff0906:/# cat /proc/version
    Linux version 4.4.0-93-generic (buildd@lcy01-28) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #116~14.04.1-Ubuntu SMP Mon Aug 14 16:07:05 UTC 2017
    root@f33f0dff0906:/# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@f33f0dff0906:/#

    各个参数解析:

    • -t:在新容器内指定一个伪终端或终端。

    • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

    此时我们已进入一个 ubuntu15.10系统的容器

    我们尝试在容器中运行命令 cat /proc/versionls分别查看当前系统的版本信息和当前目录下的文件列表

    我们可以通过运行exit命令或者使用CTRL+D来退出容器。

    • 启动容器(后台模式)

    使用以下命令创建一个以进程方式运行的容器

    root@Ubuntu14:/# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    268b8d077ec86d8ae8f9c01f0135b03291c6b09cf28d9285032ea48bac4979a1
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            reverent_neumann
    root@Ubuntu14:/# docker logs 268b8d077ec8^C
    root@Ubuntu14:/# docker logs reverent_neumann^C
    root@Ubuntu14:/# docker stop 268b8d077ec8^C
    root@Ubuntu14:/# docker stop reverent_neumann^C
    root@Ubuntu14:/# docker ps^C
    root@Ubuntu14:/#

    docker ps  查看运行中的容器

    docker log  查看容器内命令的执行结果

    docer stop  停止容器

    • docker容器使用
    root@Ubuntu14:/# docker pull training/webapp
    Using default tag: latest
    latest: Pulling from training/webapp
    e190868d63f8: Pull complete
    909cd34c6fd7: Pull complete
    0b9bfabab7c1: Pull complete
    a3ed95caeb02: Pull complete
    10bbbc0fc0ff: Pull complete
    fca59b508e9f: Pull complete
    e7ae2541b15b: Pull complete
    9dd97ef58ce9: Pull complete
    a4c1b0cb7af7: Pull complete
    Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
    Status: Downloaded newer image for training/webapp:latest
    root@Ubuntu14:/# docker run -d -P training/webapp python app.py
    074a8dca8629c1ee03487c5154b0303f26635a7cd5f7bfef79157781804ac629
    root@Ubuntu14:/#
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    074a8dca8629        training/webapp     "python app.py"          13 seconds ago      Up 12 seconds       0.0.0.0:32768->5000/tcp   elastic_pasteur
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   18 minutes ago      Up 18 minutes                                 reverent_neumann
    root@Ubuntu14:/#

    docker command --help  查看某条命令command的具体使用方法

    docker pull  载入镜像

    docker run 参数说明:

    • -d:让容器在后台运行。

    • -P:将容器内部使用的网络端口映射到我们使用的主机上。

    Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。

    root@Ubuntu14:/# docker run -d -p 5000:5000 training/webapp python app.py
    1ac3973807d566d01ff71a77779d7cfb3682b1791a4fb666072cfa91b010ddbd
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    1ac3973807d5        training/webapp     "python app.py"          7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp    heuristic_goldberg
    074a8dca8629        training/webapp     "python app.py"          8 minutes ago       Up 8 minutes        0.0.0.0:32768->5000/tcp   elastic_pasteur
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   27 minutes ago      Up 27 minutes                                 reverent_neumann
    root@Ubuntu14:/#

    也可以通过 -p 参数来设置不一样的端口,容器内部的 5000 端口映射到我们本地主机的 5000 端口上。

    root@Ubuntu14:/# docker start heuristic_goldberg
    heuristic_goldberg
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    1ac3973807d5        training/webapp     "python app.py"          5 minutes ago       Up 4 seconds        0.0.0.0:5000->5000/tcp    heuristic_goldberg
    074a8dca8629        training/webapp     "python app.py"          14 minutes ago      Up 14 minutes       0.0.0.0:32768->5000/tcp   elastic_pasteur
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   32 minutes ago      Up 32 minutes                                 reverent_neumann
    root@Ubuntu14:/# docker stop heuristic_goldberg
    heuristic_goldberg
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    074a8dca8629        training/webapp     "python app.py"          15 minutes ago      Up 15 minutes       0.0.0.0:32768->5000/tcp   elastic_pasteur
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   33 minutes ago      Up 33 minutes                                 reverent_neumann
    root@Ubuntu14:/# docker restart heuristic_goldberg
    heuristic_goldberg
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    1ac3973807d5        training/webapp     "python app.py"          6 minutes ago       Up 3 seconds        0.0.0.0:5000->5000/tcp    heuristic_goldberg
    074a8dca8629        training/webapp     "python app.py"          15 minutes ago      Up 15 minutes       0.0.0.0:32768->5000/tcp   elastic_pasteur
    268b8d077ec8        ubuntu:15.10        "/bin/sh -c 'while t…"   33 minutes ago      Up 33 minutes                                 reverent_neumann
    root@Ubuntu14:/# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    1ac3973807d5        training/webapp     "python app.py"     6 minutes ago       Up 17 seconds       0.0.0.0:5000->5000/tcp   heuristic_goldberg
    root@Ubuntu14:/# docker stop reverent_neumann
    reverent_neumann
    root@Ubuntu14:/# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
    1ac3973807d5        training/webapp     "python app.py"     7 minutes ago       Up 53 seconds       0.0.0.0:5000->5000/tcp    heuristic_goldberg
    074a8dca8629        training/webapp     "python app.py"     16 minutes ago      Up 16 minutes       0.0.0.0:32768->5000/tcp   elastic_pasteur
    root@Ubuntu14:/# docker rm reverent_neumann
    reverent_neumann
    root@Ubuntu14:/#

    docker port  查看指定容器的某个确定端口映射到宿主机的端口号

    docker logs -f  查看容器内部的标准输出

    docker start  停止的容器可以重新启用

    docker restart  重启已停止的容器

    docker ps -l  查询最后一次创建的容器

    docker rm  移除已停止的容器

  • 相关阅读:
    datatime模块
    快速幂
    | 与|| ,& 与&&
    sql----order by
    pandas iterrows()
    黄包车比赛 python学习
    右键git-bash不能使用
    17flask分页
    16flask错误处理
    15跨站请求伪造
  • 原文地址:https://www.cnblogs.com/karl-python/p/9134561.html
Copyright © 2020-2023  润新知