인프라

docker gitlab-runner 컨테이너에서 apache2 컨테이너로 ssh 접속 방법

소행성왕자 2023. 2. 8. 17:07

gitlab-runner 컨테이너에서 apache2 컨테이너로 ssh 접속하는 방법을 알아보도록 하겠습니다.

apache2 는 docker-compose 로 설치되어 있고

version: "3"

services:
  apache2:
    build: ./Project/apache2
    restart: always
    container_name: apache2
    links:
      - mysql
    ports:
      - "9080:80"
      - "9022:22"
    volumes:
      - ./Project/apache2/html/:/var/www/html/
      - ./Project/apache2/conf/httpd.conf/:/usr/local/apache2/conf/httpd.conf
    networks:
      - default
      - apm_net

  mysql:
    image: mysql:8.0
    restart: always
    container_name: mysql
    volumes:
      - ./Project/mysql/data/:/var/lib/mysql/
      - ./Project/mysql/log/:/var/log/mysql/
    ports:
      - "3306:3306"
    environment:
      SERVICE_TAG: dev
      SERVICE_NAME: mysql
    env_file:
      - ./env/.mysql.env
    networks:
      - default
      - apm_net


networks:
  apm_net:
    driver: bridge

보시면 networks 를 apm_net 을 사용하고 있습니다.

docker network 조회를 해보겠습니다.

docker network ls
[cofor@localhost apm_each]$ docker network ls
NETWORK ID     NAME               DRIVER    SCOPE
4a98a9d0ada5   apm_each_apm_net   bridge    local
8c107d01909b   apm_each_default   bridge    local
a41874ac9738   bridge             bridge    local
dcbca47f6f39   host               host      local
4c102bcb71e0   none               null      local

NAME 에보면 apm_each_apm_net 사용하는걸 볼수 있습니다.

gitlab-runner 의 network 를 apm_each_apm_net 와 같이 사용해야 ssh 접속할수 있습니다.

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --network apm_each_apm_net \
  gitlab/gitlab-runner:latest

apache2 컨테이너로 ssh 접속

ssh root@172.23.0.3
ssh root@apache2    # 컨테이너 이름

컨테이너 ip 확인하는 법

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apache2

접속하면 root 암호를 물어봅니다.

공개키를 이용하여 암호 없이 접속해보겠습니다.

gitlab-runner 컨테이너에 접속합니다.

docker exec -it gitlab-runner bash
cd ~

whoami 실행후 계정이 gitlab-runner 인지 확인해봐야 합니다.

su - gitlab-runner
gitlab-runner@1416567744ff:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Y72tOcAcke9aN0rNqauUA3ASfH12x6C0HHw3eYXjLb8 root@1416567744ff
The key's randomart image is:
+---[RSA 3072]----+
|   ..  . oo .o oo|
|    ... +o++o O .|
|    o..  =+o + = |
|     +  ...   o .|
|      .oSo.o . o |
|       o+o+o*   .|
|        +=.+..  .|
|       ...+o   E |
|        ..+o     |
+----[SHA256]-----+

그냥 엔터 눌러줍니다. 그럼 .ssh 디렉토리 안에 공개키/개인키가 생성됩니다.

공개키를 apache2 컨테이너에 복사합니다.

ssh-copy-id root@172.25.0.3
ssh-copy-id root@apache2     #컨테이너 이름

접속되는지 확인해봅니다.

root@1416567744ff:~# ssh root@172.25.0.3
Last login: Wed Feb  8 07:45:29 2023 from 172.25.0.4
root@fabe0096c9b4:~#

비밀번호 물어보지 않고 잘 접속 됩니다.