Docker 容器使用.docx
《Docker 容器使用.docx》由会员分享,可在线阅读,更多相关《Docker 容器使用.docx(8页珍藏版)》请在冰豆网上搜索。
Docker容器使用
Docker容器使用
Docker客户端
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到Docker客户端的所有命令选项。
runoob@runoob:
~#docker
可以通过命令dockercommand--help更深入的了解指定的Docker命令使用方法。
例如我们要查看dockerstats指令的具体使用方法:
runoob@runoob:
~#dockerstats--help
容器使用
获取镜像
如果我们本地没有ubuntu镜像,我们可以使用dockerpull命令来载入ubuntu镜像:
$dockerpullubuntu
启动容器
以下命令使用ubuntu镜像启动一个容器,参数为以命令行模式进入该容器:
$dockerrun-itubuntu/bin/bash
参数说明:
∙-i:
交互式操作。
∙-t:
终端。
∙ubuntu:
ubuntu镜像。
∙/bin/bash:
放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是/bin/bash。
要退出终端,直接输入exit:
root@ed09e4490c57:
/#exit
启动已停止运行的容器
查看所有的容器命令如下:
$dockerps-a
点击图片查看大图:
使用dockerstart启动一个已停止的容器:
$dockerstartb750bbbcfd88
后台运行
在大部分的场景下,我们希望docker的服务是在后台运行的,我们可以过-d指定容器的运行模式。
$dockerrun-itd--nameubuntu-testubuntu/bin/bash
注:
加了-d参数默认不会进入容器,想要进入容器需要使用指令dockerexec(下面会介绍到)。
停止一个容器
停止容器的命令如下:
$dockerstop<容器ID>
停止的容器可以通过dockerrestart重启:
$dockerrestart<容器ID>
进入容器
在使用-d参数时,容器启动后会进入后台。
此时想要进入容器,可以通过以下指令进入:
∙dockerattach
∙dockerexec:
推荐大家使用dockerexec命令,因为此退出容器终端,不会导致容器的停止。
attach命令
下面演示了使用dockerattach命令。
$dockerattach1e560fca3906
注意:
如果从这个容器退出,会导致容器的停止。
exec命令
下面演示了使用dockerexec命令。
dockerexec-it243c32535da7/bin/bash
注意:
如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用dockerexec的原因。
更多参数说明请使用dockerexec--help命令查看。
导出和导入容器
导出容器
如果要导出本地某个容器,可以使用dockerexport命令。
$dockerexport1e560fca3906>ubuntu.tar
导出容器1e560fca3906快照到本地文件ubuntu.tar。
这样将导出容器快照到本地文件。
导入容器快照
可以使用dockerimport从容器快照文件中再导入为镜像,以下实例将快照文件ubuntu.tar导入到镜像test/ubuntu:
v1:
$catdocker/ubuntu.tar|dockerimport-test/ubuntu:
v1
此外,也可以通过指定URL或者某个目录来导入,例如:
$dockerimportexample/imagerepo
删除容器
删除容器使用dockerrm命令:
$dockerrm-f1e560fca3906
下面的命令可以清理掉所有处于终止状态的容器。
$dockercontainerprune
运行一个web应用
前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用docker构建一个web应用程序。
我们将在docker容器中运行一个PythonFlask应用来运行一个web应用。
runoob@runoob:
~#dockerpulltraining/webapp#载入镜像
runoob@runoob:
~#dockerrun-d-Ptraining/webapppythonapp.py
参数说明:
∙-d:
让容器在后台运行。
∙-P:
将容器内部使用的网络端口随机映射到我们使用的主机上。
查看WEB应用容器
使用 dockerps 来查看我们正在运行的容器:
runoob@runoob:
~#dockerps
CONTAINERIDIMAGECOMMAND...PORTS
d3d5e39ed9d3training/webapp"pythonapp.py"...0.0.0.0:
32769->5000/tcp
这里多了端口信息。
PORTS
0.0.0.0:
32769->5000/tcp
Docker开放了5000端口(默认PythonFlask端口)映射到主机端口32769上。
这时我们可以通过浏览器访问WEB应用
我们也可以通过 -p 参数来设置不一样的端口:
runoob@runoob:
~$dockerrun-d-p5000:
5000training/webapppythonapp.py
dockerps查看正在运行的容器
runoob@runoob:
~#dockerps
CONTAINERIDIMAGEPORTSNAMES
bf08b7f2cd89training/webapp...0.0.0.0:
5000->5000/tcpwizardly_chandrasekhar
d3d5e39ed9d3training/webapp...0.0.0.0:
32769->5000/tcpxenodochial_hoov
容器内部的5000端口映射到我们本地主机的5000端口上。
网络端口的快捷方式
通过dockerps 命令可以查看到容器的端口映射,docker还提供了另一个快捷方式dockerport,使用 dockerport 可以查看指定(ID或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的web应用容器ID为bf08b7f2cd89名字为wizardly_chandrasekhar。
我可以使用dockerportbf08b7f2cd89或dockerportwizardly_chandrasekhar来查看容器端口的映射情况。
runoob@runoob:
~$dockerportbf08b7f2cd89
5000/tcp->0.0.0.0:
5000
runoob@runoob:
~$dockerportwizardly_chandrasekhar
5000/tcp->0.0.0.0:
5000
查看WEB应用程序日志
dockerlogs[ID或者名字]可以查看容器内部的标准输出。
runoob@runoob:
~$dockerlogs-fbf08b7f2cd89
*Runningonhttp:
//0.0.0.0:
5000/(PressCTRL+Ctoquit)
192.168.239.1--[09/May/201616:
30:
37]"GET/HTTP/1.1"200-
192.168.239.1--[09/May/201616:
30:
37]"GET/favicon.icoHTTP/1.1"404-
-f:
让dockerlogs像使用tail-f 一样来输出容器内部的标准输出。
从上面,我们可以看到应用程序使用的是5000端口并且能够查看到应用程序的访问日志。
查看WEB应用程序容器的进程
我们还可以使用 dockertop 来查看容器内部运行的进程
runoob@runoob:
~$dockertopwizardly_chandrasekhar
UIDPIDPPID...TIMECMD
root2324523228...00:
00:
00pythonapp.py
检查WEB应用程序
使用 dockerinspect 来查看Docker的底层信息。
它会返回一个JSON文件记录着Docker容器的配置和状态信息。
runoob@runoob:
~$dockerinspectwizardly_chandrasekhar
[
{
"Id":
"bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
"Created":
"2018-09-17T01:
41:
26.174228707Z",
"Path":
"python",
"Args":
[
"app.py"
],
"State":
{
"Status":
"running",
"Running":
true,
"Paused":
false,
"Restarting":
false,
"OOMKilled":
false,
"Dead":
false,
"Pid":
23245,
"ExitCode":
0,
"Error":
"",
"StartedAt":
"2018-09-17T01:
41:
26.494185806Z",
"FinishedAt":
"0001-01-01T00:
00:
00Z"
},
......
停止WEB应用容器
runoob@runoob:
~$dockerstopwizardly_chandrasekhar
wizardly_chandrasekhar
重启WEB应用容器
已经停止的容器,我们可以使用命令dockerstart来启动。
runoob@runoob:
~$dockerstartwizardly_chandrasekhar
wizardly_chandrasekhar
dockerps-l 查询最后一次创建的容器:
#dockerps-l
CONTAINERIDIMAGEPORTSNAMES
bf08b7f2cd89training/webapp...0.0.0.0:
5000->5000/tcpwizardly_chandrasekhar
正在运行的容器,我们可以使用 dockerrestart 命令来重启。
移除WEB应用容器
我们可以使用 dockerrm 命令来删除不需要的容器
runoob@runoob:
~$dockerrmwizardly_chandrasekhar
wizardly_chandrasekhar
删除容器时,容器必须是停止状态,否则会报如下错误
runoob@runoob:
~$dockerrmwizardly_chandrasekhar
Errorresponsefromdaemon:
Youcannotremovearunningcontainerbf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85.Stopthecontainerbeforeattemptingremovalorforceremove