最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker開啟遠程連接并實現(xiàn)安全通信詳解

 更新時間:2022年08月17日 10:03:32   作者:龔國瑋  
這篇文章主要為大家介紹了Docker開啟遠程連接并實現(xiàn)安全通信過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

Docker 使用了客戶端 -- 服務(wù)端模型。服務(wù)端對外提供 REST API。

默認安裝方式,客戶端和服務(wù)端在同一臺主機上,通過本地安全 PIC Socket 進行通信,例如 Linux 中 /var/run/docker.sock。我們還可以配置它們通過網(wǎng)絡(luò)進行通信。它們默認網(wǎng)絡(luò)配置使用不安全的 HTTP Socket,端口為 2375。

在生產(chǎn)環(huán)境這是不能接受的。通過 TLS 的方式連接解決這個問題。生產(chǎn)環(huán)境中推薦這種配置,即使在可信內(nèi)網(wǎng)中,也建議使用該方式!

Docker 為 TLS 提供兩種模式

  • daemon 模式:Docker daemon 只接收認證客戶端的請求。
  • 客戶端模式:Docker 客戶端只接收認證的 daemon 發(fā)起的請求。

同時使用它們,能提供最高的安全等級。

下面開始介紹如何完成 TLS 的配置,總體步驟如下。

  • 創(chuàng)建 CA 。
  • 為 daemon 創(chuàng)建密鑰對。
  • 為客戶端創(chuàng)建密鑰對。
  • 分發(fā)密鑰
  • Docker 配置 TLS 模式

創(chuàng)建 CA

在 node2 運行下面的命令。

  • 為 CA 創(chuàng)建私鑰(過程中需要設(shè)置密碼)
$ openssl genrsa -aes256 -out ca-key.pem 4096

當(dāng)前目錄新增一個 ca-key.pem 文件,這是 CA 私鑰。

  • 用 CA 私鑰生成公鑰(過程需要輸入之前的密碼)
$ openssl req -new -x509 -days 730 -key ca-key.pem -sha256 -out ca.pem

當(dāng)前目錄新增一個 ca.pem 文件,這是 CA 公鑰,也叫”證書“。

為 daemon 創(chuàng)建密鑰對

在 node3 運行下面的命令。

  • 為 daemon 創(chuàng)建私鑰。
$ openssl genrsa -out daemon-key.pem 4096

當(dāng)前目錄新增一個 daemon-key.pem 文件,這是 daemon 節(jié)點的私鑰。

  • 創(chuàng)建證書簽名請求并發(fā)送到 CA。
$ openssl req -subj "/CN=daemon" \ -sha256 -new -key daemon-key.pem -out daemon.csr

當(dāng)前目錄新增一個 daemon.csr 文件,這是 CSR。

為證書添加屬性。 創(chuàng)建文件,名為 extfile.cnf。示例中使用了 daemon 節(jié)點的 DNS 名稱和 IP。每個人的環(huán)境中可能值不同。

$ subjectAltName = DNS:daemon,IP:192.168.57.3
extendedKeyUsage = serverAuth
  • 生成證書 使用 CSR 文件、CA 密鑰、extfile.cnf 文件完成簽名和 daemon 證書配置。
$ openssl x509 -req -days 730 -sha256 \ -in daemon.csr -CA ca.pem -CAkey ca-key.pem \ -CAcreateserial -out daemon-cert.pem -extfile extfile.cnf 

此時,已經(jīng)擁有一個可用 CA ,同時 daemon 的 Node3 節(jié)點也有了自己的密鑰。

繼續(xù)下面內(nèi)容前,刪除 CSR 和 extfile.cnf。

$ rm daemon.csr extfile.cnf

為客戶端創(chuàng)建密鑰對

在 node3 運行下面的命令。

為客戶端創(chuàng)建密鑰

$ openssl genrsa -out client-key.pem 4096

當(dāng)前目錄新增一個 client-key.pem 文件。

創(chuàng)建 CSR。

$ openssl req -subj '/CN=client' -new -key client-key.pem -out client.csr

當(dāng)前目錄新增一個 client.csr 文件。

創(chuàng)建 extfile.cnf 文件 將證書設(shè)置為客戶端認證可用。文件內(nèi)容如下。

extendedKeyUsage = clientAuth

生成證書 使用 CSR 文件、CA 密鑰、extfile.cnf 文件完成簽名和客戶端證書配置。

$ openssl x509 -req -days 730 -sha256 \ -in client.csr -CA ca.pem -CAkey ca-key.pem \ -CAcreateserial -out client-cert.pem -extfile extfile.cnf

刪除 CSR 和 extfile.cnf ,因為不會用到它們了。 $ rm client.csr extfile.cnf

此時,在工作目錄下應(yīng)該有如下 7 個文件。

ca-key.pem
ca.pem
ca.srl
client-cert.pem
client-key.pem
daemon-cert.pem
daemon-key.pem

分發(fā)密鑰

  • 從 CA (剛才證書生成的 node) 復(fù)制 ca.pem、daemon-cert.pem、daemon-key.pem 到 node3(daemon 節(jié)點)。
  • 從 CA (剛才證書生成的 node) 復(fù)制 ca.pem、client-cert.pem、client-key.pem 到 node1(客戶端節(jié)點)。

這里用 scp 完成復(fù)制操作。在 scp 的過程中對部分文件進行了重命名。重命名非常重要,因為 Docker 對文件命名有規(guī)范。

// Daemon files
$ scp ./ca.pem ubuntu@daemon:/home/ubuntu/.docker/ca.pem
$ scp ./daemon-cert.pem ubuntu@daemon:/home/ubuntu/.docker/cert.pem
$ scp ./daemon-key.pem ubuntu@daemon:/home/ubuntu/.docker/key.pem
// Client files
$ scp ./ca.pem ubuntu@client:/home/ubuntu/.docker/ca.pem
$ scp ./client-cert.pem ubuntu@client:/home/ubuntu/.docker/cert.pem
$ scp ./client-key.pem ubuntu@client:/home/ubuntu/.docker/key.pem

Docker 配置 TLS 模式

進入 Node3(daemon 節(jié)點)完成下面的配置。

找到 daemon.json 配置文件。在 Linux 上位于 /etc/docker,編輯 daemon.json 文件,添加如下行。

   "tls": true, 
   "tlsverify": true,
   "tlscacert": "/home/ubuntu/.docker/ca.pem",
   "tlscert": "/home/ubuntu/.docker/cert.pem",
   "tlskey": "/home/ubuntu/.docker/key.pem",
   "hosts": ["tcp://你的 daemon 的IP:2376"]

這些 daemon.json 中的參數(shù)意義如下。

  • tlsverify :開啟 TLS 認證。
  • tlscacert :指定daemon可信任的 CA。
  • tlscert :向 Docker 指定 daemon 證書的位置。
  • tlskey :向 Docker 指定daemon私鑰的位置。
  • hosts :向 Docker 指定需要綁定 daemon 的具體 Socket。

警告:部分版本的 Linux 系統(tǒng)運行 systemd 的,不允許在 daemon.json 中使用“hosts”選項。替換方案是在 systemd 配置文件中進行重寫。創(chuàng)建名為 /etc/systemd/system/docker.service.d/override.conf 的新文件。在其中加入下列 3 行內(nèi)容,然后保存。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://你的 daemon 的IP:2376”

重啟 daemon 。

$ systemctl daemon-reload
$ systemctl restart docker.service

如果重啟失敗且錯誤為

docker.service: Main process exited, code=exited, status=1/FAILURE

為了讓它工作,編輯 /lib/systemd/system/docker.service,修改如下內(nèi)容之后再次嘗試重啟。

# 修改前:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 修改后:
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

理論上,/etc/systemd/system/docker.service.d/override.conf/etc/docker/daemon.json 可以同時修改,但是并不建議這么做,如果僅修改 /etc/docker/daemon.json 沒有出現(xiàn)任何問題,那就太棒了。

進入 Docker 客戶端節(jié)點,配置臨時環(huán)境變量。

$ export DOCKER_HOST=tcp://你的 daemon IP 地址:2376

嘗試運行 $ docker version,會出現(xiàn)錯誤,類似無法連接 daemon。接著設(shè)置另一個環(huán)境變量。

$ export DOCKER_TLS_VERIFY=1

它是告知 Docker 客戶端使用證書對全部命令進行簽名,此時再試試 $ docker version!

?? 恭喜。你成功完成了客戶端與 daemon 完成安全的通信。

以上就是Docker開啟遠程連接并實現(xiàn)安全通信詳解的詳細內(nèi)容,更多關(guān)于Docker遠程連接安全通信的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳細記一次Docker部署服務(wù)的爬坑歷程

    詳細記一次Docker部署服務(wù)的爬坑歷程

    這篇文章主要介紹了詳細記一次Docker部署服務(wù)的爬坑歷程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • mac下docker 安裝 ES的詳細過程

    mac下docker 安裝 ES的詳細過程

    這篇文章主要介紹了mac下docker 安裝 ES的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Docker兩個容器互相請求接口的實現(xiàn)

    Docker兩個容器互相請求接口的實現(xiàn)

    在Docker中,容器通過Docker網(wǎng)絡(luò)進行相互通信,本文就來介紹一下Docker兩個容器互相請求接口的實現(xiàn),感興趣的可以了解一下,感興趣的可以了解一下
    2023-11-11
  • 優(yōu)化 Docker 鏡像大小常見的方式

    優(yōu)化 Docker 鏡像大小常見的方式

    這篇文章主要介紹了如何優(yōu)化 Docker 鏡像大小,幫助大家更好的理解和使用docker容器,感興趣的朋友可以了解下。
    2020-09-09
  • Docker無法stop或者rm指定容器問題解決方案

    Docker無法stop或者rm指定容器問題解決方案

    這篇文章主要介紹了Docker無法stop或者rm指定容器問題解決方案,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Docker Dockerfile 定制鏡像的方法

    Docker Dockerfile 定制鏡像的方法

    這篇文章主要介紹了Docker Dockerfile 定制鏡像的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 使用Docker部署MySQL數(shù)據(jù)庫的兩種方法

    使用Docker部署MySQL數(shù)據(jù)庫的兩種方法

    在現(xiàn)代軟件開發(fā)中,MySQL 是一種流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),因其可靠性和易用性受到廣泛歡迎,通過 Docker,可以快速、便捷地部署和管理 MySQL 數(shù)據(jù)庫實例,本文將介紹兩種通過 Docker 部署 MySQL 的方法,需要的朋友可以參考下
    2024-10-10
  • Docker容器的加載分層原理及commit鏡像

    Docker容器的加載分層原理及commit鏡像

    這篇文章主要為大家介紹了Docker容器的加載分層原理及commit鏡像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Docker 簡單部署 ElasticSearch的實現(xiàn)方法

    Docker 簡單部署 ElasticSearch的實現(xiàn)方法

    這篇文章主要介紹了Docker 簡單部署 ElasticSearch的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Docker Base Image自己創(chuàng)建具體實現(xiàn)

    Docker Base Image自己創(chuàng)建具體實現(xiàn)

    這篇文章主要介紹了Docker Base Image創(chuàng)建具體實現(xiàn)的相關(guān)資料,這里提供了詳細的具體步驟,需要的朋友可以參考下
    2016-11-11

最新評論

塔城市| 阿巴嘎旗| 原阳县| 东海县| 东乡族自治县| 齐齐哈尔市| 凤阳县| 万源市| 蚌埠市| 中西区| 宁明县| 庆城县| 新和县| 万年县| 旅游| 石嘴山市| 治多县| 教育| 宁阳县| 济宁市| 明水县| 蒲江县| 康马县| 当雄县| 竹溪县| 乡城县| 灌南县| 普兰县| 民乐县| 盐池县| 密山市| 新余市| 利辛县| 泗洪县| 东光县| 诏安县| 杭州市| 普安县| 乌恰县| 长武县| 仲巴县|