Code

Docker for mac 훑어보고 워드프레스와 마리아 컨테이너 만들어보기

August 2, 2016

Docker for mac 훑어보고 워드프레스와 마리아 컨테이너 만들어보기

Docker for Mac and Windows

드디어 맥용 도커가 출시되었다고 한다. Boot2docker로 사용할 수 있었지만 이제 도커가 직접 지원한다고 하니 궁금해서 얼른 설치하고 사용법을 거칠게 살펴보았다.

도커는 리눅스를 기반으로 설계되어 각 리눅스 배포판distro에 따른 Docker Engine을 설치하면 된다.

맥과 윈도우에서는 Docker for Mac, Docker for Windows를 설치하거나 Docker Toolbox를 설치하여 사용할 수 있다.

설치

맥에서의 설치 방법은 일반 맥앱 설치와 거의 같다. 이 곳에서 Stable 버전을 다운로드 받아서 설치하면 된다. Application으로 드래그앤 드랍하고 도커 앱을 실행한다.

Docker for Mac

메뉴바에 고래 모양이 나타나며, 실행 중이면 애니메이션이 보이고 실행 완료면 멈춘다.

도커 아이콘

Docker Engine, Docker CLI client, Docker Compose와 Docker Machine이 설치된다. 다음 명령으로 확인한다.

docker --version
docker-compose --version
docker-machine --version

run 옵션으로 헬로월드 이미지에서 컨테이너를 실행하여 설치가 제대로 되었는지 확인한다:

docker run hello-world

이번엔 우분투 이미지를 설치하고 bash를 실행한다:

docker run -it ubuntu bash
cat /etc/issue

Ubuntu 16.04 LTS \n \l

순식간에 우분투 최신판이 다운로드되고 컨테이너에 접속할 수 있다.

rm -rf /etc

위와 같이 무슨 짓을 하든..

exit

docker run -it ubuntu bash
cat /etc/issue

Ubuntu 16.04 LTS \n \l

다운로드된 우분투 이미지에서 몇초만에 우분투 컨테이너가 실행된다.

Images and containers

컨테이너는 이미지를 실행한 것이다. OOP에 비유하면 이미지는 클래스이고 컨테이너는 클래스의 인스턴스다.

현재 설치된 이미지들을 보려면:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              42118e3df429        10 days ago         124.8 MB
hello-world         latest              c54a2cc56cbb        4 weeks ago         1.848 kB

현재 실행되고 있는 컨테이너 목록을 보려면:

docker ps

지금까지 만든 컨테이너 전체 목록을 보려면 a 옵션을 붙인다:

docker ps -a

도커를 훑어보니 공식문서가 잘 되어있다. 나머지는 Get Started with Docker에서부터 편하게 읽어가면 된다.

Docker Compose

위와 같이 Docker CLI로 Docker 데몬과 통신하면서 작업하는 것보다 Docker-Compose로 작업하는 것이 편리하다. 공식 워드프레스 이미지를 이용하여 컨테이너를 만들어 보고 실행을 확인해본다.

프로젝트 루트에 docker-compose.yml을 만들어 컨테이너들을 관리할 수 있다. Docker CLI가 데몬과 대화하는 방법과 비슷하다.

version: '2'

services:

  wordpress:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: example

백그라운드로 실행:

다음 명령으로 워드프레스 이미지를 다운받고 wordpress 컨테이너와 mysql 컨테이너를 만들 수 있다.

docker-compose up -d
Creating network "dockerwordpress_default" with the default driver
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
357ea8c3d80b: Pull complete
85537f80f73d: Pull complete
3d821ad560e1: Pull complete
.
.
.
e79ff17c8979: Pull complete
8674b9fe92e1: Pull complete
1b3cfb10002c: Pull complete
Digest: sha256:56cd7233bf69a580d823d29ad16c085392abf3fc00b1e4ed7b955b83db2544f7
Status: Downloaded newer image for wordpress:latest
Pulling mysql (mariadb:latest)...
latest: Pulling from library/mariadb
357ea8c3d80b: Already exists
256a92f57ae8: Pull complete
.
.
.
ea263152aba1: Pull complete
Digest: sha256:c5984a0db84a3eaef09bb25af32052686ffa976e15e59789bceb7b5d1678433d
Status: Downloaded newer image for mariadb:latest
Creating dockerwordpress_wordpress_1
Creating dockerwordpress_mysql_1

dockerwordpress_wordpress_1dockerwordpress_mysql_1의 두 개의 컨테이너가 만들어졌다. 컨테이너 이름은 도커가 프로젝트 디렉토리와 이미지를 합성하여 만들어준다.

이제 웹브라우저에서 http://localhost:8080/ 주소를 입력하면 일반적인 워드프레스 설치화면을 볼 수 있다.

기타 명령

docker logs [container_name]으로 각 컨테이너의 로그를 볼 수 있다. 각 컨테이너에 직접 접속하려면 exec 옵션을 사용한다.

sudo docker exec -i -t [container_name] bash

새롭게 컨테이너 만들 때는 아래와 같이 /bin/bash를 실행하도록 지정한다:

docker run -i -t [container_name] /bin/bash

컨테이너에 대한 자세한 정보를 보려면:

docker inspect {컨테이너명}

컨테이너를 중지할 때는:

docker stop [container_name]

특정 버전의 이미지를 다운로드할 때는 다음과 같이 태그로 버전을 지정한다:

docker pull ubuntu:14.04

14.04와 같이 태그가 주어지지 않으면 lastest로 지정되어 최신판을 가져온다.

도커를 연습하면서 쓸모없는 이미지와 컨테이너가 많아졌다. docker ps -a로 컨테이너명을 확인하여 삭제한다:

docker rm {컨테이너명}
docker ps -a

다운로드된 이미지를 확인하려면:

docker images

필요없는 이미지를 삭제하려면:

docker rmi {이미지 ID}

자세한 것은 다음 링크를 참고한다.

마지막으로 도커 데몬 프로그램을 끄면 다 내려간다. 편리하다^^

참고링크