이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)
컨테이너 하나에는 하나의 애플리케이션만 동작시키도록 하는 것이 좋다. 이번에는 MySQL 컨테이너를 띄어보도록 하겠다.
$ sudo docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7
이전까지는 -it
옵션을 사용해서 컨테이너 안에 접속한 다음 상호작용 할 수 있었다. 하지만, MySQL은 하나의 터미널을 차지하는 mysqld가 실행되므로 -it
옵션을 사용해도 상호작용 할 수 없다. 대신 실행되는 로그만 볼 수 있다.
그래서 -d
옵션을 통해 컨테이너가 백그라운드에서 동작하도록 하는 것이다. 만약 ubuntu에서 -it 대신 -d를 사용한다면 컨테이너 내부에 터미널을 차지하는 포그라운드로써 동작하는 프로그램이 없으므로 컨테이너는 시작되지 않는다.
그렇다고 mysql 컨테이너에 접속할 수 있는 방법이 없는건 아니다. $ sudo docker exec -it wordpressdb /bin/bash
를 사용하면 배시 셸 프로세스를 실행하고 사용할 수 있다.
컨테이너 내부의 환경변수를 설정하는 옵션이다. 컨테이너 내부에 접속한 다음 env을 통해 확인해보면 잘 설정된 것을 확인해 볼 수 있다.
추가적으로 $ mysql -u root -p
를 통해 내가 입력한 password가 제대로 적용됐는지 확인해보자.
다음으로는 워드프레스 컨테이너를 생성해보겠다.
$ 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 컨테이너를 각각 띄워보고 연결해보는 실습까지 진행해봤다.