欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你如何通過(guò)?SSH?連接到?Docker?容器

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

在這里插入圖片描述

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

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

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

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

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

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

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

大多數(shù)流行的 Docker 基礎(chǔ)鏡像都被有意簡(jiǎn)化了。您需要自己添加 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 容器中的默認(rèn)用戶身份登錄。為了提高安全性,請(qǐng)改為設(shè)置專用用戶帳戶:

RUN useradd -m -s /bin/bash sshuser

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

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

配置身份驗(yàn)證

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

RUN echo "sshuser:Changeme" | changepasswd

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

更改您為您的用戶Dockerfile設(shè)置.ssh配置文件夾。使用docker cp命令或COPY. Dockerfile在后一種情況下,密鑰將被烘焙到圖像中,任何有權(quán)訪問(wè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)在您已準(zhǔn)備好連接到您的容器。使用綁定到主機(jī)的端口 22 運(yùn)行容器:

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

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

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

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

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

ssh root@172.17.0.1
# OR
ssh sshuser@172.17.0.1

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

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

ssh root@172.17.0.1 -p 2220

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

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

Host my-container
    HostName 172.17.0.1
    Port 2220
    User sshuser

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

改用 Dockssh 簡(jiǎn)化容器管理

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

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

sudo apt install redis

接下來(lái),通過(guò)添加帶有容器名稱和 SSH 連接密碼的 Redis 記錄來(lái)定義要公開(kāi)的容器:

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 默認(rèn)監(jiān)聽(tīng) 22022 端口。打開(kāi)防火墻以允許使用該端口的傳入連接。

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

使用 Dockssh 可以輕松地通過(guò) SSH 連接到大量 Docker 容器。當(dāng)您定期從遠(yuǎn)程主機(jī)連接到您的容器時(shí),這種方法是理想的,因?yàn)樗鼘刹?ldquo;SSH then docker exec”序列簡(jiǎn)化為一個(gè)令人難忘的命令。

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

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)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。

概括

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

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

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

相關(guān)文章

  • 使用Docker啟動(dòng)mysql成功后,使用docker ps查不到的問(wèn)題及解決

    使用Docker啟動(dòng)mysql成功后,使用docker ps查不到的問(wèn)題及解決

    這篇文章主要介紹了使用Docker啟動(dòng)mysql成功后,使用docker ps查不到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    Docker 鏡像是 Docker 容器的基礎(chǔ),鏡像包含了應(yīng)用程序所需的所有文件和依賴,Docker-Compose 默認(rèn)不會(huì)自動(dòng)拉取最新的鏡像版本,這可能會(huì)導(dǎo)致使用過(guò)時(shí)的鏡像,從而錯(cuò)過(guò)重要的更新,為了確保 Docker-Compose 始終使用最新的鏡像,我們可以采用多種方法,以下將詳細(xì)介紹這些方法
    2024-08-08
  • Docker搭建Redis5.0并掛載數(shù)據(jù)

    Docker搭建Redis5.0并掛載數(shù)據(jù)

    本文主要介紹了Docker搭建Redis5.0并掛載數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 使用docker?compose部署emqx集群的示例

    使用docker?compose部署emqx集群的示例

    這篇文章主要介紹了使用docker compose部署emqx集群,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 如何使用docker部署Dashdot工具箱

    如何使用docker部署Dashdot工具箱

    dashdot是一個(gè)簡(jiǎn)潔清晰的服務(wù)器數(shù)據(jù)儀表板,基于React實(shí)現(xiàn) ,主要是顯示操作系統(tǒng)、進(jìn)程、存儲(chǔ)、內(nèi)存、網(wǎng)絡(luò)這五個(gè)的數(shù)據(jù),這篇文章主要介紹了如何使用docker部署Dashdot工具箱,需要的朋友可以參考下
    2024-02-02
  • Docker搭建Portainer可視化界面步驟詳解

    Docker搭建Portainer可視化界面步驟詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于Docker搭建Portainer可視化界面的實(shí)例操作方法,需要的朋友們參考下。
    2019-10-10
  • Docker?自定義Dev環(huán)境并部署php

    Docker?自定義Dev環(huán)境并部署php

    這篇文章主要介紹了Docker?自定義Dev環(huán)境(部署PHP),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 基于Docker鏡像部署go項(xiàng)目的方法步驟

    基于Docker鏡像部署go項(xiàng)目的方法步驟

    這篇文章主要介紹了基于Docker鏡像部署go項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Docker 常用命令整理并介紹

    Docker 常用命令整理并介紹

    這篇文章主要介紹了Docker 常用命令的知識(shí),這里介紹了Docker 的操作容器,Image,網(wǎng)絡(luò)操作,等內(nèi)容,有需要的小伙伴可以參考下
    2016-10-10
  • docker啟動(dòng)鏡像失敗后如何用日志logs查找失敗原因及解決

    docker啟動(dòng)鏡像失敗后如何用日志logs查找失敗原因及解決

    在使用docker的時(shí)候,在某些未知的情況下可能啟動(dòng)了容器,但是過(guò)了沒(méi)幾秒容器自動(dòng)退出了,這個(gè)時(shí)候如何排查問(wèn)題呢?下面這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)鏡像失敗后如何用日志logs查找失敗原因及解決的相關(guān)資料,需要的朋友可以參考下
    2023-05-05

最新評(píng)論