文章作者:Tyan
博客:noahsnail.com

1. 运行Hello world

# 运行Hello world
$ docker run ubuntu /bin/echo 'Hello world'# 在容器内运行一个ubuntu的shell
$ docker run -t -i ubuntu /bin/bash#
$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
91d90bb91dfc        ubuntu              "/bin/sh -c 'while tr"   43 seconds ago      Up 42 seconds                           pensive_jepsen$ docker logs pensive_jepsen
hello world
hello world# 查看版本信心
$ docker version
Client:Version:      1.12.1API version:  1.24Go version:   go1.7.1Git commit:   6f9534cBuilt:        Thu Sep  8 10:31:18 2016OS/Arch:      darwin/amd64Server:Version:      1.12.1API version:  1.24Go version:   go1.6.3Git commit:   23cf638Built:        Thu Aug 18 17:52:38 2016OS/Arch:      linux/amd64# docker帮助
$ docker --help
...$ docker stop pensive_jepsen
pensive_jepsen
  • docker run 运行一个容器

  • ubuntu 镜像名字

  • -t 一个新容器内部的伪终端

  • -i 能与容器进行交互,交互模式

  • /bin/bash 在容器内启动Bash shell

  • -d 后台运行

  • docker ps 列出当前运行的容器

  • docker logs 显示某个容器的输出

  • docker stop 停止某个容器的运行

  • docker version 输出docker版本信息

2. 运行一个简单的web应用

# 运行web应用
$ docker run -d -P training/webapp python app.py# 查看当前运行的容器
$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
6e95e02e0fad        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:32768->5000/tcp   mad_curran# 指定容器的端口映射
docker run -d -p 80:5000 training/webapp python app.py$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
961a584288a8        training/webapp     "python app.py"     9 seconds ago       Up 8 seconds        0.0.0.0:32769->5000/tcp   goofy_kowalevski
ddbdae724301        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:80->5000/tcp      high_dubinsky$ docker port goofy_kowalevski 5000
0.0.0.0:32769$ docker logs -f high_dubinsky* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
172.17.0.1 - - [22/Sep/2016 09:47:27] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [22/Sep/2016 09:47:27] "GET /favicon.ico HTTP/1.1" 404 -$ docker top high_dubinsky
PID                 USER                TIME                COMMAND
3732                root                0:00                python app.py$ docker inspect high_dubinsky
[{"Id": "ddbdae724301831fa2477d9c95077c3b07fa16fad3686e429a6037f33e3f570c","Created": "2016-09-22T09:37:45.008007727Z","Path": "python","Args": ["app.py"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 3732,"ExitCode": 0,"Error": "","StartedAt": "2016-09-22T09:37:45.762803488Z","FinishedAt": "0001-01-01T00:00:00Z"},
...$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' high_dubinsky
172.17.0.3$ docker stop high_dubinsky$ docker rm high_dubinsky
  • -P 映射容器端口到主机端口

  • -l 告诉docker显示最后启动的容器信息

  • -a 显示所有容器的信息,包括已经停止运行的容器

  • PORTS 为容器端口与主机端口之间的映射

  • -p 80:5000 容器的5000端口映射主机的80端口

  • docker port 容器name/id 端口号,可以查看指定容器的端口5000映射到主机的端口

  • -f,类似linux tail -f,查看容器的标准输出

  • docker top 用来查看容器内部运行的进程

  • docker inspect 查看容器的配置与状态信息,返回的是JSON串

  • docker inspect -f ,查询JSON串中的指定内容

  • docker rm 只能移除已经停止运行的容器,因此在用之前,需要用docker stop 停止运行你想要移除的容器

注:从上面可以看到主机的两个端口32769和80都映射到了容器的5000端口,可以在主机浏览器中访问http://localhost:32769/,http://localhost:80/,都能看到Hello world!页面。虽然两个容器的端口都是5000,但它们是不一样的,容器的namespace属性会将两个容器隔离开,因此它们对应的主机端口是不一样的。

Docker理论与实践(三)相关推荐

  1. 光线追踪(RayTracing)算法理论与实践(三)光照

    提要 经过之前的学习,我们已经可以在利用光线追踪实现一些简单的场景.今天我们要探讨的是图形学里面的三种基本光源:方向光源,点光源,聚光灯. 不同于利用现成的Api,这次会从理论到实际一步步用C++实现 ...

  2. Docker理论与实践(二)

    文章作者:Tyan 博客:noahsnail.com 1. Docker命令 # 列出系统中的所有容器 docker ps -a# 结果 CONTAINER ID IMAGE COMMAND CREA ...

  3. K8S+Docker理论与实践深度集成

    前言: 这篇文章主要介绍了26道Spring经典面试题总结(附带答案)的相关资料,小编在网上看到的觉得挺不错的,现在分享给大家,希望对你们有所帮助. 另外本人整理收藏了多家公司面试知识点整理 ,以及各 ...

  4. WCF从理论到实践(5):Binding细解(转)

    WCF从理论到实践(5):Binding细解 本文的出发点: 通过阅读本文,您能了解以下知识: WCF中的Binding是什么? Binding的组成? Binding Element 的分类? Bi ...

  5. Gradle理论与实践一:Gradle入门

    文章目录 Gradle入门 1.配置Gradle环境 2.Gradle之Hello World 3.gradle 与gradlew的区别 4.Gradle命令介绍 5.Gradle 工作流程 Grad ...

  6. DDD(Domain Driven Design) 领域驱动设计从理论到实践 四

    - 接上 SOA 架构 ​     面向服务架构(Service Oriented Architecture,SOA)对于不同的人来说意思不同.这里梳理一下SOA原则: 服务契约 : 通过契约文档,服 ...

  7. Webrtc从理论到实践七: 官方demo源码走读(peerconnection_server)

    系列文章目录 Webrtc从理论到实践一:初识 Webrtc从理论到实践二: 架构 Webrtc从理论到实践三: 角色 Webrtc从理论到实践四: 通信 Webrtc从理论到实践五: 编译webrt ...

  8. RoboCup中的机器人自主定位——从理论到实践(三):粒子滤波器

    最近虽然闲在家中,但是要开始做毕业设计了,每天光是读论文就花去了大量的时间,因此这个系列更的有点慢,不过我一定会抽空写完的,也算是为以后找工作问项目经历提前做点准备. 我们继续本节的内容~ 上一次在R ...

  9. Kubernetes 集群升级指南:从理论到实践

    作者 | 高相林(禅鸣) **导读:**集群升级是 Kubernetes 集群生命周期中最为重要的一环,也是众多使用者最为谨慎对待的操作之一.为了更好地理解集群升级这件事情的内涵外延,我们首先会对集群 ...

最新文章

  1. 如何使用Leangoo敏捷工具做测试管理。
  2. 黄埔大学,选址定了!
  3. 0x0000050蓝屏srvsys_win7电脑蓝屏,显示的应该是srv.sys造成的,是什么情况?应该如何处理?...
  4. docker network基础
  5. 顺序表(代码、分析、汇编)
  6. react ---IOS AND ADROID
  7. 2015中国银联业务(武汉)面试经验(软件开发)
  8. 51单片机矩阵按键模块
  9. 求解-----组合优化问题
  10. android 图片轮播控
  11. 通过maven打nar报错问题
  12. 分糖果(candy)
  13. 循环辅助:continue
  14. python没有random模块_python-random模块
  15. 《设计模式的艺术》读书笔记
  16. what is the power of self-discipline in our life?
  17. 中国大学mooc医学计算机与信息素养答案,医学计算机与信息素养
  18. (ESLint)Expected '===' and instead saw '=='
  19. java基础之Scanner close方法
  20. 网传火鸟门户系统可以商用吗?

热门文章

  1. excel计算二元线性回归_用Excel做回归分析
  2. FPGA-超声波避障小车(ego1)
  3. 横河川仪压力变送器故障代码_压力变送器常见故障及解决办法
  4. Day5,page30,total160
  5. 关于移动设备的Flash播放器,Flash平台,和Flash未来的澄清
  6. cad2006激活未找到html文件,解决cad提示“cad加载自定义文件失败 未找到acad”的方法...
  7. Windows Installer和即点即用版本的Office程序不能并行的问题
  8. 学生命科学要学计算机吗,生命科学属于什么门类 计算机科学与技术专业属于什么门类...
  9. echarts中自定义图片的矢量路径
  10. Qt可拖拽排序表格(类似QQ好友分组排序)