docker - 容器里安装ssh

docker安装ssh

通过命令行安装

  1. pull ubuntu镜像
    docker pull ubuntu:latest
  2. 启动并进入bash

    docker run -it -d ubuntu:lastest /bin/bash
    # 查看刚刚运行容器的id
    docker ps
    # 在容器中执行bash命令
    docker exec -it id /bin/bash
  3. 安装openssh-server并启动

    apt-get update
    apt-get install openssh-server
    # 启动之前需手动创建/var/run/sshd,不然启动sshd的时候会报错
    mkdir -p /var/run/sshd
    # sshd以守护进程运行
    /usr/sbin/sshd -D &
    # 安装netstat,查看sshd是否监听22端口
    apt-get install net-tools
    netstat -apn | grep ssh

    如果已经监听22端口,说明sshd服务启动成功

  4. ssh登陆

    # 生成ssh key
    ssh-keygen -t rsa
    # 修改sshd-config允许root登陆
    sed -i 's+PermitRootLogin prohibit-password+PermitRootLogin yes' /etc/ssh/sshd-config

    修改完sshd-config之后需要重启sshd服务

    // 找到pid
    ps -aux | grep ssh
    kill -9 pid
    /usr/sbin/sshd -D &

    查看容器ip

    ifconfig

    在主机上进行登陆

    ssh root@ip

    就可以登录成功了,但是注意这里是docker容器的宿主机才能登陆成功,如果需要其他机器登陆,可以在启动docker的时候进行端口映射

    // 11122宿主机端口,22为容器端口
    docker run -it -p 11122:22 
    // 在其他机器上可以使用以下命令登陆,假设宿主机ip为192.168.1.101
    ssh -p 11122 root@192.168.1.101
  5. 保存容器

    // 把id为id的容器保存
    docker commit id sshd:ubuntu
    // 停止容器
    docker stop id

通过dockerfile

# 以最新的Ubuntu镜像为模板
FROM ubuntu:latest

// 将本目录下的sources.list作为容器的一个文件
ADD sources.list /root/sources.list
// 使用阿里Ubuntu源,更新快
RUN cp /root/sources.list  /etc/apt/sources.list.d/aliyun.list

RUN apt-get update
RUN apt-get install -y openssh-server
RUN apt-get install -y net-tools
RUN apt-get install -y vim
RUN mkdir -p /var/run/sshd
RUN mkdir -p mkdir/root/.ssh/
// 修改root密码,便于远程登录
RUN echo root:123456 | chpasswd
// 将key生成在指定文件内
RUN ssh-keygen -q -t rsa -b 2048  -f /etc/ssh/ssh_host_rsa_key -P '' -N ''
// 配置ssh可以使用root登陆
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

// 开放22端口
EXPOSE 22

CMD /usr/sbin/sshd -D &

根据Dockerfile build镜像

docker build -t nginx:ubuntu .
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker Compose中安装GitLab并启用SSL,您可以按照以下步骤操作: 1. 首先,创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: gitlab: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'your-domain.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://your-domain.com' letsencrypt['enable'] = true ports: - '80:80' - '443:443' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' ``` 确保将`your-domain.com`替换为您的域名。 2. 创建一个名为`docker-compose.override.yml`的文件,并添加以下内容: ```yaml version: '3' services: gitlab: ports: - '22:22' volumes: - '/srv/gitlab/ssl:/etc/gitlab/ssl' ``` 这将使GitLab容器SSH端口可访问,并将SSL证书存储在`/srv/gitlab/ssl`目录中。 3. 创建一个名为`docker-compose.env`的文件,并添加以下内容: ``` GITLAB_OMNIBUS_CONFIG=letsencrypt['contact_emails'] = ['[email protected]'] ``` 确保将`[email protected]`替换为您的电子邮件地址。 4. 创建必要的目录结构: ```bash mkdir -p /srv/gitlab/config mkdir -p /srv/gitlab/logs mkdir -p /srv/gitlab/data mkdir -p /srv/gitlab/ssl ``` 5. 运行以下命令启动GitLab容器: ```bash docker-compose up -d ``` 现在,GitLab将在您的服务器上运行,并通过SSL保护。 请注意,这只是一个基本的配置示例,您可能需要根据您的特定需求进行调整。确保正确配置DNS和SSL证书以匹配您的域名,并根据需要进行其他更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值