欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Docker User Guide

发布时间:2024/9/15 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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/bash

3. 容器常用命令

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_babbage

5. docker的命令格式:docker + flags + command + arguments

Docker 的每一项操作都是通过命令行来实现的,而每一条命令行都可以使用一系列的标识(flags)和参数。

# Usage: [sudo] docker [flags] [command] [arguments] .. # Example: $ docker run -i -t ubuntu /bin/bash

6. 一般程序运行的简单例子

我们已知是 -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.py

7. 网络端口快捷方式

使用 docker ps 命令来会返回端口的映射是一种比较笨拙的方法。为此,Docker 提供了一种快捷方式: docker port ,使用 docker port 可以查看指定 (ID或者名字的)容器的某个确定端口映射到宿主机的端口号。

docker port 1a99f144e61769608d6aabfe3776e313995baed36e758be887092571b8e1633e 5000 0.0.0.0:32769

8.查看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.py

10.检查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

11. 停止WEB应用容器

现在,我们的WEB应用程序处于工作状态。现在我们通过使用 docker stop 命令来停止名为 nostalgic_morse 的容器:

$ sudo docker stop nostalgic_morse nostalgic_morse

现在我们使用 docker ps 命令来检查容器是否停止了。

$ sudo docker ps -l

12. 重启WEB应用容器

哎呀!刚才你停止了另一个开发人员所使用的容器。这里你现在有两个选择:您可以创建一个新的容器或者重新启动旧的。让我们启动我们之前的容器:

$ sudo docker start nostalgic_morse nostalgic_morse

13. 移除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_morse

14. 在主机上列出镜像列表

$ 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… 56

16. 查找镜像

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 /web

20.拉取指定版本,删除指定版本

docker pull mongo:3.2.4 docker rmi e89d0c320043

总结

以上是生活随笔为你收集整理的Docker User Guide的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。