欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Docker實(shí)用技巧實(shí)例分析

這篇文章主要講解了“Docker實(shí)用技巧實(shí)例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Docker實(shí)用技巧實(shí)例分析”吧!

10年積累的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有興和免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1. 一臺(tái)主機(jī)部署多個(gè)docker實(shí)例

如果你想運(yùn)行多個(gè)docker 容器在一臺(tái)主機(jī)上,如果要設(shè)置不同的tls設(shè)置,網(wǎng)絡(luò)設(shè)置,日志設(shè)置和存儲(chǔ)驅(qū)動(dòng)程序特定的容器,這是特別有用的。例如,我們目前正在運(yùn)行一個(gè)標(biāo)準(zhǔn)設(shè)立兩個(gè)docker守護(hù)進(jìn)程。一運(yùn)行consul提供DNS解析,并作為群集存儲(chǔ)為其他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


# start a docker daemon and bind to a specific port
dockerdaemon -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是一個(gè)很重要很多人都會(huì)用到的工具,也許你使用docker不只是為你的升級(jí),生產(chǎn)和測(cè)試環(huán)境,同時(shí)也對(duì)本地機(jī)器上運(yùn)行的數(shù)據(jù)庫(kù),服務(wù)器密鑰庫(kù)等,這是能夠直接運(yùn)行的容器的上下文中運(yùn)行的命令,非常方便。

我們做了大量的cassandra,并檢查表是否包含正確的數(shù)據(jù)。如果你只是想執(zhí)行一個(gè)快速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>
$ dockerps --format "table {{.id}}\t {{.names}}\t {{.status}}"
containerid    names       status
682f47f97fce    cassandra     up 2 minutes
4c45aea49180    consul       up 2 minutes
$ dockerexec -ti 682f47f97fce cqlsh --color
connectedto testclusterat 127.0.0.1:9042.
[cqlsh 5.0.1 | cassandra 2.2.3 | cqlspec 3.3.1 | native protocolv4]
use helpfor help.
cqlsh>

或者只是訪問(wèn)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


$ dockerexec -ti 682f47f97fce nodetoolstatus
datacenter: datacenter1
=======================
status=up/down
|/ state=normal/leaving/joining/moving
-- address    load   tokens   owns  hostid               rack
un 192.168.99.100 443.34 kb 256     ?   8f9f4a9c-5c4d-4453-b64b-7e01676361ff rack1
note: non-systemkeyspacesdon't havethesamereplicationsettings, effectiveownershipinformation

這當(dāng)然可以被應(yīng)用到任何(client)的工具捆綁在一起的鏡像中。我個(gè)人覺(jué)得這樣會(huì)比所有客戶端和本地更新更簡(jiǎn)單。

3. docker 的檢查 和jq

與其說(shuō)這是一個(gè)docker技巧,不如說(shuō)是一個(gè)jq技巧。如果你沒(méi)有聽(tīng)過(guò)jq,它是一個(gè)在命令行解析json的偉大工具。因?yàn)槲覀兛梢圆恍枰褂胒ormat specifier而能夠查看容器里面發(fā)生的一切。

# 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
 }
]


# get network information:
$ dockerinspect 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
$ dockerinspect 4c45aea49180 | jq '.[].args'
[
 "-server",
 "-advertise",
 "192.168.99.100",
 "-bootstrap-expect",
 "1"
]
# get all the mounted volumes
11:22 $ dockerinspect 4c45aea49180 | jq '.[].mounts'
[
 {
  "name": "a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f",
  "source": "/mnt/sda1/var/lib/docker/volumes/a8125ffdf6c4be1db4464345ba36b0417a18aaa3a025267596e292249ca4391f/_data",
  "destination": "/data",
  "driver": "local",
  "mode": "",
  "rw": true
 }
]

當(dāng)然,它也能很好的完成查詢其他類型的(docker-esque) api生成的json(e.g marathon, mesos, consul etc.)jq提供了一個(gè)非常廣泛的api,用于訪問(wèn)和處理json.更多信息可以在這里找到: https://stedolan.github.io/jq/

4. 擴(kuò)展現(xiàn)有容器和在本地注冊(cè)

在docker hub中有大量可以使用的的不同使用場(chǎng)景的鏡像。我們注意到,雖然有很多可用的鏡像,但是很多時(shí)候我們不得對(duì)他們做一些修改。比如更好的健康檢查consul,通過(guò)系統(tǒng)變量或命令行參數(shù)的其他配置,為更好地設(shè)置或增加我們的集群,這是不容易做到的。如果我們碰到這個(gè)是剛剛創(chuàng)建自己的docker的鏡像和把它推到我們的本地注冊(cè)表。我們通常是這么做的。

比如,我們希望有jq可在我們的consul 鏡像中這樣我們就可以很方便的檢查我們的服務(wù)是否正常。

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了。我們也有一個(gè)本地注冊(cè)表運(yùn)行鏡像在創(chuàng)建后,我們只是標(biāo)記生成的鏡像,并將其推到我們的本地注冊(cè)表

$ 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

現(xiàn)在,它可以提供給我們的開(kāi)發(fā)者了。并且也可在我們的不同的測(cè)試環(huán)境中使用。

5. 訪問(wèn)遠(yuǎn)程主機(jī)的docker

docker的cli是一個(gè)非??岬墓ぞ?,其中一個(gè)很大的特點(diǎn)是,你可以用它來(lái)輕松地訪問(wèn)多docker守護(hù)進(jìn)程,即使它們?cè)诓煌闹鳈C(jī)。你需要做的就是設(shè)置docker_host環(huán)境變量指向docker daemon的監(jiān)聽(tīng)地址。如果該端口是可以的訪問(wèn),你可以直接在遠(yuǎn)程主機(jī)上的docker,這和你運(yùn)行一個(gè)docker daemon ,并設(shè)置為通過(guò)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 程通過(guò)docker-machine啟動(dòng)。如果你有你的后臺(tái)程序運(yùn)行的控制,以及安全的網(wǎng)絡(luò),你可以很容易地從一臺(tái)機(jī)器控制所有的。

6. 簡(jiǎn)單的主機(jī)目錄掛載

當(dāng)你正在使用你的容器,你有時(shí)需要得到容器里面的一些數(shù)據(jù)。您可以復(fù)制它,或者通過(guò)使用ssh命令。但多數(shù)情況下是最容易的是將一個(gè)主機(jī)目錄添加容器中??梢院苋菀椎赝ㄟ^(guò)執(zhí)行下面的命令完成操作:

$ 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
$ mkdir /users/jos/temp/samplevolume/
$ ls /users/jos/temp/samplevolume/
$ dockerrun -v /users/jos/temp/samplevolume/:/samplevolume -it --rmbusybox
$ dockerrun -v /users/jos/temp/samplevolume/:/samplevolume -it --rmbusybox
/ # ls samplevolume/
/ # touch samplevolume/hello
/ # ls samplevolume/
hello
/ # exit
$ ls /users/jos/temp/samplevolume/
hello

你可以看到我們指定的目錄安裝在容器內(nèi),而且我們把所有的文件都在主機(jī)上,并在容器內(nèi)可見(jiàn)。我們也可以使用inspect查看,看看有什么安裝在哪里。

$ docker inspect 76465cee5d49 | jq '.[].mounts'
[
 {
  "source": "/users/jos/temp/samplevolume",
  "destination": "/samplevolume",
  "mode": "",
  "rw": true
 }
]
$ dockerinspect 76465cee5d49 | jq '.[].mounts'
[
 {
  "source": "/users/jos/temp/samplevolume",
  "destination": "/samplevolume",
  "mode": "",
  "rw": true
 }
]

我們可以在docker官網(wǎng)看到更多的特性和使用方 法: https://docs.docker.com/engine/userguide/dockervolumes/

7.添加dns解析到你的容器

我之前提到過(guò),我們可以通過(guò)consul來(lái)管理容器。consul是一個(gè)支持多數(shù)據(jù)中心分布式高可用的服務(wù)發(fā)現(xiàn)和配置共享的服務(wù)軟件,可以為容器提供服務(wù)發(fā)現(xiàn)和健康檢查。對(duì)于服務(wù)發(fā)現(xiàn)consul提供無(wú)論是rest api或傳統(tǒng)dns,他的偉大的之處是,當(dāng)你運(yùn)行一個(gè)具體的鏡像,你可以指定你的容器dns服務(wù)器。
當(dāng)你有consul運(yùn)行(或者其它 dns server)你可以把它添加到您的docker daemon就像這樣:

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

dockerrun -d --dns $ip_consul --dns-searchservice.consul <restofconfguration>

現(xiàn)在,我們可以解決與consul的名字注冊(cè)的所有容器的ip地址,比如在我們的環(huán)境我們有了一個(gè)cassandra 集群。每個(gè)cassandra將自己注冊(cè)名稱為“cassandra”我們的consul 集群。最酷的是,我們現(xiàn)在只是解決卡cassandra的地址基于主機(jī)名(而不必使用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$
$ dockerexec -ti 00c22e9e7c4e bash
daemon@00c22e9e7c4e:/opt/docker$ pingcassandra
pingcassandra.service.consul (192.168.99.100): 56 databytes
64 bytesfrom 192.168.99.100: icmp_seq=0 ttl=64 time=0.053 ms
64 bytesfrom 192.168.99.100: icmp_seq=1 ttl=64 time=0.077 ms
^c--- cassandra.service.consulpingstatistics ---
2 packetstransmitted, 2 packetsreceived, 0% packetloss
round-tripmin/avg/max/stddev = 0.053/0.065/0.077/0.000 ms
daemon@00c22e9e7c4e:/opt/docker$

8. docker-ui是一個(gè)很棒來(lái)查看和獲取洞察你容器的方式

使用docker cli來(lái)查看docker容器所發(fā)生的一切并不難。很多時(shí)候,雖然你并不需要的docker cli的全部功能,但只是想快速瀏覽其中的容器運(yùn)行,看看發(fā)生了什么。docker ui ( https://github.com/crosbymichael/dockerui )就是一個(gè)這樣偉大的項(xiàng)目,并且他是開(kāi)源的。

有了這個(gè)工具,你可以看到一個(gè)特定的docker deamon的容器和鏡像的最重要的東西。

9. container 不能啟動(dòng)? overwrite the entry point你只需要從bash啟動(dòng)。

有時(shí)候一個(gè)容器只是沒(méi)有做你想要它做的事情,你已經(jīng)重新創(chuàng)建了docker 鏡像,你在啟動(dòng)時(shí)運(yùn)行了幾次,但不知何故,該應(yīng)用程序沒(méi)有反應(yīng),然后日志顯示也沒(méi)什么有用的信息。最簡(jiǎn)單的調(diào)試方法是overwrite the entry point ,看看在容器內(nèi)部發(fā)生的一切,查看文件權(quán)限是否正確??截愡M(jìn)入鏡像的文件是否正確,或者任何其它可能出現(xiàn)的錯(cuò)誤。幸運(yùn)的是,docker有這樣做的一個(gè)簡(jiǎn)單的解決方案。你可以從一個(gè)選擇的入口點(diǎn)啟動(dòng)你的容器:

$ 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:/#
$ dockerrun -ti --entrypoint=bashcassandra
root@896757f0bfd4:/# ls
bin dev  etc libmediaopt root sbin sys usr
boot docker-entrypoint.sh home lib64 mntproc run srv tmp var

root@896757f0bfd4:/#

感謝各位的閱讀,以上就是“Docker實(shí)用技巧實(shí)例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Docker實(shí)用技巧實(shí)例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

文章題目:Docker實(shí)用技巧實(shí)例分析
URL網(wǎng)址:http://chinadenli.net/article8/gphcip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、企業(yè)網(wǎng)站制作、電子商務(wù)全網(wǎng)營(yíng)銷推廣、面包屑導(dǎo)航、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

1成都定制網(wǎng)站建設(shè)
后入美臀少妇一区二区| 欧美黑人精品一区二区在线 | 久久综合狠狠综合久久综合| 99免费人成看国产片| 国产成人精品在线一区二区三区| 国产av一区二区三区久久不卡| 精品偷拍一区二区三区| 欧美日韩精品久久第一页| 黄色国产一区二区三区| 高清欧美大片免费在线观看| 日韩人妻av中文字幕| 人妻人妻人人妻人人澡| 五月婷婷缴情七月丁香| 免费大片黄在线观看国语| 麻豆视传媒短视频免费观看| 久久精品一区二区少妇| 亚洲欧美国产网爆精品| 91欧美日韩国产在线观看| 日系韩系还是欧美久久| 欧美成人免费夜夜黄啪啪| 韩日黄片在线免费观看| 少妇高潮呻吟浪语91| 又大又长又粗又猛国产精品| 国产女同精品一区二区| 99久久免费中文字幕| 免费在线观看欧美喷水黄片| 日韩欧美一区二区不卡视频| 国产性色精品福利在线观看| 国产午夜福利片在线观看| 国产免费一区二区不卡| 麻豆果冻传媒一二三区| 丰满人妻熟妇乱又伦精另类视频| 久久精品国产99精品亚洲| 偷自拍亚洲欧美一区二页| 日韩人妻欧美一区二区久久| 青青免费操手机在线视频| 高潮少妇高潮久久精品99| 国产免费黄片一区二区| 亚洲精品中文字幕熟女| 国产老女人性生活视频| 中文字幕乱码免费人妻av|