JSON

10个日常Docker使用技巧(2)

字号+ 作者:H5之家 来源:H5之家 2016-09-30 16:00 我要评论( )

$ mkdir /Users/jos/temp/samplevolume/$ ls /Users/jos/temp/samplevolume/$ docker run -v /Users/jos/temp/samplevolume/:/samplevolume -it --rm busybox$ docker run -v /Users/jos/temp/samplevolume/:/sampl

$ mkdir /Users/jos/temp/samplevolume/ $ ls /Users/jos/temp/samplevolume/ $ docker run -v / Users/jos/temp/samplevolume/: /samplevolume -it --rm busybox $ docker run -v /Users/jos/temp/samplevolume/:/ samplevolume -it --rm busybox / # ls samplevolume/ / # touch samplevolume/hello / # ls samplevolume/ hello / # exit $ ls /Users/jos/temp/samplevolume/ hello

你可以看到我们指定的目录安装在容器内,而且我们把所有的文件都在主机上,并在容器内可见。我们也可以使用inspect查看,看看有什么安装在哪里。

$ docker inspect 76465cee5d49 | jq '.[].Mounts' [ { "Source": "/Users/jos/temp/samplevolume", "Destination": "/samplevolume", "Mode": "", "RW": true } ]

我们可以在Docker官网看到更多的特性和使用方法:https://docs.docker.com/engine/userguide/dockervolumes/

7、添加DNS解析到你的容器

我之前提到过,我们可以通过consul来管理容器。Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,可以为容器提供服务发现和健康检查。

对于服务发现Consul提供无论是REST API或传统DNS,他的伟大的之处是,当你运行一个具体的镜像,你可以指定你的容器DNS服务器。

当你有Consul运行(或者其它 DNS server)你可以把它添加到您的Docker daemon就像这样:

docker run -d --dns $IP_CONSUL --dns-search service.consul <rest of confguration>

现在,我们可以解决与Consul的名字注册的所有容器的IP地址,比如在我们的环境我们有了一个cassandra 集群。每个cassandra将自己注册名称为“cassandra”我们的Consul 集群。

最酷的是,我们现在只是解决卡cassandra的地址基于主机名(而不必使用Docker链接)

$ docker exec -ti 00c22e9e7c4e bash daemon@00c22e9e7c4e:/opt/docker$ ping cassandra PING cassandra.service.consul (192.168.99.100): 56 data bytes 64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.053 ms 64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.077 ms ^C--- cassandra.service.consul ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.053/0.065/0.077/0.000 ms daemon@00c22e9e7c4e:/opt/docker$

8、Docker-UI是一个很棒来查看和获取洞察你容器的方式

使用Docker CLI来查看Docker容器所发生的一切并不难。很多时候,虽然你并不需要的Docker CLI的全部功能,但只是想快速浏览其中的容器运行,看看发生了什么。

Docker UI (https://github.com/crosbymichael/dockerui)就是一个这样伟大的项目,并且他是开源的。

有了这个工具,你可以看到一个特定的Docker deamon的容器和镜像的最重要的东西。

9、Container 不能启动? Overwrite the Entry Point你只需要从bash启动。

有时候一个容器只是没有做你想要它做的事情,你已经重新创建了Docker 镜像,你在启动时运行了几次,但不知何故,该应用程序没有反应,然后日志显示也没什么有用的信息。

最简单的调试方法是overwrite the entry point ,看看在容器内部发生的一切,查看文件权限是否正确。拷贝进入镜像的文件是否正确,或者任何其它可能出现的错误。

幸运的是,Docker有这样做的一个简单的解决方案。你可以从一个选择的入口点启动你的容器:

$ docker run -ti --entrypoint=bash cassandra root@896757f0bfd4:/# ls bin dev etc lib mediaopt root sbin sys usr boot docker-entrypoint.sh home lib64 mntproc run srv tmp var root@896757f0bfd4:/#

10、监听一个容器的事件:

当你编写自己的脚本,或者只是想了解发生了什么,你可以Docker event command运行你的镜像,为此编写脚本很容易。

这是我们没有使用Docker Compose 和Swarm yet和Docker 1.9网络层 特性的情况,Docker一个很酷的工具,有一套伟大的工具。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Docker inspect 命令

    Docker inspect 命令

    2016-09-04 11:01

  • 10個日常Docker使用技巧

    10個日常Docker使用技巧

    2016-07-06 14:01

  • 提升你代码质量的10个Ruby小技巧

    提升你代码质量的10个Ruby小技巧

    2015-11-17 11:37

  • Docker的集成部署攻略

    Docker的集成部署攻略

    2015-10-16 08:13

网友点评
r