基本概念

Follow me
根据debian镜像,创建一个sshd服务。本地使用的环境是windows11 docker desktop + WSL2。
docker commit 创建镜像
1
2
|
# pull debian image and enter bash
docker run -it debian bash
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# get debian version
root@c8edec741b80:/$ cat /etc/debian_version
# add a user and set password
root@c8edec741b80:/$ adduser fish
# replace debian apt source
root@c8edec741b80:/etc/apt/sources.list.d$ sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' debian.sources
# install and run openssh-server
root@c8edec741b80:~$ apt install openssh-server
root@c8edec741b80:~$ mkdir /run/sshd
root@c8edec741b80:~$ /usr/sbin/sshd -D &
[1] 144006 20:47:00
# cancel pam access // # session required pam_loginuid.so
root@c8edec741b80:~$ vim /etc/pam.d/sshd
# create run.sh
#! /bin/bash
/usr/sbin/sshd -D
root@c8edec741b80:~$ exit
|
创建镜像sshd:debian并执行,在终端ssh进行登录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
docker ps -a
c8edec741b80 debian "bash" 16 hours ago Exited (0) 16 hours ago great_galois
docker commit great_galois sshd:debian
docker images
REPOSITORY TAG
IMAGE ID CREATED SIZE
sshd debian
7caa99dd2f1d 16 hours ago 226MB
docker run -p 10022:22 -d sshd:debian /root/run.sh
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8eb23c28e68d sshd:debian "/root/run.sh" 7 seconds ago Up 6 seconds 0.0.0.0:10022->22/tcp stoic_carver
ssh fish@localhost -p 10022
fish@localhost's password:
Linux 8eb23c28e68d 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
fish@8eb23c28e68d:~$
|
Dockerfile创建镜像
在新文件夹下,新建如下文件
1
2
3
|
~/docker-practice/sshd_debian
$ ls
Dockerfile authorized_keys run.sh
|
Dockerfile内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
FROM debian
MAINTAINER lclei (lichanglei@ustc,edu)
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
RUN apt update
RUN apt install -y openssh-server
RUN mkdir -p /run/sshd
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE 22
CMD ["/run.sh"]
|
authorized_keys内容则是宿主机使用ssh生成的~/.ssh/id_rsa.pub
的内容。
run.sh
1
2
3
|
#! /bin/bash
/usr/sbin/sshd -D
|
准备工作已完成,使用docker创建image,在之前的文件夹sshd_debian下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
$ docker build -t sshd:dockerfile .
[+] Building 0.1s (14/14) FINISHED
$ docker run -d -p 10122:22 sshd:dockerfile
ce272ad7d685610eede4a7f4fe618e2303da4c9e645df392b0e5dba001c2b9b7
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce272ad7d685 sshd:dockerfile "/run.sh" 15 minutes ago Up 15 minutes 0.0.0.0:10122->22/tcp hungry_saha
8eb23c28e68d sshd:debian "/root/run.sh" 2 hours ago Up 2 hours 0.0.0.0:10022->22/tcp stoic_carver
$ ssh root@localhost -p 10122
Linux ce272ad7d685 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@ce272ad7d685:~#
|
与docker commit创建的镜像相同。但是使用Dockerfile明显更方便分发部署。