docker客户端非常简单,我们可以直接输入docker命令来查看到 Docker 客户端的所有命令选项。
[root@localhost ~]# docker
可以通过命令docker command --help更深入的了解指定的Docker命令使用方法。
例如我们要查看docker stats指令的具体使用方法:
[root@localhost ~]# docker start --help
如果我们本地没有centos镜像,我们可以使用docker pull命令来载入centos 镜像:
[root@localhost ~]# docker pull centos
以下命令使用 centos 镜像启动一个容器,参数为以命令行模式进入该容器:
[root@localhost ~]# docker run -it centos /bin/bash
参数说明:
-i:交互式操作。
-t:终端。
centos:centos镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是/bin/bash。
要退出终端,直接输入exit:
[root@ffa33ec05a96 /]# exit
查看所有的容器命令如下:
[root@localhost ~]# docker ps -a
使用docker start启动一个已停止的容器:
[root@localhost ~]# docker start ffa33ec05a96
ffa33ec05a96
在大部分的场景下,我们希望 docker的服务是在后台运行的,我们可以过-d指定容器的运行模式。
[root@localhost ~]# docker run -itd --name test centos /bin/bash
a6c24c514ece204c3e9a15842fc8f1ff4b9e42da90555cbf634fcedd4a81bd56
注:加了-d参数默认不会进入容器,想要进入容器需要使用指令docker exec(下面会介绍到)。
停止容器的命令如下:
$ docker stop <容器 ID>
[root@localhost ~]# docker stop ffa33ec05a96
ffa33ec05a96
停止的容器可以通过docker restart重启:
$ docker restart <容器 ID>
[root@localhost ~]# docker restart ffa33ec05a96
ffa33ec05a96
在使用-d参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
docker exec:推荐大家使用docker exec命令,因为此退出容器终端,不会导致容器的停止。
下面演示了使用 docker attach 命令。
[root@localhost ~]# docker attach ffa33ec05a96
注意:如果从这个容器退出,会导致容器的停止。
下面演示了使用 docker exec 命令。
[root@localhost ~]# docker exec -it a6c24c514ece /bin/bash
注意:如果从这个容器退出,不会导致容器的停止,这就是为什么推荐大家使用docker exec的原因。
更多参数说明请使用docker exec --help命令查看。
如果要导出本地某个容器,可以使用docker export命令。
[root@localhost ~]# docker export a6c24c514ece >centos.tar
导出容器a6c24c514ece快照到本地文件centos.tar。
这样将导出容器快照到本地文件。
可以使用docker import从容器快照文件中再导入为镜像,以下实例将快照文件 centos.tar导入到镜像test/centos:v1
[root@localhost ~]# cat centos.tar | docker import - test/centos:v1
此外,也可以通过指定URL或者某个目录来导入,例如:
[root@localhost ~]# docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器使用docker rm命令:
[root@localhost ~]# docker rm -f ffa33ec05a96
下面的命令可以清理掉所有处于终止状态的容器。
[root@localhost ~]# docker container prune
前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用docker构建一个 web应用程序。
我们将在docker容器中运行一个Python Flask应用来运行一个web应用。
[root@localhost ~]# docker pull training/webapp # 下载镜像
[root@localhost ~]# docker run -d -P training/webapp python app.py
参数说明:
-d:让容器在后台运行。
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。
使用docker ps来查看我们正在运行的容器:
[root@localhost ~]# docker ps
这里多了端口信息。
PORTS
0.0.0.0:32768->5000/tcp
Docker开放了5000端口(默认Python Flask 端口)映射到主机端口32768上。
这时我们可以通过浏览器访问WEB应用
我们也可以通过-p参数来设置指定端口
[root@localhost ~]# docker run -d -p 5000:5000 training/webapp python app.py
docker ps查看正在运行的容器
[root@localhost ~]# docker ps
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
通过docker ps命令可以查看到容器的端口映射,docker还提供了另一个快捷方式docker port,使用docker port可以查看指定(ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的 web 应用容器 ID 为14c56e1a496c名字为jolly_fermat。
我可以使用docker port 14c56e1a496c或docker port jolly_fermat来查看容器端口的映射情况。
[root@localhost ~]# docker port 14c56e1a496c
5000/tcp -> 0.0.0.0:5000
[root@localhost ~]# docker port jolly_fermat
5000/tcp -> 0.0.0.0:5000
docker logs [ID或者名字]可以查看容器内部的标准输出。
[root@localhost ~]# docker logs -f 14c56e1a496c
-f:让docker logs像使用tail -f一样来输出容器内部的标准输出。
从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。
我们还可以使用docker top来查看容器内部运行的进程
[root@localhost ~]# docker top 14c56e1a496c
UID PID PPID C STIME TTY TIME CMD
root 8485 8468 0 14:30 ? 00:00:00 python app.py
使用docker inspect来查看Docker的底层信息。它会返回一个JSON 文件记录着Docker容器的配置和状态信息。
[root@localhost ~]# docker inspect 14c56e1a496c
[root@localhost ~]# docker stop jolly_fermat
jolly_fermat
已经停止的容器,我们可以使用命令docker start来启动。
[root@localhost ~]# docker start jolly_fermat
jolly_fermat
docker ps -l查询最后一次创建的容器
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14c56e1a496c training/webapp "python app.py" 13 minutes ago Up 11 seconds 0.0.0.0:5000->5000/tcp jolly_fermat
正在运行的容器,我们可以使用docker restart命令来重启。
移除WEB应用容器
我们可以使用docker rm命令来删除不需要的容器
[root@localhost ~]# docker stop jolly_fermat
jolly_fermat
[root@localhost ~]# docker rm jolly_fermat
jolly_fermat
# 删除容器时,容器必须是停止状态,否则会报如下错误
[root@localhost ~]# docker rm jolly_fermat
Error response from daemon: You cannot remove a running container 14c56e1a496cfd2f6690d51aff03f8a247e2caffd95f704940ea438b27f8
8cd5. Stop the container before attempting removal or force remove
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。