之前ssh不能随着容器启动而启动于是乎就写个start.sh脚本来帮助启用

首先创建一个start.sh脚本来打开ssh服务

#!/bin/bash

# 启动 SSH 服务
/etc/init.d/ssh start

# 让容器保持运行
tail -f /dev/null

其次创建Dockerfile

# 使用基础镜像
FROM ubuntu:22.04

# 安装 SSH 服务
RUN apt-get update && \
    apt-get install -y openssh-server && \
    rm -rf /var/lib/apt/lists/* && \
    mkdir /var/run/sshd

# 设置一个简单的密码,你可以在实际应用中使用更安全的方式设置密码
RUN echo 'root:password' | chpasswd

# 允许 root 用户登录
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 配置 SSH 服务的监听端口
EXPOSE 22

# 拷贝启动脚本
COPY start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh

# 设置入口点
ENTRYPOINT /usr/local/bin/start.sh

再创建一个名为generate_docker_compose.bash生成docker-compose.yml的脚本

#!/bin/bash

# 设置要创建的容器数量
container_count=10

# 创建docker-compose.yml文件头部
echo "version: '3'" > docker-compose.yml
echo "services:" >> docker-compose.yml

# 生成容器配置
for ((i=1; i<=$container_count; i++)); do
    echo "  my_container_$i:" >> docker-compose.yml
    echo "    build:" >> docker-compose.yml
    echo "      context: ." >> docker-compose.yml
    echo "    ports:" >> docker-compose.yml
    echo "      - \"$((2000 + $i)):22\"" >> docker-compose.yml
done

echo "Done. docker-compose.yml file has been generated."

上述几个脚本放在同一个目录下面,然后通过命令在当前目录下查找Dockerfile生成镜像custom_ubuntu_ssh,命令为:

docker build -t custom_ubuntu_ssh .

运行bash generate_docker_compose.bash脚本,然后docker-compose up -d来开启这些容器就好

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐