Docker 从入门到放弃(二)容器使用
Docker 容器使用
一、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" minutes ago Up minutes 0.0.0.0:->/tcp adoring_jackson
下载好后会默认启动该容器
三、查看 WEB 应用容器
使用 docker ps 来查看我们正在运行的容器
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d83ffc50991f training/webapp "python app.py" minutes ago Up minutes 0.0.0.0:->/tcp adoring_jackson
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。 这时我们可以通过浏览器访问WEB应用
我们也可以指定 -p 标识来绑定指定端口
root@iZ235mi4a64Z:~# docker run -d -p : training/webapp python app.py
ebdeda041b1e97850337c8a514dd7163db740a8eb82e8b7270402095a6368fa2
root@iZ235mi4a64Z:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ebdeda041b1e training/webapp "python app.py" seconds ago Up seconds 0.0.0.0:->/tcp condescending_austin
d83ffc50991f training/webapp "python app.py" minutes ago Up minutes 0.0.0.0:->/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
/tcp -> 0.0.0.0:
root@iZ235mi4a64Z:~# docker port adoring_jackson
/tcp -> 0.0.0.0:
五、查看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 - - [/Dec/ ::] "GET / HTTP/1.1" -
192.168.0.1 - - [/Dec/ ::] "GET / HTTP/1.1" -
192.168.0.1 - - [/Dec/ ::] "GET / HTTP/1.1" -
192.168.0.1 - - [/Dec/ ::] "GET / HTTP/1.1" -
192.168.0.1 - - [/Dec/ ::] "GET / HTTP/1.1" -
-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
从上面,可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。
六、查看WEB应用程序容器的进程
可以使用 docker top 来查看容器内部运行的进程
root@iZ235mi4a64Z:~# docker top 1c0efc43c0e5
UID PID PPID C STIME TTY TIME CMD
root : ? :: 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": ,
"ExitCode": ,
"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" minutes ago Up seconds 0.0.0.0:->/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" minutes ago Up seconds 0.0.0.0:->/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 从入门到放弃(二)容器使用的更多相关文章
- Docker 从入门到放弃(一)安装
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任 ...
- Docker从入门到放弃(1) Docker简介与安装
目录 一.Docker简介 1.Docker是什么: 2.为什么有docke的出现: 3.docker与传统容器的区别: 4.docker基本组成 5.docker工作原理: 二.Docker安装 ...
- DOCKER 从入门到放弃(一)
前言 关于docker的各种概念已有各位大神珠玉在前,请各位自行查看,本系列的目的是各种详细操作步骤 各种概念特别推荐CloudMan的3篇blog: http://www.cnblogs.com/C ...
- DOCKER 从入门到放弃(三)
使用docker create [image-name] 创建一个容器 创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建后并不会启动,并将容器的ID输出到终端,如果本地没有镜 ...
- docker的入门到放弃--docker基本命令
docker的镜像中国:https://www.docker-cn.com/registry-mirror 1.搜索镜像 [root@localhost ~]# docker search tomca ...
- hive从入门到放弃(二)——DDL数据定义
前一篇文章,介绍了什么是 hive,以及 hive 的架构.数据类型,没看的可以点击阅读:hive从入门到放弃(一)--初识hive 今天讲一下 hive 的 DDL 数据定义 创建数据库 CREAT ...
- DOCKER 从入门到放弃(二)
搜索镜像 从docker官方镜像仓库搜索镜像 docker search [OPTIONS] TERM OPTIONS: --automated :只显示自动创建的镜像,默认值为fasle --fil ...
- Docker 从入门到放弃(三)镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...
- Docker 从入门到放弃(四)Docker+Jenkins_自动化持续集成
Windows 查看密码 $ cat /var/jenkins_home/secrets/initialAdminPassword 14e14c414f41481aa5955753d3f31f9f 自 ...
随机推荐
- 【XSY1538】连在一起的幻想乡 数学 无向连通图计数
题目大意 给你\(n,p\),求\(n\)个点组成的所有无向连通图的边数的平方和模\(p\) \(n\leq 2000,p\leq {10}^9\) 题解 设\(m=\frac{n(n-1 ...
- 【BZOJ4887】[TJOI2017]可乐(矩阵快速幂)
[BZOJ4887][TJOI2017]可乐(矩阵快速幂) 题面 BZOJ 洛谷 题解 模板题??? #include<iostream> #include<cstdio> # ...
- cf245H Queries for Number of Palindromes (manacher+dp)
首先马拉车一遍(或者用hash),再做个前缀和处理出f[i][j]表示以j为右端点,左端点在[i,j]的回文串个数 然后设ans[i][j]是[i,j]之间的回文串个数,那就有ans[i][j]=an ...
- [SHOI2014]概率充电器(概率+换根dp)
著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品—— 概率充电器: “采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品 ...
- fcntl F_SETFL
F_SETFL file set flag F_SETFL命令允许更改的标志有O_APPEND,O_NONBLOCK,O_NOATIME,O_DIRECT,O_ASYNC 这个操作修改文件状态标记适用 ...
- 对于Arrays的deep相关的方法。
关于: deepEquals Arrays.equals(Object[] o1, Object[] o2):当是判断数组是引用类型数组的时候,从以下条件判断: 1.o1与o2指向同一个数组实例时,返 ...
- linux下静态库和动态库的制作
一.静态库 1.编写.c文件,在其中实现函数源代码,同时制作头文件 2.将.c文件转为.o文件 gcc -c xxx.c -o xxx.o 3.将*.o转换成库文件 a ...
- 微信小程序中出现:脚本错误或者未正确调用 Page()
错误: 解决方法: //在页面当中的.js文件里面加上 Page({ })即可
- C# 封装SqlBulkCopy,让批量插入更方便
关于 SqlServer 批量插入的方式,前段时间也有大神给出了好几种批量插入的方式及对比测试(http://www.cnblogs.com/jiekzou/p/6145550.html),估计大家也 ...
- Tornado基于MiddleWare做中间件
详细代码如下: 在app.py里添加 # -*- coding:utf-8 -*- from tornado.ioloop import IOLoop from tornado.web import ...