read

새로 투입된 서비스가 개발환경이 docker로 구축되어 있어 docker 관련글을 검색하다
서비큐라님의 초보를 위한 도커 안내서 - 도커란 무엇인가? 를 읽게 되었지요.


읽다보니 ‘아~ 이렇게 깔끔하게 정리를 잘해놓다니! 나도 이런 기술블로그를 운영해보고 싶다!’ 라는 생각이 들었습니다.
그래서 저의 기술블로그도 시작되었답니다.

개인적으로 Apache + PHP 환경을 구축 해볼려고 합니다.
그에 앞서 가벼운 마음으로 기본 사용법 숙지해볼까요?

Images

서비큐라님 포스팅에 워낙 설명을 잘해놓으신 터라 저는 간단하게만 정리했습니다.

List

로컬 환경에 있는 이미지 목록을 확인해볼까요?

$ docker images
REPOSITORY       TAG           IMAGE ID          CREATED         SIZE
httpd            latest        d3a13ec4a0f1      2 weeks ago     132MB
mysql            5.7           e47e309f72c8      3 weeks ago     372MB

Docker 저장소에 있는 centos가 뭐가 있는지 검색해봅니다.

$ docker search centos
NAME                      DESCRIPTION                    STARS    OFFICIAL   AUTOMATED
centos                    The official build of CentOS.  5221     [OK]                
ansible/centos7-ansible   Ansible on Centos7             120                 [OK]

Pull

Docker 저장소에 있는 가장 최신 httpd 이미지를 로컬에 가져옵니다.

$ docker pull httpd:latest

latest: Pulling from library/httpd
~
Status: Downloaded newer image for httpd:latest

tag를 따로 지정하지 않으면 default로 latest 값이 자동 지정되지요.
centos=centos:latest 와 동일합니다.

$docker pull centos
~
Status: Downloaded newer image for centos:latest

Remove

이것저것 다운받았네요.
필요없는것은 지워보겠습니다.
이미지 해시코드 앞부분만 적어도 중복된는 코드가 없으면 알아서 삭제해 준답니다.
여러개를 한번에 지울수도 있지요.

$ docker rmi 3d557875ffc6 fce289e99eb9 f09fe80eb0e7
Untagged: mkrss/centos6:latest
Untagged: mkrss/centos6@sha256:a2ea2e4aeb4aabf060134fd969ba9bf8e18a0154e123075c2d61694885aeaa6f
Deleted: sha256:3d557875ffc68482cb9ef9b9af00f5af6a63ef75a94490f2a19818e761c2cf24
Deleted: sha256:7da2d14f323ca2e7ebbca8aa624012432e1a5cfce9764a6b67a959b1f3cd915d
Deleted: sha256:8fdf88328491a3716d20e2147ed96f1104c5e5058533655ccaed5c29d889608a

컨테이너까지 강제 삭제할 수도 있어요.
이미지 해시코드가 아닌 컨테이이너 이름을 지정해 주었습니다.

$ docker rmi -f nginx
Untagged: nginx:latest
Untagged: nginx@sha256:dd2d0ac3fff2f007d99e033b64854be0941e19a2ad51f174d9240dda20d9f534
Deleted: sha256:f09fe80eb0e75e97b04b9dfb065ac3fda37a8fac0161f42fca1e6fe4d0977c80

Commit

필요한 라이브러리가 설치된 컨테이너를 이미지로 만들어 보아요.

$ docker commit ubuntu-container willow/ubuntu-apache-php-mcrypt
sha256:d84f180ac83da523cde7f354339e778bfb68f64ac29c48da332777d1be81707f

Container

컨테이너 실행

다운받은 로컬 이미지를 컨테이너로 띄워보겠습니다.

-i: 인터렉티브 interactive 옵션. 표준 입력 STDIN 을 유지하며 호스트와 통신을 유지
-t: pseudo-tty 옵션. 호스트에서 터미널을 이용해 컨테이너와 통신하려면 필수적인 옵션
–name: 컨테이너 이름. 이번의 경우엔 php-apache
-p: 호스트의 8888 포트와 컨테이너의 80 포트를 연결
-v: volume 마운트, 호스트의 /project/docker 를 컨테이너의 ~/source/project/DocRoot에 연결

$ docker run -i -t -p 8888:80 -v /project/docker:~/source/project/DocRoot --name php-apache

실행중인 컨테이너에 접속해볼까요?
docker attach 컨테이너이름

$ docker attach willow_ubuntu

다른방법으로 외부에서 컨테이너 안에 명령을 내리는 방법도 있어요.
docker exec 컨테이너 이름 명령 매개변수

컨테이너 중지 & 시작

가장 많이 쓰게 될 명령이죠.
컨테이너 전체 리스트의 상세 정보입니다.

$ docker container ls -a   # 컨테이너 전체 리스트  (중지, 실행포함)

CONTAINER ID   IMAGE         COMMAND           CREATED       STATUS       PORTS                              NAMES
c54607322d9f   mysql:5.7     "docker-entryp…"  2 weeks ago   Up 2 hours   3060/tcp, 0.0.0.0:3060->3306/tcp   docker_mysql
f0c86d1423ba   nginx         "nginx -g 'dae…"  2 weeks ago   Exited (0)  2 hours ago                         webserver
8aa6a78bfe40   hello-world   "/hello"          2 weeks ago   Exited (0)  2 weeks ago                         agitated_buck

컨테이너를 중지해보겠습니다.

$ docker container stop webserver
webserver

컨테이너를 시작해보겠습니다.

$ docker container start webserver
webserver

재시작 명령도 지원합니다.

$ docker container restart webserver
webserver

컨테이너 삭제

컨테이너를 삭제 합니다.

$ docker container rm webserver
webserver

기본값이 container 이여서 생략이 가능합니다.
여러개 컨테이너도 한번에 지울수 있지요.

$ docker rm php-apache php_apache2 php_apache3
php-apache
php_apache2
php_apache3

docker

Blog Logo

Weeping Willow


Published

Image

Willow's Blog

Welcome!

Back to Overview