본문 바로가기

백엔드 개발/Docker

[docker machine] docker machine으로 lightsail instance 제어하기( aka 삽질기)

반응형

현재 개인 프로젝트에서 docker container를 aws lightsail에 띄워서 서버 구성을 하고 있다.

RDBMS, Redis, application web server(using spring boot), Nginx(Image Storage) 이런식으로 구성되어 있는데.

사용하는 컨테이너들이 5개가 되다 보니 변경사항이 생길때 마다 Mobaxterm으로 접속해서 커맨드를 치는게 슬슬 귀찮아졌다.

그리고 젠킨스를 이용해서 CI Server를 구축하려고 하는데 Jenkins는 다른 Instance를 띄워서 구성하려고 한다.

그러면 내가 관리해야하는 Docker Host가 하나 더 늘어나는 셈이라 관리하기 힘들어 질 것같아서.

Docker Host들을 효과적으로 관리할 수 있는 Docker Machine을 우선적으로 도입하고 Docker Swarm도 함께 사용하려고 계획 중이다.


Docker-Machine은 Docker에서 공식적으로 지원하는 도구로 다양한 환경을 지원한다.

관련된 설명들은 아래 자료들을 참고하면 될 것같다.


도커 공식 문서


소용환님의 연재글(강추)


1. 쉽게 될거라는 착각..

 항상 처음에는 쉽게 될거라고 생각한다..

그래서 lightsail = aws = ec2 라는 생각을 해서 docker machine의 drive를 amazionec2 설정으로 주어서 lightsail과 연결한다고 생각했다.




이 커맨드를 치기위해서 aws-cli를 설치하고 aws configuration을 했다.

이렇게 간단하게 되는 것을 보고 엄청 감동했었는데..

아니었다. 이것은 새로운 ec2 Instance를 생성하는 명령어였다.

이 명령어는 lightsail과 아무 관련이 없다.


2. generic 옵션을 사용하자!


기존에 존재하는 환경과 연결하기 위해서는 (SSH로 접속할 수 있는 Host의 경우) generic 옵션으로 docker-machine create 명령어를 사용하면 된다.

그리고 LightSail을 SSH로 접속할 수 있도록 설정해야한다.

(기존의 .pem 파일로 접속하는 방법이 아니다.)


우선 SSH 공개키를 만들어야한다.


https://git-scm.com/book/ko/v2/Git-%EC%84%9C%EB%B2%84-SSH-%EA%B3%B5%EA%B0%9C%ED%82%A4-%EB%A7%8C%EB%93%A4%EA%B8%B0


위와같이 생성한 퍼블릭키를 복사해서 lightsail의 ~/.ssh/aauthorized_keys 파일에 추가해준다.

ssh username@ipaddr 이 명령어로 bash에서 바로 접속할 수 있어야한다.


그리고 나서 docker-machine create 명령어를 실행해본다.




하......

명령어는 정상적으로 실행되지만.......지원하는 OS가 아니다.


Note.

Docker Machine은 오직 Ubuntu만 지원한다.



3. 천천히 처음 부터 다시

Ubuntu ami로  인스턴스를 새로 생성해서 Docker Machine으로 만들어주면 된다.

참고로 이 인스턴스는 따로 Docker를 설치하지 않아도 된다. Docker Machine으로 만들어줄 때 Docker를 설치하고 설정해준다.


생성되지 않았다......Port를 열어주지 않아서 오류가 났다. 포트를 열어주자.

Lightsail Console에서 네트워킹 > 방화벽에서 추가하면 된다.

추가하고 나서 다시 생성해보면 아래와같이 잡히고 있는게 보인다.





이제 docker machine이 생성되었으니 원격의 인스턴스들을 local에서 제어할 수 있다.

docker-machine ip | url 으로 쉽게 Host의 주소를 알 수 있다

docker-machine ssh [machine name] 으로 손쉽게 ssh로 접속할 수 있다.

aws instance를 연결했다면 stop, kill, start 같은 명령어로 ec2 instance들을 효과적으로 관리할 수 있다.


반응형