<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## docker的遠程訪問 方法一 :編輯docker.service文件 ***** 編輯docker.service文件 ``` sudo vim /lib/systemd/system/docker.service ``` 修改ExecStart行為下面內容 ``` ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock ``` 重新加載docker配置 ``` sudo systemctl daemon-reload // 1,加載docker守護線程 sudo systemctl restart docker // 2,重啟docker ``` ` ` 方法二:修改`daemon.json`的配置 ***** 下面修改`daemon.json`的配置 ``` vim /etc/docker/daemon.json { "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } ``` > "unix:///var/run/docker.sock":unix socket,本地客戶端將通過這個來連接 Docker Daemon。 > "tcp://0.0.0.0:2375":tcp socket,表示允許任何遠程客戶端通過 2375 端口連接 Docker Daemon。 修改配置以后 然后讓docker重新讀取配置文件,并重啟docker服務 ``` systemctl daemon-reload systemctl restart docker ``` ` ` 方法三 ***** 首先是怎么配置遠程訪問的API: ``` vim /etc/default/docker ``` 加入下面一行 ``` DOCKER_OPTS="-H tcp://0.0.0.0:2375" ``` 重啟docker即可: ``` sudo systemctl restart docker ``` > PS:這是網上給的配置方法,也是這種簡單配置讓Docker Daemon把服務暴露在tcp的2375端口上,這樣就可以在網絡上操作Docker了。Docker本身沒有身份認證的功能,只要網絡上能訪問到服務端口,就可以操作Docker。 ` ` ## 通過IDEA和CA證書加密遠程鏈接到服務器上的Docker 因為docker 默認是root 權限,允許所有人訪問,直接把2375端口暴露在外網相當于直接把服務器的root 權限拱手送人,因此我們需要構建一個加密的TCP鏈接,以Https的方式連接到遠程的docker 服務器 ### 創建ca證書 創建一個ca文件夾: ``` sudo mkdir -p /usr/local/ca cd /usr/local/ca ``` 創建一個key ``` sudo openssl genrsa -aes256 -out ca-key.pem 4096 sudo openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem ``` >提示你需要輸入密碼和確認密碼,請記住這個密碼 填寫一些基本的信息,國家啊,地區 生成server-key.pem ``` sudo openssl genrsa -out server-key.pem 4096 ``` 綁定IP或者域名 $HOST 這個值,填寫你的服務器外網IP 或者服務器外網域名 ``` sudo openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr ``` 配置白名單 ``` sudo vim extfile.cnf ``` $HOST 是上一步設置的那個 $HOST,加入下列內容: ``` subjectAltName = DNS:106.54.84.33,IP:106.54.84.33,IP:127.0.0.1,IP:0.0.0.0 extendedKeyUsage = serverAuth ``` >你如果希望只有指定的IP能夠訪問的話,請把0.0.0.0 改為指定IP,不過一般情況下,個人的網絡是沒有固定的公網IP的,所以建議設置成0.0.0.0,但是需要證書才能訪問 生成ca-key ``` sudo openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf ``` >執行這一句需要輸入之前設置的密碼 創建客戶端密鑰和證書簽名請求: ``` sudo openssl genrsa -out key.pem 4096 sudo openssl req -subj '/CN=client' -new -key key.pem -out client.csr ``` 修改 `extfile.cnf` ``` subjectAltName = DNS:106.54.84.33,IP:106.54.84.33,IP:127.0.0.1,IP:0.0.0.0 extendedKeyUsage = clientAuth ``` 生成簽名私鑰: ``` sudo openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf ``` >需要輸入之前設置的密碼 修改權限 ``` sudo chmod -v 0400 ca-key.pem key.pem server-key.pem sudo chmod -v 0444 ca.pem server-cert.pem cert.pem ``` 現在`client.csr`和`server.csr`兩個文件可以刪除了。 ### docker配置ca證書 把證書復制過去 ``` sudo cp server-*.pem /etc/docker/ sudo cp ca.pem /etc/docker/ ``` 將Docker服務停止了,然后: 修改docker 的配置 ``` sudo vi /lib/systemd/system/docker.service ``` 把ExecStart 的值設置為如下 ``` --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2375-H unix:///var/run/docker.sock ``` 啟動Docker守護進程,并將其掛載在2375端口。 重啟docker ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` ### 使用證書連接 復制`ca.pem`,`cert.pem`,`key.pem`三個文件到客戶端 執行命令連接: ``` docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=192.168.211.238:2375 version ``` ### 默認連接 如果想默認連接該Docker服務器,可以進行如下配置: 將`ca.pem`,`cert.pem`,`key.pem`三個文件移動到 ~/.docker 設置環境變量: ``` export DOCKER_HOST=tcp://$HOST:2375 DOCKER_TLS_VERIFY=1 ``` 執行`docker xxx`即默認連接Docker服務器進行操作。 ### 通過IDEA 的docker 插件進行連接 * 默認是tcp 的,你要改成https,端口你之前設置的什么端口就是什么端口,第十二步 * 選擇你放證書的那個文件夾 ### 連接到遠程docker 成功連接,連接不上的,查找如下原因 1、tcp連接沒換 2、端口不對 3、服務器防火墻沒放端口 4、云服務器防火墻沒放端口 5、證書沒弄好 ### 證書配置錯誤 ``` Can't load /home/ubuntu/.rnd into RNG 139826195939776:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/home/ubuntu/.rnd ``` 解決辦法 進入.rnd所在目錄 ``` cd /home/ubuntu/ sudo openssl rand -writerand .rnd ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看