溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么用Dockerfile構(gòu)建SSH Server

發(fā)布時(shí)間:2021-12-13 17:46:39 來(lái)源:億速云 閱讀:375 作者:小新 欄目:云計(jì)算

這篇文章主要介紹了怎么用Dockerfile構(gòu)建SSH Server,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一. 相關(guān)的文件

1. 新建一個(gè)目錄和一個(gè) Dockerfile
mkdir y109-sshd
vim Dockerfile
2. Dockerfile 的內(nèi)容如下
# docker sshd
FROM ubuntu:14.04
MAINTAINER y109<y109@qq.com>

# 使用 163.com 的源
COPY sources.list.163.txt /etc/apt/sources.list
RUN apt-get -y update

# 設(shè)置 root 密碼
RUN echo 'root:bMg5kesfdsfesx9gD' | chpasswd

# 安裝 openssh-server
RUN apt-get -y install openssh-server
RUN mkdir /var/run/sshd

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
#
# ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# 添加公鑰(如果沒(méi)有公鑰可以省略)
RUN mkdir /root/.ssh
RUN echo 'ssh-rsa YOU_PUB_KEY' > /root/authorized_keys

# 容器啟動(dòng)后運(yùn)行的程序
CMD ["/usr/sbin/sshd", "-D"]

# 打開(kāi) 22 端口
EXPOSE 22

sources.list.163.txt 的內(nèi)容如下

deb http://mirrors.163.com/ubuntu/ precise main restricted
deb-src http://mirrors.163.com/ubuntu/ precise main restricted

deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted

deb http://mirrors.163.com/ubuntu/ precise universe
deb-src http://mirrors.163.com/ubuntu/ precise universe
deb http://mirrors.163.com/ubuntu/ precise-updates universe
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe

deb http://mirrors.163.com/ubuntu/ precise-security main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted
deb http://mirrors.163.com/ubuntu/ precise-security universe
deb-src http://mirrors.163.com/ubuntu/ precise-security universe

二.構(gòu)建 Image

使用 docker build 來(lái)生成鏡像
-t 參數(shù)是給這個(gè)鏡像的 TAG

sudo docker build -t 'y109/sshd' ./
Sending build context to Docker daemon 4.608 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04
 ---> 9cbaf023786c
Step 1 : MAINTAINER y109<y109@qq.com>
 ---> Using cache
 ---> 2256ab1cc931
Step 2 : COPY sources.list.163.txt /etc/apt/sources.list
 ---> Using cache
 ---> 65536ca26964
Step 3 : RUN apt-get -y update
 ---> Using cache
 ---> 60639e42f098
Step 4 : RUN echo 'root:pass123456' | chpasswd
 ---> Using cache
 ---> 8644dd20854f
Step 5 : RUN apt-get -y install openssh-server
 ---> Using cache
 ---> 98039327bca7
Step 6 : RUN mkdir /var/run/sshd
 ---> Using cache
 ---> 9bd3b3fc7828
Step 7 : RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
 ---> Using cache
 ---> d748cb9428a0
Step 8 : RUN echo "export VISIBLE=now" >> /etc/profile
 ---> Using cache
 ---> e975cd819243
Step 9 : RUN mkdir /root/.ssh
 ---> Using cache
 ---> e561acc07675
Step 10 : RUN echo 'ssh-rsa YOU_PUBLIC_KEY'
 ---> Using cache
 ---> 8f6882a72037
Step 11 : CMD ["/usr/sbin/sshd", "-D"]
 ---> Using cache
 ---> 48cbd2c4aa70
Step 12 : EXPOSE 22
 ---> Using cache
 ---> 3101a36f0084
Successfully built 3101a36f0084

使用 docker images 命令查看鏡像, 確認(rèn)鏡像構(gòu)建成功了

sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
y109/sshd           latest              3101a36f0084        22 minutes ago      226.1 MB
<none>              <none>              23f604e547b8        28 minutes ago      226.1 MB
<none>              <none>              50647a1fb746        36 minutes ago      226.1 MB
y
...

y109/sshd就是我們剛才構(gòu)建的鏡像

三.創(chuàng)建 Container

使用 docker run 來(lái)用鏡像創(chuàng)建一個(gè) Container

-d : Detached mode, 使 Container 在 background 模式運(yùn)行
-p : 把 22 端口映射到主機(jī)的網(wǎng)卡上, 格式: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
–name : 給 Container 指定一個(gè)名字, 一旦指定了名稱(chēng)這個(gè)名稱(chēng)就和這個(gè) Container 綁定了, 可以用 docker ps -a 列出來(lái)

sudo docker run -d -p 10922:22 --name y109-sshd y109/sshd
我用的外網(wǎng)端口是 10922, 可以根據(jù)需要修改, 下一步需要確認(rèn) Container 是否正常執(zhí)行了

sudo docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMES
fc37b83d343e        y109/sshd:latest    "/usr/sbin/sshd -D"   9 seconds ago       Up 9 seconds        0.0.0.0:10922->22/tcp   y109-sshd

看來(lái)執(zhí)行成功了, 連接試試看看

ssh root@localhost -p10922
The authenticity of host '[localhost]:10922 ([127.0.0.1]:10922)' can't be established.
ECDSA key fingerprint is 4d:48:5c:61:54:d6:8f:62:70:a2:0e:ab:b7:1a:cb:f7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:10922' (ECDSA) to the list of known hosts.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@80f07ad418fe:~#

已經(jīng)成功連接進(jìn)入 Container 了

四.關(guān)閉 Container

sudo docker stop fc3 fc3 是 Container Id fc37b83d343e 的縮寫(xiě), 只要能夠唯一標(biāo)識(shí)這個(gè) Container 就可以了。或者sudo docker stop y109-sshd

五.運(yùn)行 Container

sudo docker start y109-sshd

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么用Dockerfile構(gòu)建SSH Server”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI