Sonyfe25cp的玩具

home

Docker入门之如何操作容器

17 Jan 2015

这一篇主要是来讲述下如何操作容器。 有以下几个命令比较重要:

docker ps 查看当前有哪些容器在工作
docker logs 查看容器的日志
docker stop 停止某个容器

####以运行一个web容器为例

sudo docker run -d -P training/webapp python app.py 我们在`training/webapp`镜像下执行 `python app.py`这个项目。

其中-d参数表示让docker在后台运行。 -P参数表示把需要映射的端口都映射到host机上。

使用docker ps可以查看到下面结果:

$ sudo docker ps -l
CONTAINER ID  IMAGE                   COMMAND       CREATED        STATUS        	PORTS                    NAMES
bc533791f3f5  training/webapp:latest  python app.py 5 seconds ago  Up 2 	seconds  0.0.0.0:49155->5000/tcp  nostalgic_morse

其中-l参数表示显示出详细信息。

其中0.0.0.0:49155->5000/tcp就是-P参数的效果,它把app.py的默认端口5000映射到了主机的49155端口上,这样访问49155端口就可以访问到该web项目了。

如果我们不想让它这样随机的映射端口,则可以执行sudo docker run -d -p 5000:5000 training/webapp python app.py,通过-p参数来指定映射端口。

####查看指定端口

$ sudo docker port nostalgic_morse 5000
0.0.0.0:49155 可以用`docker port`这样来查看指定端口的映射情况。

####查看日志

$ sudo docker logs -f nostalgic_morse
* Running on http://0.0.0.0:5000/
10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP/1.1" 200 -
10.0.2.2 - - [23/May/2014 20:16:31] "GET /favicon.ico HTTP/1.1" 404 - 通过`docker logs` 来查看对应容器的日志。其中`-f`参数的效果跟`tail -1f`的作用是一样的。

####查看容器内进程

$ sudo docker top nostalgic_morse
PID                 USER                COMMAND
854                 root                python app.py

####注入容器

sudo docker inspect nostalgic_morse

通过该命令可以注入到容器中,返回一个json格式的信息。

[{
	"ID": 	"bc533791f3f500b280a9626688bc79e342e3ea0d528efe3a86a51ecb28ea20",
	"Created": "2014-05-26T05:52:40.808952951Z",
    "Path": "python",
	"Args": [
       "app.py"
    ],
	"Config": {
       "Hostname": "bc533791f3f5",
       "Domainname": "",
       "User": "",
. . .

当然也可以指定查询某个特定的信息

$ sudo docker inspect -f '' nostalgic_morse
172.17.0.5

####停止容器

$ sudo docker stop nostalgic_morse

####重启容器

sudo docker start nostalgic_morse 也可以用

docker restart ####删掉容器

$ sudo docker rm nostalgic_morse
Error: Impossible to remove a running container, please stop it first or use -f
2014/05/24 08:12:56 Error: failed to remove one or more containers 如果一个容器没用了,可以删掉。但是必须先停止它,才能删掉它。