Docker理論與實踐

1 docker入門

1.1 安裝

https://cloud.tencent.com/developer/article/1108133

建議使用brew cask安裝,安裝完成後,會在mac的應用菜單中看到;也可以使用命令行查看

 

1.2 註冊docker賬號

1.3 配置加速器

獲取最新鏡像,加速鏡像拉取

https://www.docker-cn.com/registry-mirror

https://yeasy.gitbooks.io/docker_practice/install/mirror.html

可以用

docker info來驗證

1.4 啓動一個容器

沒有會拉取遠程倉庫拉取,讓後啓動

https://cloud.tencent.com/developer/article/1108133

當然也可以直接使用docker pull先拉鏡像

 

2 consul實踐

2.1 集羣部署

法1 https://www.cnblogs.com/sunsky303/p/9188199.html

法2 https://www.linpx.com/p/consul-docker-cluster-deployment-test.html

法3 https://blog.csdn.net/li2008kui/article/details/82493305

法3的例子是多數據中心的情況下的例子

 

2.2 相關解釋

  1. 法1和法2基本是一樣的,只是網絡地址不一樣。結果是法1成功,法2失敗。是爲什麼?

答: 這個應該是網絡地址的問題,

  1. 創建容器的時候生成的一串id那麼長,爲什麼docker exec -t node1 consul members顯示的時候id比較短?id和name在命令中等效使用嗎

答:常常在命令中可以使用容器name。

  1. attach上去的時候爲什麼默認打印日誌,可以不打印。就直接登錄機器那種效果嗎?

答:首先docker啓動容器的時候需要使用 -d 選項來讓容器中的進程以守護態運行;其次如果在運行時給-d的同時也綁定了 bash

如:

sudo docker run -itd ubuntu:14.04 /bin/bash

那麼在attach之後則會進入終端而不是直接打印日誌(此時如果想看日誌可以使用 docker logs xx_容器名來看日誌)。

如果沒有綁定bash,那麼直接attach會直接進入終端的日誌打印界面。此時可以使用

docker exec -it containerID /bin/bash

方式進入容器。退出使用ctrl + 大寫P + 大寫Q

 

注:如果報錯

則說明容器內的環境沒有/bin/bash,可以換 /bin/sh或者 bash試試

進入之後,使用curl就可以和consul client交互了(這裏consul client在容器創建命令中指定了是 172.17.0.3)。

 

[attach和log內容] https://blog.csdn.net/u013246898/article/details/52986886

  1. consul可以對其中一個node指定了client地址,爲什麼不能在本機瀏覽器中用該client地址+ 8500端口訪問?

答:因爲兩者不在一個網段,見第5點的解釋。

  1. 4的問題其實是本機的ip是否可以和容器的網絡地址是什麼關係?

答:這兩者並不在一個網絡中,可以在宿主機上ping容器的ip,可以發現並不能ping同。可以使用attach進入容器。

 

還有一些其他的集羣部署資料,可參考:

https://blog.csdn.net/wf19930209/article/details/80534526

 

2.3疑問

2.3.1 查看consul的leader信息

docker exec -t node1 consul info | grep leader

這個是查看consul相關信息的,

leader=false並不表示沒有了leader;

leader_addr從172.17.0.2轉變爲172.17.0.3。leader=true --》leader=false。所以這裏的false並不表示沒有leader節點了。

2.3.2 itd參數含義

-it參數的作用?

 

2.3.4 attach

不要同時開多個attach窗口

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章