单服务器多个docker容器之间免密登录

本文详细介绍如何在单个服务器上的多个Docker容器之间配置免密登录,包括使用Ubuntu镜像的基础设置,安装必要组件,修改SSH配置,生成密钥,以及通过Dockerfile实现自动化部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单个服务器中多个容器之间配置免密登录

普通容器做法

  1. 以ubuntu:16.04的镜像作为基础

    docker pull ubuntu:16.04
    
  2. 启动容器
    创建两个容器,分别命名为ub1和ub2

    分别在两个终端下执行该命令

    docker run -it --name ub1 you_IMAGE_ID;
    docker run -it --name ub2 you_IMAGE_ID;
    
  3. 安装必要组件

    # 更新软件源,默认是没有的
    apt-get update
    
    # 安装必要组件
    apt -y install vim gcc ssh
    
  4. 修改ssh配置

    vim /etc/ssh/sshd_config
    
    # 修改如下配置项内容,确保与下面的内容一样
    # Authentication:
    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes
    
    RSAAuthentication yes
    PubkeyAuthentication yes
    
    # 重启ssh服务
    service ssh restart
    
  5. 更新密码
    docker容器初始没有设置密码,我们先设置一个密码

    paswd
    
    # 显示
    Enter new UNIX password: 
    Retype new UNIX password:
    
    # 输入两遍想要的密码就可以了
    
  6. 生成密钥
    该步骤每台机器都需要做

    ssh-keygen -t rsa
    
    # 进入~/.ssh目录
    cd ~/.ssh
    
    # 生成两个文件
    id_rsa  id_rsa.pub
    
    # 将id_rsa.pub追加到authorized_keys
    cat id_rsa.pub >> authorized_keys
    
  7. 配置免密登录
    两台机器均需要做

    cd ~/.ssh
    scp id_rsa.pub root@另一台机器的IP:~/.ssh/lin.pub
    

    此时,会提示你是否确认,输入yes,再输入你刚刚设置的密码即可

    进入另一台主机

    cd ~/.ssh
    cat lin.pub >> authorized_keys
    

    在另一台机器上重复这一遍步骤即可

Dockerfile做法

该方法请系统学习或详细了解docker的人员使用

dockerfile文件

FROM ubuntu:14.04
MAINTAINER yjt xxx
RUN sudo apt-get update && \
sudo apt-get install -y net-tools openssh-server psmisc iproute wget vim
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && \
sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no /' /etc/ssh/sshd_config && \
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes /' /etc/ssh/sshd_config && \
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config && \
echo "root:1234" | chpasswd
CMD [ "sh", "-c", "sudo service ssh start; bash"]

接下来,命令行执行:

# docker build -t ubuntu-ssh .

通过刚刚生成的镜像启动两台容器:

#  docker run -it --rm --name=yjt1 --net mynetwork --ip 172.20.1.1 --privileged ubuntu-ssh

# docker run -it --rm --name=yjt2 --net mynetwork --ip 172.20.1.2 --privileged ubuntu-ssh

进入到某一台容器执行 ssh yjt1 或者ssh yjt2 如果能成功的免密登录,那说明OK

### 如何在 AutoDL 服务器上配置使用 Docker 容器 #### 准备工作 为了能够在 AutoDL 服务器上成功运行 Docker 容器,首先需要确认服务器已经具备网络连接能力或者通过离线方式获取了必要的安装文件。如果服务器无法直接访问互联网,则可以采用离线下载的方式完成 Docker 的安装[^2]。 #### 安装 Docker 对于能够联网的 AutoDL 服务器,可以通过以下命令快速安装 Docker: ```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` 此命令会自动检测操作系统并安装适合版本的 Docker 软件包[^1]。如果服务器处于隔离环境中,需提前从其他设备下载好对应的 Docker 离线安装包,并将其传输至目标机器后再进行手动安装。 #### 初始化 Docker Compose (可选) 当涉及到复杂的服务编排时,推荐使用 `docker-compose` 工具来简化多容器应用管理流程[^3]。具体操作如下所示: 1. 下载最新版 compose 文件; ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 2. 授予执行权限给该二进制程序; ```bash sudo chmod +x /usr/local/bin/docker-compose ``` 3. 测试是否正常加载服务; ```bash docker-compose version ``` #### 配置 Hadoop 用户环境(针对大数据场景)[^4] 由于某些特定框架比如 Hadoop 不支持以 root 权限启动节点进程,因此有必要新建专用账户用于后续开发测试活动。以下是创建过程概览: - 添加新用户组成员关系定义; ```bash useradd -m hadoop -s /bin/bash && adduser hadoop sudo ``` - 修改初始登陆口令字符串; ```bash echo 'hadoop:<your_password>' | chpasswd ``` - 开启验证机制以便于跨主机通信顺畅开展业务逻辑处理任务。 ```bash ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys restorecon -RvF ~/.ssh ``` 至此为止,整个准备工作宣告完毕! --- ### 实际案例演示——构建 LNMP 应用栈 假设现在有一个需求是要基于上述提到的技术手段,在一台全新的 AutoDL 实例之上迅速建立起一套完整的 Web 运营平台架构(即LNMP组合)。那么按照惯例先编写一份描述清晰明了的 YAML 格式的配置文档内容大致如下所列: ```yaml version: '3' services: nginx: image: nginx:latest ports: - "80:80" volumes: - ./html:/usr/share/nginx/html depends_on: - php mysql: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: examplepassword volumes: - db_data:/var/lib/mysql php: build: . volumes: - ./:/var/www/html links: - mysql volumes: db_data: ``` 保存为 `docker-compose.yml` 后切换目录到对应位置再依次敲入下面两条指令即可让一切变得井然有序起来啦~ ```bash docker-compose up -d docker ps # 查看当前正在运行中的实例列表情况 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值