您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么用Dockerfile構(gòu)建SSH Server,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
mkdir y109-sshd vim Dockerfile
# 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
使用 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)建的鏡像
使用 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 了
sudo docker stop fc3
fc3 是 Container Id fc37b83d343e 的縮寫(xiě), 只要能夠唯一標(biāo)識(shí)這個(gè) Container 就可以了。或者sudo docker stop y109-sshd
sudo docker start y109-sshd
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么用Dockerfile構(gòu)建SSH Server”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(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)容。