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

当然,它也能很好的完成查询其他类型的(Docker-esque) API生成的JSON(e.g Marathon, Mesos, Consul etc.)JQ提供了一个非常广泛的API,用于访问和处理JSON.更多信息可以在这里找到: https://stedolan.github.io/jq/

4. 扩展现有容器和在本地注册

在Docker hub中有大量可以使用的的不同使用场景的镜像。我们注意到,虽然有很多可用的镜像,但是很多时候我们不得对他们做一些修改。比如更好的健康检查consul,通过系统变量或命令行参数的其他配置,为更好地设置或增加我们的集群,这是不容易做到的。如果我们碰到这个是刚刚创建自己的Docker的镜像和把它推到我们的本地注册表。我们通常是这么做的。

比如,我们希望有JQ可在我们的consul 镜像中这样我们就可以很方便的检查我们的服务是否正常。

FROM progrium/consul USER root ADD bin/jq /bin/jq ADD scripts/health-check.sh /bin/health-check.sh FROMprogrium/consul USERroot ADDbin/jq /bin/jq ADDscripts/health-check.sh /bin/health-check.sh

我们有了health check scripts and JQ我们就可以从我们自己的consul image做health check了。我们也有一个本地注册表运行镜像在创建后,我们只是标记生成的镜像,并将其推到我们的本地注册表

$ docker build . ... $ docker tag a3157e9edc18 <local-registry>/consul-local:some-tag $ docker push <local-registry>/consul-local:some-tag $ dockerbuild . ... $ dockertaga3157e9edc18 <local-registry>/consul-local:some-tag $ dockerpush <local-registry>/consul-local:some-tag

现在,它可以提供给我们的开发者了。并且也可在我们的不同的测试环境中使用。

5. 访问远程主机的Docker

Docker的CLI是一个非常酷的工具,其中一个很大的特点是,你可以用它来轻松地访问多Docker守护进程,即使它们在不同的主机。你需要做的就是设置DOCKER_HOST环境变量指向Docker daemon的监听地址。如果该端口是可以的访问,你可以直接在远程主机上的Docker,这和你运行一个Docker daemon ,并设置为通过docker-machine几乎相同的原理。

$ docker-machine env demo export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/jos/.docker/machine/machines/demo" export DOCKER_MACHINE_NAME="demo" $ docker-machineenvdemo exportDOCKER_TLS_VERIFY="1" exportDOCKER_HOST="tcp://192.168.99.100:2376" exportDOCKER_CERT_PATH="/Users/jos/.docker/machine/machines/demo" exportDOCKER_MACHINE_NAME="demo"

但你不必限制自己Docker daemons 程通过docker-machine启动。如果你有你的后台程序运行的控制,以及安全的网络,你可以很容易地从一台机器控制所有的。

6. 简单的主机目录挂载

当你正在使用你的容器,你有时需要得到容器里面的一些数据。您可以复制它,或者通过使用ssh命令。但多数情况下是最容易的是将一个主机目录添加容器中。可以很容易地通过执行下面的命令完成操作:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3dbf4a38cb82970ef86085d2690bdb6a.html