Docker管理容器的运行流程和方式 | 您所在的位置:网站首页 › docker正在运行容器 › Docker管理容器的运行流程和方式 |
当你在docker容器中运行和管理你的应用程序,我们会展示如何管理这些容器。了解如何检查、监控和管理容器。 使用容器在上一节的用户指南,我们开始了我们的第一个容器。我们使用docker run命令启用了两个容器 我们在前台进行容器交互在后台进程运行容器在这个过程中我们了解了几个docker命令: docker ps 列出容器docker logs显示容器的标准输出docker stop停止正在运行的容器提示:我们有另外一种方法来学习docker命令,与用户交互 docker客户端非常简单。你可以使用docker的每一个标示和参数组合来进行你的操作。 # Usage: [sudo] docker [flags] [command] [arguments] .. # Example: $ docker run -i -t ubuntu /bin/bash这时候我们使用docker version命令来返回安装的docker客户端和进程信息。 这个命令不仅返回了您使用的docker客户端版本信息,还返回了docker的编程语言GO的版本信息。 Client version: 0.8.0 Go version (client): go1.2 Git commit (client): cc3a8c8 Server version: 0.8.0 Git commit (server): cc3a8c8 Go version (server): go1.2 Last stable version: 0.8.0 看看docker客户端能做什么我们可以通过只输入docker没有任何其它选项来查看docker客户端所有的命令。 $ sudo docker您将看到所有当前可用列表: Commands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes . . . docker命令使用你可以更深入的去了解docker命令的使用。 试着输入Docker [command],这里会看到docker命令的使用方法: $ sudo docker attach Help output . . .或者你可以再docker命令中使用--help标示 $ sudo docker images --help这将显示所有的描述信息和可用的标示: Usage: docker attach [OPTIONS] CONTAINER Attach to a running container --no-stdin=false: Do not attach stdin --sig-proxy=true: Proxify all received signal to the process (even in non-tty mode)注意:你可以看到一个完整的docker命令列表。 在Docker中运行一个web应用现在我们已经学习了更多的docker命令,我们需要学习在容器中运行更多重要的事情。到目前为止我们已经运行的容器没有什么特别用处。让我们通过在docker运行一个web应用程序实例来了解。 在我们的web应用中,我们将运行一个python应用。让我们先从docker run命令开始。 $ sudo docker run -d -P training/webapp python app.py让我们来回顾一下我们的命令。我们指定了-d和-P两个标示。我们已经知道的是-d标示是让docker容器在后台运行。新的-P标示通知Docker所需的网络端口映射从主机映射到我们的容器内。现在让我们看看我们的web应用程序。 我们指定了training/web镜像。这个预先建立好的镜像被我们创建后就已经包含了简单的python应用程序环境。 最好,我们指定一个容器来运行:python 注意:你可以在命令参考和Docker run参考看到更多docker run命令的细节 查看web应用容器现在我们使用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你可以看到我们在docker ps中已经指定了新的标示-l。这通知docker ps命令返回最后的容器的状态。 注意:默认情况下,docker ps命令只显示运行中的容器。如果你还想看已经停止的容器,请加上-a标示。 我们可以看到一些细节,与我们第一次运行docker ps命令的时候相比,这里多了一个重要的列PORTS。 PORTS 0.0.0.0:49155->5000/tcp我们通过docker run中使用-P标示。Docker中开放映射到我们主机的端口。 注意:当我们学习如果构建镜像的时候,我们将了解更多关于如何使用docker端口镜像的内容。 在这种情况下,docker开放了5000端口(默认Python端口)映射到主机端口49155上。 Docker可以配置绑定网络端口。在最后一个例子中-P标示,是-p 5000的快捷方式,-p 5000可以使端口5000映射到外部的端口(49000到49900端口)。我们也可以指定-p标示来指定端口。举例: $ sudo docker run -d -p 5000:5000 training/webapp python app.py他将容器的5000端口映射到我们本地主机5000端口.现在你可能会问:为什么我们只使用1对1端口映射到Docker容器而不是映射到高端口?1:1映射端口只能到你本地主机的端口。假设你想要测试两个Python应用程序,两个容器内绑定到端口5000,没有足够的docker的端口映射你只能访问其中一个。 所以,现在我们打开浏览器访问端口49155。 我们的应用程序可以访问了! 注意:如果你在windows OS X或者Linux上使用boot2docker,您将需要制定虚拟主机IP,而不是使用本地主机,你可以通过运行boot2docker shell。 $ boot2docker ip The VM's Host only interface IP address is: 192.168.59.103在这种情况下你可以通过http://192.168.59.103:49155访问上面的例子。 网络端口快捷方式使用docker ps命令会返回映射端口,就是有点笨手笨脚的。对此,docker提供了一种快捷方式:docker port。使用docker port可以查看指定(ID或者名字的)容器的某个确定端口映射到宿主机的端口号。 $ sudo docker port nostalgic_morse 5000 0.0.0.0:49155在这种情况下,我们看到容器的5000端口映射到了宿主机的的49155端口。 查看WEB应用程序日志让我们看看我们的容器中的应用程序都发生了什么,使用我们学习到的另一个命令docker logs来查看。 $ 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 -这次我们添加了一个标示-f。这将使docker log命令中使用tail -f来查看容器标准输出。这里我们从应用程序日志的5000端口的访问日志条目。 查看我们WEB应用程序容器的过程我们除了可以查看容器日志,我们还可以使用docker top来查看容器进程: $ sudo docker top nostalgic_morse PID USER COMMAND 854 root python app.py这里我们可以看到python app.py在容器里唯一进程。 检查我们的WEB应用程序最后,我们可以使用docker inspect来查看Docker的底层信息。它会返回一个JSON文件记录docker容器的配置和状态信息。 $ 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": "", . . .我们也可以针对我们想要的信息进行过滤,例如,返回容器的IP地址,如下: $ sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' nostalgic_morse 172.17.0.5 停止我们的容器好吧,我们看到WEB应用程序工作。现在我们通过使用docker stop命令来停止名为 nostalgic_morse 的容器: $ sudo docker stop nostalgic_morse nostalgic_morse现在我们使用docker ps命令来检查容器是否停止了。 重启我们的应用程序哎呀!刚才你停止了另一个开发人员所使用的容器。这里你现在有两个选择:您可以创建一个新的容器或者重新启动旧的。让我们启动我们之前的容器: $ sudo docker start nostalgic_morse nostalgic_morse现在运行docker ps -l来查看正在运行的容器,或者通过URL访问来查看我们的应用程序是否响应。 注意:也可以使用docker restart命令来停止容器或然后再启动容器。 移除我们的应用程序你的同事告诉你他们已经完成了在容器上的工作,不在需要容器了。让我们使用docker rm命令来删除它: $ 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发生了什么?实际上,我们不能删除正在运行的容器。这避免你意外删除了可能需要的运行中的容器。让我们先停止容器,再试一次。 $ sudo docker stop nostalgic_morse nostalgic_morse $ sudo docker rm nostalgic_morse nostalgic_morse现在我们停止并删除了容器。 注意:删除容器是最后一步! |
CopyRight 2018-2019 实验室设备网 版权所有 |