博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 从入门到放弃(二)容器使用
阅读量:5163 次
发布时间:2019-06-13

本文共 7429 字,大约阅读时间需要 24 分钟。

Docker 容器使用

一、Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

root@iZ235mi4a64Z:~# dockerUsage:    docker COMMANDA self-sufficient runtime for containersOptions:      --config string      Location of client config files (default "/root/.docker")  -D, --debug              Enable debug mode  -H, --host list          Daemon socket(s) to connect to  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")      --tls                Use TLS; implied by --tlsverify      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")      --tlsverify          Use TLS and verify the remote  -v, --version            Print version information and quitManagement Commands:  config      Manage Docker configs  container   Manage containers  image       Manage images...

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。  

例如要查看 docker stats 指令的具体使用方法:

root@iZ235mi4a64Z:~# docker stats --helpUsage:    docker stats [OPTIONS] [CONTAINER...]Display a live stream of container(s) resource usage statisticsOptions:  -a, --all             Show all containers (default shows just running)      --format string   Pretty-print images using a Go template      --no-stream       Disable streaming stats and only pull the first result      --no-trunc        Do not truncate output

二、运行一个web应用

前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用 docker 构建一个 web 应用程序。我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

第一次使用,本地是没有镜像的,所有要下载远程仓库镜像

参数说明:

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

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

root@iZ235mi4a64Z:~# docker run -d -P training/webapp python app.pyUnable to find image 'training/webapp:latest' locallylatest: Pulling from training/webappe190868d63f8: 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:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11dStatus: Downloaded newer image for training/webapp:latestd83ffc50991fabc9aedee521be91329048bf0f17b4ca3f90cf20b63209cfbdd2root@iZ235mi4a64Z:~# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMESd83ffc50991f        training/webapp     "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:32768->5000/tcp   adoring_jackson

下载好后会默认启动该容器

三、查看 WEB 应用容器

使用 docker ps 来查看我们正在运行的容器

root@iZ235mi4a64Z:~# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMESd83ffc50991f        training/webapp     "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:32768->5000/tcp   adoring_jackson

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。 这时我们可以通过浏览器访问WEB应用

我们也可以指定 -p 标识来绑定指定端口

root@iZ235mi4a64Z:~# docker run -d -p 5000:5000 training/webapp python app.pyebdeda041b1e97850337c8a514dd7163db740a8eb82e8b7270402095a6368fa2root@iZ235mi4a64Z:~# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMESebdeda041b1e        training/webapp     "python app.py"     5 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp    condescending_austind83ffc50991f        training/webapp     "python app.py"     16 minutes ago      Up 16 minutes       0.0.0.0:32768->5000/tcp   adoring_jacksonroot@iZ235mi4a64Z:~# curl http://127.0.0.1:5000Hello world!

容器内部的 5000 端口映射到我们本地主机的 5000 端口上

四、网络端口的快捷方式

通过docker ps 命令可以查看到容器的端口映射,docker还提供了另一个快捷方式:docker port,使用 docker port 可以查看指定 (ID或者名字)容器的某个确定端口映射到宿主机的端口号。

上面创建的web应用容器ID为:d83ffc50991f  名字为:adoring_jackson

可以使用docker port 7a38a1ad55c6 或docker port determined_swanson来查看容器端口的映射情况

root@iZ235mi4a64Z:~# docker port d83ffc50991f5000/tcp -> 0.0.0.0:32768
root@iZ235mi4a64Z:~# docker port adoring_jackson5000/tcp -> 0.0.0.0:32768

五、查看WEB应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

root@iZ235mi4a64Z:~# docker logs -f d83ffc50991f * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)192.168.0.1 - - [05/Dec/2017 02:00:32] "GET / HTTP/1.1" 200 -192.168.0.1 - - [05/Dec/2017 02:01:55] "GET / HTTP/1.1" 200 -192.168.0.1 - - [05/Dec/2017 02:02:11] "GET / HTTP/1.1" 200 -192.168.0.1 - - [05/Dec/2017 02:02:18] "GET / HTTP/1.1" 200 -192.168.0.1 - - [05/Dec/2017 02:02:23] "GET / HTTP/1.1" 200 -

-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。

从上面,可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。

六、查看WEB应用程序容器的进程

可以使用 docker top 来查看容器内部运行的进程

root@iZ235mi4a64Z:~# docker top 1c0efc43c0e5UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                25066               25050               0                   10:19               ?                   00:00:00            python app.py

七、检查WEB应用程序

使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

root@iZ235mi4a64Z:~# docker inspect 1c0efc43c0e5[    {        "Id": "1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764",        "Created": "2017-12-05T02:19:12.557365261Z",        "Path": "python",        "Args": [            "app.py"        ],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 25066,            "ExitCode": 0,            "Error": "",            "StartedAt": "2017-12-05T02:19:12.913440347Z",            "FinishedAt": "0001-01-01T00:00:00Z"        },        "Image": "sha256:6fae60ef344644649a39240b94d73b8ba9c67f898ede85cf8e947a887b3e6557",        "ResolvConfPath": "/var/lib/docker/containers/1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764/resolv.conf",...

八、停止、重启WEB应用容器

root@iZ235mi4a64Z:~# docker stop relaxed_jonesrelaxed_jonesroot@iZ235mi4a64Z:~# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESroot@iZ235mi4a64Z:~# docker start relaxed_jonesrelaxed_jonesroot@iZ235mi4a64Z:~# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES1c0efc43c0e5        training/webapp     "python app.py"     6 minutes ago       Up 2 seconds        0.0.0.0:32770->5000/tcp   relaxed_jones

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

root@iZ235mi4a64Z:~# docker ps -lCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES1c0efc43c0e5        training/webapp     "python app.py"     6 minutes ago       Up 47 seconds       0.0.0.0:32770->5000/tcp   relaxed_jones

九、移除WEB应用容器

使用 docker rm 命令来删除不需要的容器,删除容器时,容器必须是停止状态,否则会报如下错误

root@iZ235mi4a64Z:~# docker rm relaxed_jonesError response from daemon: You cannot remove a running container 1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764. Stop the container before attempting removal or force remove

先停止后删除

root@iZ235mi4a64Z:~# docker stop relaxed_jonesrelaxed_jonesroot@iZ235mi4a64Z:~# docker rm relaxed_jonesrelaxed_jones

 

转载于:https://www.cnblogs.com/tinywan/p/7985322.html

你可能感兴趣的文章
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>