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

教你如何通過?SSH?連接到?Docker?容器

 更新時間:2022年01月21日 14:35:17   作者:mikes?zhang  
如何通過?SSH?連接到正在運行的容器,以及為什么在這樣做之前應(yīng)該三思而后行,對如何通過SSH連接到Docker容器相關(guān)知識感興趣的朋友跟隨小編一起看看吧

在這里插入圖片描述

SSH 是系統(tǒng)管理員工具箱中最常用的命令之一,但它并不常見于 Docker。以下是如何通過 SSH 連接到正在運行的容器,以及為什么在這樣做之前應(yīng)該三思而后行。

你應(yīng)該在 Docker 容器中使用 SSH 嗎?

SSH 進入 Docker 容器通常是一種不好的做法,應(yīng)該避免。docker exec使用命令在容器中獲取 shell幾乎總是更好。

Docker 新手可能會嘗試使用 SSH 來更新容器內(nèi)的文件。容器應(yīng)該是一次性的,所以它們在創(chuàng)建后應(yīng)該被視為不可變的,除了存儲在卷中的持久數(shù)據(jù)。編輯源代碼時創(chuàng)建新圖像并重新啟動容器。

除了多步驟配置過程之外,在 Docker 映像中安裝 SSH 會添加幾個依賴包并暴露另一個潛在的攻擊向量。在具有多個活動容器的系統(tǒng)上,您將運行多個獨立的 SSH 進程,并且必須記住每個容器的正確端口。

無需將 SSH 添加到單個容器,只需在運行 Docker 的物理主機上安裝一次即可。使用 SSH 連接到您的主機,然后運行docker exec -it my-container bash以訪問各個容器。
雖然docker exec是首選方法,但仍然存在 SSH 可能有用的場景。您可以將其作為權(quán)宜之計引入,以與遺留部署系統(tǒng)集成。它也可能被一些 IDE 和構(gòu)建工具用于在開發(fā)期間提供實時重新加載功能。

在 Docker 容器中安裝 SSH 服務(wù)器

大多數(shù)流行的 Docker 基礎(chǔ)鏡像都被有意簡化了。您需要自己添加 OpenSSH 服務(wù)器,即使是從流行的操作系統(tǒng)發(fā)行版派生的圖像。

Dockerfile這是基于 Debian 的映像的示例:

RUN apt-get update && apt-get install -y openssh-server
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

ENTRYPOINT service ssh start && bash

SSH 配置已修改,因此您可以root以 Docker 容器中的默認用戶身份登錄。為了提高安全性,請改為設(shè)置專用用戶帳戶:

RUN useradd -m -s /bin/bash sshuser

這將創(chuàng)建一個名為主sshuser目錄 ( -m)的新用戶。該-s開關(guān)將用戶的默認登錄 shell 設(shè)置為 Bash。

使用ENTRYPOINT確保 SSH 服務(wù)總是在容器啟動時啟動。然后將執(zhí)行交給 Bash 作為容器的前臺進程。您可以將其替換為您的應(yīng)用程序的二進制文件。

配置身份驗證

接下來,您需要設(shè)置身份驗證系統(tǒng)。您可以為您的sshuser帳戶分配一個密碼并使用該密碼登錄:

RUN echo "sshuser:Changeme" | changepasswd

更安全的方法是設(shè)置 SSH 密鑰身份驗證。您需要在客戶端計算機上創(chuàng)建一個密鑰對,然后將公共部分復(fù)制到容器中。這樣,SSH 守護程序可以在您連接時驗證您機器的身份。

更改您為您的用戶Dockerfile設(shè)置.ssh配置文件夾。使用docker cp命令或COPY. Dockerfile在后一種情況下,密鑰將被烘焙到圖像中,任何有權(quán)訪問的人都可以看到。

COPY id_rsa.pub /home/sshuser/.ssh/authorized_keys
RUN chown -R sshuser:sshuser /home/sshuser/.ssh
RUN chmod 600 /home/sshuser/.ssh/authorized_keys

這一系列命令使用工作目錄中的公鑰創(chuàng)建 SSHauthorized_keys文件。id_rsa.pub調(diào)整文件系統(tǒng)權(quán)限以匹配 SSH 的要求。

連接到容器

現(xiàn)在您已準備好連接到您的容器。使用綁定到主機的端口 22 運行容器:

docker run -p 22:22 my-image:latest

運行ssh sshuser@example.com會給你一個容器內(nèi)的外殼。

如果要從托管 Docker 容器的機器進行連接,則可以跳過綁定端口。用于docker inspect獲取容器的 IP 地址,然后將其傳遞給 SSH 連接命令。

docker inspect <id-or-name> | grep 'IPAddress' | head -n 1

使用您機器上的 SSH 客戶端連接到容器:

ssh root@172.17.0.1
# OR
ssh sshuser@172.17.0.1

如果您在主機上運行單獨的 SSH 服務(wù)器,或者您有多個需要端口 22 的容器,則需要使用備用端口。以下是當 SSH 綁定到端口 2220 時啟動連接的方法:

cker run -p 22:2220 my-image:latest

ssh root@172.17.0.1 -p 2220

使用 SSH Config 設(shè)置容器快捷方式

您可以操作 SSH 配置文件以簡化與各個容器的連接。編輯~/.ssh/config以定義具有預(yù)配置端口的速記主機:

Host my-container
    HostName 172.17.0.1
    Port 2220
    User sshuser

現(xiàn)在你可以ssh my-container直接跑到你的容器中了。這使得在不記住容器 IP 和端口的情況下處理多個連接變得更容易。

改用 Dockssh 簡化容器管理

Dockssh項目通過提供另一個讓您運行的守護進程更進一步ssh my-container@example.com,無需任何手動 SSH 配置。您不需要在容器中安裝 SSH 服務(wù)器;Dockssh 自動代理 SSH 連接并運行正確的docker exec命令。

你必須先安裝 Redis 來存儲 Dockssh 的配置數(shù)據(jù):

sudo apt install redis

接下來,通過添加帶有容器名稱和 SSH 連接密碼的 Redis 記錄來定義要公開的容器:

redis-cli set dockssh:my-container:pass "container-password-here"

然后下載 Dockssh:

sudo curl https://github.com/alash3al/dockssh/releases/download/v1.1.0/dockssh_linux_amd64 -O /usr/local/bin/dockssh
sudo chmod +x /usr/local/bin/dockssh
sudo ufw allow 22022

# Start DockSSH server
dockssh

現(xiàn)在您可以連接到您的容器:

ssh my-container@example.com -p 22022

Dockssh 默認監(jiān)聽 22022 端口。打開防火墻以允許使用該端口的傳入連接。

連接時,系統(tǒng)會提示您輸入容器的密碼。這是container-password-here在我們上面的 Redis 記錄中設(shè)置的。

使用 Dockssh 可以輕松地通過 SSH 連接到大量 Docker 容器。當您定期從遠程主機連接到您的容器時,這種方法是理想的,因為它將兩步“SSH then docker exec”序列簡化為一個令人難忘的命令。

將 Dockssh 注冊為系統(tǒng)服務(wù)以供長期使用:

sudo nano /etc/systemd/system/dockssh.service
[Unit]
Description=Dockssh service
After=network.target

[Service]
type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/local/bin/dockssh

[Install]
WantedBy=multi-user.target

使用啟用服務(wù)systemctl:

sudo systemctl enable dockssh.service
sudo systemctl start dockssh

Dockssh 現(xiàn)在將在您的系統(tǒng)啟動時自動啟動。

概括

將 SSH 與 Docker 容器相結(jié)合被廣泛認為是一種反模式,但它仍然在開發(fā)、測試和遺留環(huán)境中使用。如果沒有其他選擇,您可以將 SSH 服務(wù)器添加到容器中,復(fù)制公鑰,然后通過容器的 IP 或主機端口綁定進行連接。

想要遠程管理大量 Docker 容器的系統(tǒng)管理員可以試試 Dockssh。ssh它允許您通過無縫的幕后映射來運行熟悉的命令docker exec,使用未修改的圖像為您提供兩全其美的體驗。

到此這篇關(guān)于通過 SSH 連接到 Docker 容器的文章就介紹到這了,更多相關(guān)SSH 連接到 Docker 容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker鏡像發(fā)布到Docker?Hub的實現(xiàn)方法

    Docker鏡像發(fā)布到Docker?Hub的實現(xiàn)方法

    本文主要介紹了Docker鏡像發(fā)布到Docker?Hub的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • docker imageid 和 digest區(qū)別解析

    docker imageid 和 digest區(qū)別解析

    在Docker中,image ID和digest是兩個不同的標識符,用于唯一標識和引用Docker鏡像的不同方面,這篇文章主要介紹了docker imageid 和 digest區(qū)別,需要的朋友可以參考下
    2023-06-06
  • 基于docker 搭建Prometheus+Grafana的過程詳解

    基于docker 搭建Prometheus+Grafana的過程詳解

    這篇文章主要介紹了基于docker 搭建Prometheus+Grafana的過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • docker配置獨立橋接IP的方法

    docker配置獨立橋接IP的方法

    這篇文章主要介紹了docker配置獨立橋接IP的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker ps命令的具體使用

    Docker ps命令的具體使用

    docker ps?命令可以用來列出?Docker容器?相關(guān)信息,本文就來介紹一下Docker ps命令的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Docker Nginx容器制作部署實現(xiàn)方法

    Docker Nginx容器制作部署實現(xiàn)方法

    這篇文章主要介紹了Docker Nginx容器制作部署實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 使用Maven打包構(gòu)建Docker鏡像并推送到倉庫

    使用Maven打包構(gòu)建Docker鏡像并推送到倉庫

    這篇文章主要介紹了使用Maven打包構(gòu)建Docker鏡像并推送到倉庫問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解docker搭建redis集群的環(huán)境搭建

    詳解docker搭建redis集群的環(huán)境搭建

    本篇文章主要介紹了詳解docker搭建redis集群的環(huán)境搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Docker部署Kafka以及Spring Kafka實現(xiàn)

    Docker部署Kafka以及Spring Kafka實現(xiàn)

    這篇文章主要介紹了Docker部署Kafka以及Spring Kafka實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • docker安裝elastic?search和kibana的實現(xiàn)

    docker安裝elastic?search和kibana的實現(xiàn)

    本文主要介紹了docker安裝elastic?search和kibana的實現(xiàn),,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

布尔津县| 延长县| 乌鲁木齐市| 大荔县| 南京市| 新昌县| 定州市| 三江| 浠水县| 开封县| 恭城| 基隆市| 社会| 烟台市| 浦县| 白朗县| 合阳县| 壤塘县| 江安县| 页游| 延边| 舒城县| 通化县| 台南县| 武川县| 泰州市| 察哈| 城口县| 永胜县| 清苑县| 林芝县| 涪陵区| 广元市| 越西县| 邹平县| 东山县| 青铜峡市| 外汇| 炎陵县| 周宁县| 邮箱|