安装SSH服务的目的是可以使用SSH客户端来远程连接到容器中进行操作,方便管理和维护。
以下是在Docker容器中安装SSH服务的具体步骤:
1. 创建Dockerfile文件
首先,在本地目录中创建Dockerfile文件,并输入以下内容:
FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y openssh-server \
&& mkdir /var/run/sshd \
&& echo 'root:password' | chpasswd \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
&& mkdir /root/.ssh
COPY authorized_keys /root/.ssh/authorized_keys
EXPOSE 22
解释一下:
- FROM:表示使用哪个镜像作为基础镜像。这里使用Ubuntu 18.04作为基础镜像。
- RUN:表示在镜像中执行的命令,这里运行了apt-get更新并安装了OpenSSH-server,并创建了/var/run/sshd目录。
- echo 'root:password' | chpasswd:表示设置root用户的密码为password。
- sed:表示用来修改/etc/ssh/sshd_config配置文件,将PermitRootLogin行的注释去掉,并将值改为yes。这样我们就可以使用root用户登录了。
- mkdir /root/.ssh:创建/root/.ssh目录用于存放SSH密钥。
- COPY:把本地目录中的authorized_keys文件复制到镜像的/root/.ssh目录中。
- EXPOSE:表示在Dockerfile中预先声明容器需要开放22端口以接受SSH客户端的连接。
2. 构建镜像
在Dockerfile所在目录中执行以下命令构建镜像:
docker build -t myubuntu:ssh .
这个命令会将当前目录下的Dockerfile构建成名为myubuntu:ssh的镜像。
3. 启动容器
运行以下命令启动容器:
docker run -itd -p 22:22 --name ubuntu_ssh myubuntu:ssh
此命令会创建一个名为ubuntu_ssh的容器,并且将容器的22端口映射到主机的22端口。
4. 连接到容器
可以使用SSH客户端连接到容器中,例如,使用以下命令连接:
ssh root@localhost -p 22
其中,localhost可以替换为主机的IP地址或域名,-p 22表示连接容器的22端口。
连接成功后,输入设置的密码即可登录容器。
示例1:
使用Dockerfile创建带有SSH服务的基础镜像
Dockerfile如下:
FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y openssh-server \
&& mkdir /var/run/sshd \
&& echo 'root:password' | chpasswd \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
&& mkdir /root/.ssh
COPY authorized_keys /root/.ssh/authorized_keys
EXPOSE 22
在Dockerfile所在目录执行以下命令构建镜像:
docker build -t myubuntu:ssh .
示例2:
使用Docker容器创建带有SSH服务的Ubuntu容器
运行以下命令:
docker run -itd -p 22:22 --name ubuntu_ssh myubuntu:ssh
可以通过以下方式连接到容器中:
ssh root@localhost -p 22
如果连接成功,就可以在容器中对Ubuntu进行管理和维护了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker容器里安装ssh的具体步骤 - Python技术站