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相关推荐
- docker删除es数据_Docker的常用命令
Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...
- 【Docker】备份Docker镜像image、容器container、数据volume
文章目录 镜像image备份 容器container备份 数据卷volume 基本操作 数据卷备份 reference 本意上想要了解一下 Docker 容器中 Volume 的备份,毕竟重要的数据都 ...
- docker 删除映像_如何在Docker中删除映像和容器
docker 删除映像 Docker RMI (Docker rmi) docker rmi removes images by their ID. docker rmi通过其ID删除图像. To r ...
- docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...
最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像.这可难倒了我这个小白,搞了好几天才打包好.在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助. 文章内容包含以下3个 ...
- Docker 学习随笔
Docker的安装和卸载–Debian 卸载旧版本 root@linux-PC:~# sudo apt-get remove docker docker-engine docker.io contai ...
- Docker Volume 看这一篇就够了
Docker Volume 文章目录 Docker Volume 1. 简介 2. 原理 3. 命令 4. 应用 4.1 目录 bind mount 4.2 隐式创建 Docker volume 4. ...
- YOLOv5目标检测源码重磅发布了!
YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...
- Hexo 个性化配置(三)
本片博客是在上一篇博客Hexo个性化配置(二)的基础上在写的一篇博客,主要不在一起写的原因是,这是自己配置自己搭建的博客时候变学习边记录的文章,记录的比较详细.放置在一篇上面文章比较长,所以截取一次十 ...
- 11 编程指南_流数据
Flink 的流数据 API 编程指南 Flink 的流数据处理程序是常规的程序 ,通过再流数据上,实现了各种转换 (比如 过滤, 更新中间状态, 定义窗口, 聚合).流数据可以来之多种数据源 (比如 ...
最新文章
- np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率
- Swift直接解析YApi接口为模型
- 类与类之间关系的表示方式
- python3数字全排列怎么搞_python使用递归解决全排列数字示例
- java线程——什么是线程?
- 交互式内核图 -***
- 微服务中的面向切面编程和更多模式
- python如何将天数转换为日期字符串
- 回文日期(NOIP2016 普及组第二题)
- MySQL—Install/Remove of the Service Denied
- 人脸识别扫描(活体检测功能,眨眼、摇头、点头),身份证认证
- 声音信号 dB 及 dBA 的计算方式
- 135编辑器的html,百度编辑器 整合135编辑器
- Ruby--如何处理csv文件?
- mumu模拟器显示服务器出错,用mumu模拟器显示错误代码
- 用canvas代码写或者three.js代码写一张截图,这张截图里面包含4张图片 ,其中3张图片有倾斜立体效果,剩下的一张是背景图...
- IT行业的哪些岗位比较有前途?
- 使用3D-DNA流程,结果不升反降怎么破?
- 校园网络的规划与实施(思科)
- 【技术评网】说说豆瓣的URL设计
热门文章
- dxf转nc代码软件_FastCAM激光版套料软件
- puts遇到空格无法输出_输入一句英文,只包含字母和空格,如何输出这句英文中.....-黑马程序员技术交流社区...
- java f反射_java反射机制
- maven-resources-plugin include 通配符
- 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图
- 【若依(ruoyi)】解决同一Tomcat下两个/多个若依(ruoyi)项目部署报错
- mysql 树表查询所有子节点
- java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法
- spring MVC RequestMappingHandlerMapping解析
- Java finalize()的使用