Docker User Guide
文章目录
- Docker User Guide:
- 1. 简单启用docker
- 2. 交互式启用docker
- 3. 容器常用命令
- 4. 以后台进程模式运行
- 5. docker的命令格式:docker + flags + command + arguments
- 6. 一般程序运行的简单例子
- 7. 网络端口快捷方式
- 8.查看WEB应用程序日志
- 9.查看WEB应用程序容器的进程
- 10.检查WEB应用程序
- 11. 停止WEB应用容器
- 12. 重启WEB应用容器
- 13. 移除WEB应用容器
- 14. 在主机上列出镜像列表
- 15. 获取一个新的镜像
- 16. 查找镜像
- 17. 拖取镜像(Pull our image)
- 18. 网络端口映射
- 19. 容器命名
- 20.拉取指定版本,删除指定版本
Docker User Guide:
1. 简单启用docker
容器启动了 Docker 创建的新的 Ubuntu 14.04 环境,并在容器内执行 /bin/echo 命令
$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'2. 交互式启用docker
指定了 docker run 命令,并启动了 ubuntu:14.04 镜像,添加了两个新的标识(参数flags): -t 和 -i 。-t 表示在新容器内指定一个伪终端或终端,-i表示允许我们对容器内的 (STDIN) 进行交互。
我们在容器内还指定了一个新的命令: /bin/bash 。这将在容器内启动 bash shell
$ sudo docker run -t -i ubuntu:14.04 /bin/bash3. 容器常用命令
docker ps 列出容器docker logs 显示容器的标准输出docker stop 停止正在运行的容器4. 以后台进程模式运行
$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e5535038e28 ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute insane_babbage $ sudo docker logs insane_babbage hello world hello world hello world $ sudo docker stop insane_babbage5. docker的命令格式:docker + flags + command + arguments
Docker 的每一项操作都是通过命令行来实现的,而每一条命令行都可以使用一系列的标识(flags)和参数。
# Usage: [sudo] docker [flags] [command] [arguments] .. # Example: $ docker run -i -t ubuntu /bin/bash6. 一般程序运行的简单例子
我们已知是 -d 标识是让 docker 容器在后台运行。新的 -P 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上。
$ sudo docker run -d -P training/webapp python app.py docker ps 命令中指定了新的标识 -l。这样组合的 docker ps 命令会返回最后启动容器的详细信息。 Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 49155 上 $ 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一般的接口方式:外部端口:内部端口
$ sudo docker run -d -p 5000:5000 training/webapp python app.py7. 网络端口快捷方式
使用 docker ps 命令来会返回端口的映射是一种比较笨拙的方法。为此,Docker 提供了一种快捷方式: docker port ,使用 docker port 可以查看指定 (ID或者名字的)容器的某个确定端口映射到宿主机的端口号。
docker port 1a99f144e61769608d6aabfe3776e313995baed36e758be887092571b8e1633e 5000 0.0.0.0:327698.查看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 一样来输出容器内部的标准输出。
9.查看WEB应用程序容器的进程
我们除了可以查看容器日志,我们还可以使用 docker top 来查看容器内部运行的进程:
$ sudo docker top nostalgic_morse PID USER COMMAND 854 root python app.py10.检查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.511. 停止WEB应用容器
现在,我们的WEB应用程序处于工作状态。现在我们通过使用 docker stop 命令来停止名为 nostalgic_morse 的容器:
$ sudo docker stop nostalgic_morse nostalgic_morse现在我们使用 docker ps 命令来检查容器是否停止了。
$ sudo docker ps -l12. 重启WEB应用容器
哎呀!刚才你停止了另一个开发人员所使用的容器。这里你现在有两个选择:您可以创建一个新的容器或者重新启动旧的。让我们启动我们之前的容器:
$ sudo docker start nostalgic_morse nostalgic_morse13. 移除WEB应用容器
你的同事告诉你他们已经完成了在容器上的工作,不在需要容器了。让我们使用 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_morse14. 在主机上列出镜像列表
$ sudo docker images $ sudo docker run -t -i ubuntu:12.04 /bin/bash如果你不指定一个镜像的版本标签,例如你只使用 Ubuntu,Docker 将默认使用 Ubuntu:latest 镜像。
15. 获取一个新的镜像
Docker 的特点之一是人们创建了各种各样的 Docker 镜像。而且这些镜像已经被上传到了 Docker Hub 。我们可以从 Docker Hub 网站来搜索镜像。
$ sudo docker search sinatra NAME DESCRIPTION STARS OFFICIAL AUTOMATED training/sinatra Sinatra training image 0 [OK] marceldegraaf/sinatra Sinatra test app 0 mattwarren/docker-sinatra-demo 0 [OK] luisbebop/docker-sinatra-hello-world 0 [OK] bmorearty/handson-sinatra handson-ruby + Sinatra for Hands on with D... 0 subwiz/sinatra 0 bmorearty/sinatra NeuroDebian provides neuroscience research s… 5616. 查找镜像
Docker 的特点之一是人们创建了各种各样的 Docker 镜像。而且这些镜像已经被上传到了 Docker Hub 。我们可以从 Docker Hub 网站来搜索镜像。
$ sudo docker search sinatra NAME DESCRIPTION STARS OFFICIAL AUTOMATED training/sinatra Sinatra training image 0 [OK] marceldegraaf/sinatra Sinatra test app 0 mattwarren/docker-sinatra-demo 0 [OK] luisbebop/docker-sinatra-hello-world 0 [OK] bmorearty/handson-sinatra handson-ruby + Sinatra for Hands on with D... 0 subwiz/sinatra 0 bmorearty/sinatra 0 . . .17. 拖取镜像(Pull our image)
我们已经确定了要使用的镜像, training/sinatra , 现在我们使用 docker pull 命令来下载这个镜像。
$ sudo docker pull training/sinatra现在团队成员可以在自己的容器内使用这个镜像了。
$ sudo docker run -t -i training/sinatra /bin/bash root@a8cb6ce02d85:/#18. 网络端口映射
在使用docker部分,我们创建了一个python应用的容器。
$ sudo docker run -d -P training/webapp python app.py注:容器有一个内部网络和IP地址(在使用Docker部分我们使用docker inspect命令显示容器的IP地址)。Docker可以有各种网络配置方式。你可以再这里学到更多docker网络信息。
我们使用-P标记创建一个容器,将容器的内部端口随机映射到主机的高端口49000到49900。这时我们可以使用docker ps来看到端口5000绑定主机端口49155。
$ sudo docker ps nostalgic_morse 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我们也可以使用-p标识来指定容器端口绑定到主机端口
$ sudo docker run -d -p 5000:5000 training/webapp python app.py我们看这为什么不是一个好的主意呢?因为它限制了我们容器的一个端口。
我们还有很多设置-p标识的方法。默认-p标识会绑定本地主机上的指定端口。并且我们可以指定绑定的网络地址。举例设置localhost
$ sudo docker run -d -p 127.0.0.1:5001:5002 training/webapp python app.py这将绑定容器内部5002端口到主机的localhost或者127.0.0.1的5001端口。
如果要绑定容器端口5002到宿主机动态端口,并且让localhost访问,我们可以这样做:
$ sudo docker run -d -p 127.0.0.1::5002 training/webapp python app.py我们也可以绑定UDP端口,我们可以在后面添加/udp,举例:
$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py我们可以使用docker port快捷方式来绑定我们的端口,这有助于向我们展示特定的端口。例如我们绑定localhost,如下是docker port输出:
$ docker port nostalgic_morse 5000 127.0.0.1:49155注:-p可以使用多次配置多个端口。
19. 容器命名
执行此连接需要依靠你的docker的名字,这里我们可以看到当我们创建每一个容器的时候,它都会自动被命名。事实上我们已经熟悉了老的nostalgic_morse指南。你也可以自己命名容器。这种命名提供了两个有用的功能:
- 1.给容器特定的名字使你更容易记住他们,例如:命名web应用程序为web容器。
- 2.它为docker提供一个参考,允许其他容器引用,举例连接web容器到db容器。
你可以使用--name标识来命名容器,举例:
$ sudo docker run -d -P --name web training/webapp python app.py我们可以看到我们启动了的容器,就是我们使用--name标识命名为web的容器。我们可以使用docker ps命令来查看容器名称。
$ sudo docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES aed84ee21bde training/webapp:latest python app.py 12 hours ago Up 2 seconds 0.0.0.0:49154->5000/tcp web我们也可以使用docker inspect来返回容器名字。
$ sudo docker inspect -f "{{ .Name }}" aed84ee21bde /web20.拉取指定版本,删除指定版本
docker pull mongo:3.2.4 docker rmi e89d0c320043总结
以上是生活随笔为你收集整理的Docker User Guide的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: D3js(五):tooltips
- 下一篇: Activiti的使用技巧