## 우분투이미지로부터 시작한다.
docker run --name tempContainer -it ubuntu /bin/bash
## ssh config
apt update
apt install openssh-server openssh-client -y
## ssh key 설정
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
## add ip to hostname
echo "[container 1의 정적 ip] container1" >> /etc/hosts
# ex)echo "172.20.255.10 container1" >> /etc/hosts
echo "[container 2의 정적 ip] container2" >> /etc/hosts
# ex)echo "172.20.255.101 container2" >> /etc/hosts
정적 ip는 컨테이너 생성 시에 인자로 추가하거나, 후술할 도커 컴포즈에서 지정할 수 있다.
exit
docker commit tempContainer ssh_base
version: "3"
services:
namenode:
image: ssh_base # 앞서 도커 커밋으로 만든 이미지를 사용한다.
container_name: container1
hostname: container1
command: bash -c "service ssh start && tail -f /dev/null" # 컨테이너가 바로 종료되지 않게 해준다.
networks:
my-net:
ipv4_address: [원하는 고정 IP 주소1] # ex) 172.20.255.10
workernode:
image: ssh_base
container_name: container2
hostname: container2
command: bash -c "service ssh start && tail -f /dev/null"
networks:
my-net:
ipv4_address: [원하는 고정 IP 주소2] # ex) 172.20.255.101
networks:
my-net:
ipam:
driver: default
config:
- subnet: [원하는 고정 IP 서브넷] # ex) 172.20.0.0/16
# 도커 컴포즈를 작성한 디렉토리에서
docker-compose -f dockercompose.yml up
## host 터미널
docker exec -it container1 /bin/bash
## -> container bash shell
## ssh 연결 확인
ssh root@container2
# yes # 첫 연결시에만 입력해주면 된다.
## -> container2 bash shell
hostname
#contaienr2 # 성공!
# 나가려면 exit을 입력
## host 터미널
docker exec -it container21 /bin/bash
## -> container bash shell
## ssh 연결 확인
ssh root@container1
# yes # 첫 연결시에만 입력해주면 된다.
## -> container2 bash shell
hostname
#contaienr1 # 성공!
# 나가려면 exit을 입력