4장. 컨테이너 애플리케이션 구축

기운찬곰·2020년 8월 31일
0

Docker

목록 보기
4/13
post-thumbnail

시작하기에 앞서서...

이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)


MySQL 컨테이너 생성

컨테이너 하나에는 하나의 애플리케이션만 동작시키도록 하는 것이 좋다. 이번에는 MySQL 컨테이너를 띄어보도록 하겠다.

$ sudo docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7

-d option

이전까지는 -it옵션을 사용해서 컨테이너 안에 접속한 다음 상호작용 할 수 있었다. 하지만, MySQL은 하나의 터미널을 차지하는 mysqld가 실행되므로 -it 옵션을 사용해도 상호작용 할 수 없다. 대신 실행되는 로그만 볼 수 있다.

그래서 -d 옵션을 통해 컨테이너가 백그라운드에서 동작하도록 하는 것이다. 만약 ubuntu에서 -it 대신 -d를 사용한다면 컨테이너 내부에 터미널을 차지하는 포그라운드로써 동작하는 프로그램이 없으므로 컨테이너는 시작되지 않는다.

그렇다고 mysql 컨테이너에 접속할 수 있는 방법이 없는건 아니다. $ sudo docker exec -it wordpressdb /bin/bash를 사용하면 배시 셸 프로세스를 실행하고 사용할 수 있다.

-e option

컨테이너 내부의 환경변수를 설정하는 옵션이다. 컨테이너 내부에 접속한 다음 env을 통해 확인해보면 잘 설정된 것을 확인해 볼 수 있다.

추가적으로 $ mysql -u root -p를 통해 내가 입력한 password가 제대로 적용됐는지 확인해보자.


WordPress 컨테이너 생성

다음으로는 워드프레스 컨테이너를 생성해보겠다.

$ docker run -d 
-e WORDPRESS_DB_PASSWORD=password 
--name wordpress 
--link wordpressdb:mysql 
-p 80 
wordpress

이번에는 --link라는 옵션이 눈에 띈다. --link 옵션은 내부 IP를 알 필요없이 컨테이너 별명으로 접근하도록 해준다. 이렇게 쓰는 이유는 내부 IP는 컨테이너를 시작 할 때마다 재할당 되기 때문에 언제든지 바뀔 수 있기 때문이다. 이제 wordpress 내부에서 mysql이라는 호스트명으로 wordpressdb에 접근할 수 있다.

🚨 하지만 이렇게 쓰는 것보다 도커 브리지 네트워크를 사용하는 것을 권장한다. 이후 배워볼 것이다.

추가적으로 -p 80 이라고 하고 외부포트는 지정해주지 않았는데 알아서 도커가 자동으로 지정해준다.


마침

이렇게 mysql 컨테이너와 wordpress 컨테이너를 각각 띄워보고 연결해보는 실습까지 진행해봤다.

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글

관련 채용 정보