Docker 从入门到放弃(二)容器使用
2017-12-05 09:33
686 查看
Docker 容器使用
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如要查看 docker stats 指令的具体使用方法:
第一次使用,本地是没有镜像的,所有要下载远程仓库镜像
参数说明:
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。
下载好后会默认启动该容器
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。 这时我们可以通过浏览器访问WEB应用
我们也可以指定 -p 标识来绑定指定端口
容器内部的 5000 端口映射到我们本地主机的 5000 端口上
上面创建的web应用容器ID为:d83ffc50991f 名字为:adoring_jackson
可以使用docker port 7a38a1ad55c6 或docker port determined_swanson来查看容器端口的映射情况
-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
从上面,可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。
docker ps -l 查询最后一次创建的容器:
先停止后删除
一、Docker 客户端
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。root@iZ235mi4a64Z:~# docker Usage: docker COMMAND A self-sufficient runtime for containers Options: --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 quit Management Commands: config Manage Docker configs container Manage containers image Manage images ...
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如要查看 docker stats 指令的具体使用方法:
root@iZ235mi4a64Z:~# docker stats --help Usage: docker stats [OPTIONS] [CONTAINER...] Display a live stream of container(s) resource usage statistics Options: -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.py Unable to find image 'training/webapp:latest' locally 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 d83ffc50991fabc9aedee521be91329048bf0f17b4ca3f90cf20b63209cfbdd2 root@iZ235mi4a64Z:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d83ffc50991f 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 ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d83ffc50991f 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.py ebdeda041b1e97850337c8a514dd7163db740a8eb82e8b7270402095a6368fa2 root@iZ235mi4a64Z:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ebdeda041b1e training/webapp "python app.py" 5 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp condescending_austin d83ffc50991f training/webapp "python app.py" 16 minutes ago Up 16 minutes 0.0.0.0:32768->5000/tcp adoring_jackson root@iZ235mi4a64Z:~# curl http://127.0.0.1:5000 Hello 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 d83ffc50991f 5000/tcp -> 0.0.0.0:32768
root@iZ235mi4a64Z:~# docker port adoring_jackson 5000/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 1c0efc43c0e5 UID PID PPID C STIME TTY TIME CMD root 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_jones relaxed_jones root@iZ235mi4a64Z:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@iZ235mi4a64Z:~# docker start relaxed_jones relaxed_jones root@iZ235mi4a64Z:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c0efc43c0e5 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 -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c0efc43c0e5 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_jones Error response from daemon: You cannot remove a running container 1c0efc43c0e5207b6eaa63270834562a5193820436ba80de3fdd8dfa1b77c764. Stop the container before attempting removal or force remove
先停止后删除
root@iZ235mi4a64Z:~# docker stop relaxed_jones relaxed_jones root@iZ235mi4a64Z:~# docker rm relaxed_jones relaxed_jones
相关文章推荐
- docker使用入门,以及保存容器状态
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
- Docker入门 - 004 Docker 容器使用
- 【Docker入门】使用Nginx反向代理最前端,多个Docker容器做后端。将多台服务器整合到一台服务器上
- Docker新手入门之三:Docker容器的基本使用
- Docker 从入门到放弃(三)镜像使用
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
- centos中使用docker创建mysql容器
- 使用 Device Mapper来改变Docker容器的大小
- 使用docker oracle 容器作为开发数据库服务器
- python爬虫从入门到放弃(七)之 PyQuery库的使用
- 使用Docker容器
- yum安装Docker及入门使用
- 使用Dockerfile构建支持ssh服务自启动的容器镜像
- docker技术入门与实战-镜像、容器、仓库
- 持续集成:docker下使用jenkins容器构建docker镜像
- Android开发从入门到放弃(5)使用LinearLayout
- [C++ 从入门到放弃-06]C++STL之multimap多重映照容器
- 使用iptables管理docker容器做端口映射网络
- Windows10下的docker安装与入门 (一)使用docker toolbox安装docker