티스토리 뷰
Docker에 Linux Container를 올린 후, SSH 접속 프로그램(Putty)을 통해 접속하는 방법을 알아보도록 하겠습니다.
리눅스 관련 이미지 받기
우선 Docker Hub에서 리눅스 OS와 관련된 이미지(CentOS / Ubuntu)를 다운 받아야 합니다. 저는 Ubuntu 이미지를 다운 받아 실행하였습니다.
# 명령어를 통해 ubuntu와 관련된 이미지들을 확인합니다.
docker search ubuntu
이 중, STARS가 가장 많고 OFFICIAL 항목이 [OK]인 이미지는 공식적인 이미지이며, 신뢰성 있는 이미지입니다.
그럼 다음과 같은 명령어를 통해 최상단의 ubuntu 이미지를 다운 받습니다.
# 'ubuntu' 이름을 가진 이미지를 다운받습니다.
docker pull ubuntu
그럼 이미지를 성공적으로 다운받았는지 확인해 봅시다.
#로컬에 저장된 이미지 목록 확인
docker images
리눅스 컨테이너 생성하기
이미지를 성공적으로 다운 받으셨다면, 이제 컨테이너를 생성해 보겠습니다. 다음과 같은 명령어를 통해 컨테이너를 생성합니다.
# docker run -itd --name {컨테이너 명} -p {외부 접속 포트 : 컨테이너 포트 포워딩 포트} {이미지 명}
docker run -id --name swenti-crawling -p 32777:22 ubuntu
- run: 컨테이너 생성 및 실행
- -d: 데몬 프로세스로 실행, 프로세스가 끝나도 유지. 즉, 백그라운드에서 실행
- -i: 사용자가 입/출력할 수 있는 상태
- -t: 가상 터미널 환경 활성화
- -p: 포트 설정. 32777:22의 경우 외부에서 docker의 32777 포트로 접속 시 해당 컨테이너의 22번 포트로 포트 포워딩
- --name: 컨테이너 이름 설정
컨테이너를 성공적으로 생성하였다면, 다음 명령어를 통해 잘 생성되었는지 확인해봅시다.
#전체 컨테이너 목록 확인
docker ps -a
제가 생성한 'swenti-crawling' 컨테이너가 잘 생성된 것을 볼 수 있습니다.
SSH 접속을 위한 작업
컨테이너를 생성했다고 바로 접속할 순 없습니다. 접속하는 서버의 포트를 개방해야 외부에서 Putty를 통해 컨테이너로 접속할 수 있습니다.
그럼, Teminal(MacOS) 혹은 CMD, Powershell(Windows) 에서 아래 명령어를 통해 포트를 개방해줍시다.
# MacOS 환경
sudo ufw allow 32777 (MacOS)
# Windows 환경
netsh advfirewall firewall add rule name"Allow Port 32777" dir=in action=allow protocol=TCP localport=32777
외부에서 접속하기 위한 작업이 끝났다면, 컨테이너 내부에도 외부 요청을 받아주기 위한 작업을 해주어야 합니다.
#bash 작업으로 컨테이너 내부에 접속하기
docker exec -it swenti-crawling bash
컨테이너에 성공적으로 접속하셨다면 다음 명령어로 모듈을 설치 합니다.
apt update && apt install net-tools vim openssh-server ufw
그리고, Putty를 통해 root 계정으로 접속하기 위해 vi 편집기를 통해 /etc/ssh/sshd_config 파일을 수정합니다.
vi /etc/ssh/sshd_config
PermitRootLogin 옵션에 대한 주석을 해제하고 값을 yes로 설정합니다.
이제 컨테이너 내부 작업도 끝났습니다.
다음 명령어를 통해 ssh를 시작해주겠습니다.
#ssh 서비스 시작 또는 재시작하기
service ssh start
service ssh restart
컨테이너 접속하기
이제 Putty를 켜서 다음과 같이 값을 지정한 후에 접속해봅시다.
- HostName: localhost
- Port: 32777
그럼 성공적으로 컨테이너에 접속할 수 있게 됩니다.
'Server > Docker' 카테고리의 다른 글
[Docker]이미지 압축 파일 저장 및 불러오기 (0) | 2024.09.10 |
---|---|
[Docker]Dockerfile과 Docker-compose.yml의 차이 (0) | 2024.09.10 |
[Docker]정적 IP Container 설정하기 (0) | 2024.09.02 |
[Docker]데이터 영속성 보장하기 (0) | 2024.09.02 |
[Docker]도커의 개념 및 핵심 (0) | 2024.09.02 |
- Total
- Today
- Yesterday