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  移除已停止的容器

posted on 2018-06-04 17:38  Karlkiller  阅读(250)  评论(0编辑  收藏  举报

导航