JSON

10個日常Docker使用技巧

字号+ 作者:H5之家 来源:H5之家 2016-07-06 14:01 我要评论( )

10個日常Docker使用技巧 來自:謝權SELF 鏈接:https://xiequan.info/10個日常使用docker使用技巧/ 原文:https://dzone.com/articles/10-practical-docker-tips-for-day-to-day-docker-usa (.尾部閱讀原文前往) 已獲轉載授權 我有機會建立一個以Docker為

10個日常Docker使用技巧

來自:謝權SELF

鏈接:https://xiequan.info/10個日常使用docker使用技巧/ 

原文:https://dzone.com/articles/10-practical-docker-tips-for-day-to-day-docker-usa(.尾部閱讀原文前往)

已獲轉載授權


我有機會建立一個以Docker為基礎的微服務架構在我現在的工作中,很多人都會分享他們使用Docker的心得,我想我也不會例外。因此我總結瞭一些,可能你會在日常使用Docker的時候會用到。


1、一臺主機部署多個Docker實例


如果你想運行多個Docker 容器在一臺主機上,如果要設置不同的TLS設置,網絡設置,日志設置和存儲驅動程序特定的容器,這是特別有用的。


例如,我們目前正在運行一個標準設立兩個Docker守護進程。一運行consul提供DNS解析,並作為群集存儲為其他Docker 容器。


For example:

# start a docker daemon and bind to a specific port

docker daemon -H tcp://$IP:5000 –storage-opt dm.fs=xfs \

            -p “/var/run/docker1.pid" \

            -g “/var/lib/docker1″ \

            –exec-root="/var/run/docker1

# and start another daemon

docker daemon -H tcp://$IP:5001 –storage-opt dm.fs=xfs \

        -s devicemapper \

        –storage-opt dm.thinpooldev=/dev/mapper/docker–vg-docker–pool \

        -p “/var/run/docker2.pid" \

        -g “/var/lib/docker2″ –exec-root="/var/run/docker2″

        –cluster-store=consul://$IP:8500 \

        –cluster-advertise=$IP:2376


2、Docker Exec的使用


Docker Exec是一個很重要很多人都會用到的工具,也許你使用Docker不隻是為你的升級,生產和測試環境,同時也對本地機器上運行的數據庫,服務器密鑰庫等,這是能夠直接運行的容器的上下文中運行的命令,非常方便。


我們做瞭大量的Cassandra,並檢查表是否包含正確的數據。如果你隻是想執行一個快速CQL查詢,Docker exec 就很贊:


$ docker ps –format “table {{.ID}}\t {{.Names}}\t {{.Status}}"

CONTAINER ID        NAMES               STATUS

682f47f97fce         cassandra           Up 2 minutes

4c45aea49180         consul              Up 2 minutes

$ docker exec -ti 682f47f97fce cqlsh –color

Connected to Test Cluster at 127.0.0.1:9042.

[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]

Use HELP for help.

cqlsh>


或者隻是訪問nodetool或鏡像中可用的任何其他工具:


$ docker exec -ti 682f47f97fce nodetool status

Datacenter: datacenter1

=======================

Status=Up/Down

|/ State=Normal/Leaving/Joining/Moving

—  Address         Load       Tokens       Owns    Host ID                               Rack

UN  192.168.99.100  443.34 KB  256          ?       8f9f4a9c-5c4d-4453-b64b-7e01676361ff  rack1

Note: Non-system keyspaces don’t have the same replication settings, effective ownership information


這當然可以被應用到任何(Client)的工具捆綁在一起的鏡像中。我個人覺得這樣會比所有客戶端和本地更新更簡單。


3、Docker 的檢查 和JQ


與其說這是一個Docker技巧,不如說是一個JQ技巧。如果你沒有聽過JQ,它是一個在命令行解析JSON的偉大工具。因為我們可以不需要使用format specifier而能夠查看容器裡面發生的一切。


# Get network information:

$ docker inspect 4c45aea49180 | jq ‘.[].NetworkSettings.Networks’

{

  “bridge": {

    “EndpointID": “ba1b6efba16de99f260e0fa8892fd4685dbe2f79cba37ac0114195e9fad66075″,

    “Gateway": “172.17.0.1″,

    “IPAddress": “172.17.0.2″,

    “IPPrefixLen": 16,

    “IPv6Gateway": “",

    “GlobalIPv6Address": “",

    “GlobalIPv6PrefixLen": 0,

    “MacAddress": “02:42:ac:11:00:02″

  }

}

# Get the arguments with which the container was started

$ docker inspect 4c45aea49180 | jq ‘.[].Args’

[

  “-server",

  “-advertise",

  “192.168.99.100″,

  “-bootstrap-expect",

  “1″

]

# Get all the mounted volumes

11:22 $ docker inspect 4c45aea49180 | jq ‘.[].Mounts’

[

  {

    “Name": “a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f",

    “Source": “/mnt/sda1/var/lib/docker/volumes/a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f/_data",

    “Destination": “/data",

    “Driver": “local",

    “Mode": “",

    “RW": true

  }

]


 

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

相关文章
  • 概述JSON定义法的相关使用技巧和说明

    概述JSON定义法的相关使用技巧和说明

    2016-01-17 19:09

  • Perl使用技巧18:处理json数据

    Perl使用技巧18:处理json数据

    2016-01-17 15:13

  • Notepad++插件使用技巧

    Notepad++插件使用技巧

    2016-01-15 16:35

  • javascript语言使用技巧及注意事项总结

    javascript语言使用技巧及注意事项总结

    2015-11-24 12:38

网友点评