文章目录

  • 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相关推荐

  1. docker删除es数据_Docker的常用命令

    Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...

  2. 【Docker】备份Docker镜像image、容器container、数据volume

    文章目录 镜像image备份 容器container备份 数据卷volume 基本操作 数据卷备份 reference 本意上想要了解一下 Docker 容器中 Volume 的备份,毕竟重要的数据都 ...

  3. docker 删除映像_如何在Docker中删除映像和容器

    docker 删除映像 Docker RMI (Docker rmi) docker rmi removes images by their ID. docker rmi通过其ID删除图像. To r ...

  4. docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...

    最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像.这可难倒了我这个小白,搞了好几天才打包好.在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助. 文章内容包含以下3个 ...

  5. Docker 学习随笔

    Docker的安装和卸载–Debian 卸载旧版本 root@linux-PC:~# sudo apt-get remove docker docker-engine docker.io contai ...

  6. Docker Volume 看这一篇就够了

    Docker Volume 文章目录 Docker Volume 1. 简介 2. 原理 3. 命令 4. 应用 4.1 目录 bind mount 4.2 隐式创建 Docker volume 4. ...

  7. YOLOv5目标检测源码重磅发布了!

    YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...

  8. Hexo 个性化配置(三)

    本片博客是在上一篇博客Hexo个性化配置(二)的基础上在写的一篇博客,主要不在一起写的原因是,这是自己配置自己搭建的博客时候变学习边记录的文章,记录的比较详细.放置在一篇上面文章比较长,所以截取一次十 ...

  9. 11 编程指南_流数据

    Flink 的流数据 API 编程指南 Flink 的流数据处理程序是常规的程序 ,通过再流数据上,实现了各种转换 (比如 过滤, 更新中间状态, 定义窗口, 聚合).流数据可以来之多种数据源 (比如 ...

最新文章

  1. np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率
  2. Swift直接解析YApi接口为模型
  3. 类与类之间关系的表示方式
  4. python3数字全排列怎么搞_python使用递归解决全排列数字示例
  5. java线程——什么是线程?
  6. 交互式内核图 -***
  7. 微服务中的面向切面编程和更多模式
  8. python如何将天数转换为日期字符串
  9. 回文日期(NOIP2016 普及组第二题)
  10. MySQL—Install/Remove of the Service Denied
  11. 人脸识别扫描(活体检测功能,眨眼、摇头、点头),身份证认证
  12. 声音信号 dB 及 dBA 的计算方式
  13. 135编辑器的html,百度编辑器 整合135编辑器
  14. Ruby--如何处理csv文件?
  15. mumu模拟器显示服务器出错,用mumu模拟器显示错误代码
  16. 用canvas代码写或者three.js代码写一张截图,这张截图里面包含4张图片 ,其中3张图片有倾斜立体效果,剩下的一张是背景图...
  17. IT行业的哪些岗位比较有前途?
  18. 使用3D-DNA流程,结果不升反降怎么破?
  19. 校园网络的规划与实施(思科)
  20. 【技术评网】说说豆瓣的URL设计

热门文章

  1. dxf转nc代码软件_FastCAM激光版套料软件
  2. puts遇到空格无法输出_输入一句英文,只包含字母和空格,如何输出这句英文中.....-黑马程序员技术交流社区...
  3. java f反射_java反射机制
  4. maven-resources-plugin include 通配符
  5. 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图
  6. 【若依(ruoyi)】解决同一Tomcat下两个/多个若依(ruoyi)项目部署报错
  7. mysql 树表查询所有子节点
  8. java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法
  9. spring MVC RequestMappingHandlerMapping解析
  10. Java finalize()的使用