docker run -d \\
--name wordpressdb \\
-e MYSQL_ROOT_PASSWORD=password \\
-e MYSQL_DATABASE=wordpress \\
mysql:5.7
mysql 이미지를 사용해 데이터베이스 컨테이너를 생성한다.
docker run -d \\
-e WORDPRESS_DB_HOST=mysql \\
-e WORDPRESS_DB_USER=root \\
--name wordpress \\
--link wordpressdb:mysql \\
-p 80 \\
wordpress
미리 준비된 워드프레스 이미지를 통해 워드프레스 웹 서버 컨테이너를 생성한다.
docker ps
명령어로 호스트의 어느 포트와 연결이 되었는지 확인할 수 있다.
docker port wordpress
호스트와 바인딩된 포트만 확인하려면 docker port 명령을 사용하면 된다.
이떄, [호스트 IP]:[80과 연결된 포트]에 웹 브라우저로 접근할 수 있다.
docker run -d --name detach_test ubuntu:14.04
컨테이너 내부에서 프로그램을 실행하지 않은 채로 위 코드를 입력하면 생성됐더라도 바로 종료되므로 docker ps로는 확인할 수가 없다.
docker ps -a
-a 옵션을 붙여서 확인을 해야 한다.
docker run -i -t \\
--name mysql_attach_test \\
-e MYSQL_ROOT_PASSWORD=password \\
-e MYSQL_DATABASE=wordpress \\
mysql:5.7
이번에는 mysql 컨테이너를 -i -t 옵션으로 생성한다.
이러면 mysqld 프로그램이 포그라운드로 실행된 로그를 확인할 수 있다. MSQL 이미지는 컨테이너가 시작될 때 mysqld가 동작되도록 설정되어 있기 때문이다.
echo $MYQL_ROOT_PASSWORD
컨테이너 내부에서 echo로 환경변수를 출력하면 -e 옵션에 입력된 값을 확인할 수 있다.
하지만 -d 옵션으로 생성했기 때문에 컨테이너에서 실행 중인 프로그램의 로그 출력만 보게 되는데 그때는 exec 명령어를 통해 컨테이너 내부 셸을 사용할 수 있다.
docker exec -i -t wordpressdb /bin/bash
이렇게 하면 컨테이너 내부 명령어를 실행해 그 결과 값을 반환 받을 수 있게 된다. 지금은 -i -t를 사용해서 상호 입출력이 가능한 상태로 exec 명령어를 사용했지만 옵션을 추가하지 않고 exec만 쓰면 컨테이너 내부에서 실행한 명령어에 대한 결과 값만 반환하게 된다.
mysql -u root -p
설정된 환경 변수가 제대로 적용이 되었는지 확인하기 위해 컨테이너 내부에서 위 코드를 입력한 뒤 password를 입력해 mysql에 접속해 본다.
docker stop wordpress wordpressdb
stop 명령어를 통해 wordpress와 wordpressdb를 멈춰주고
docker start wordpress
를 실행시키면 오류가 뜨게 된다.
docker start wordpress wordpressdb
두 개를 연속으로 스타트 해줘도 순서 때문에 wordpressdb는 실행이 되지만 wordpress는 실행이 되지 않고 오류가 뜨는 것을 확할 수 있다. 이렇게 ****--link 옵션은 컨테이너를 연결해주고 실행 순서의 의존성도 정의해 준다는 것을 확인할 수 있다.
📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] : Docker volume , 도커 볼륨 (0) | 2022.02.16 |
---|---|
[Docker] : Volume Container, 볼륨 컨테이너 (0) | 2022.02.16 |
[Docker] : host volume 공유, 호스트 볼륨 공유 (0) | 2022.02.16 |
[Docker] 도커 볼륨, docker volume (0) | 2022.02.15 |
[Docker] : VMWare Ubuntu Docker 설치 (0) | 2022.02.10 |
댓글