일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jv
- bootstrap
- #Microservice
- #화면캡쳐 #macOS
- WebJar
- 년말
- docker #docker tutorial
- 방법론
- Microservices
- Lambda
- 프로젝트 시작
- #정규표현식
- java
- 2010
- #단축키
- 분석 작업
- 평가인증
- Spring Boot
- #Gradle Multi project with IntelliJ
- 감사
- 토익
- Today
- Total
사랑해 마니마니
Docker Tutorial 본문
Container 생성 및 사용하기
docker cli 와 engin에대한 정보 보기
$ docker version
점더 자세한 정보를 보고 싶으면(엔진에 대한 좀더 자세한 config 정보)
$ docker info
Docker command format
docker <Management command> <command> (options)
ex. docker container run (old version command: docker run)
docker --help로 보면 management commands와 commands로 구분되어 있음
Imange vs. Container
- 이미지는 우리가 실행할 수 있는 어플리케이션
- 컨테이너는 image가 process로서 실행되고 있는 인스턴스
- 그래서 동일한 이미지로 여러개의 컨테이너를 실행시킬 수 있음
- 도커의 기본 이미지 "registry"는 Docker Hub
nginx를 도커에서 실행시켜 보자
$ docker container run --publish 80:80 nginx
- 'nginx'를 Docker Hub에서 다운로드
- 이미지로 부터 새로운 컨테이너를 실행
- 호스트 IP 80포트를 오픈
- 80포트로 들어오는 트래픽을 컨테이너 IP로 라우팅함
foreground 로 실행되고 있는 프로세스를 중지시키려면 ctrl + c
$ docker container run --publish 80:80 --detach nginx
실행중인 컨테이너 목록 보기
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2075dcf5877b nginx "nginx -g 'daemon of…" 9 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp happy_northcutt
실행 중인 컨테이너 중지시키기
$ docker container stop <CONTAINER ID>
$docker container stop 2075dc
실행 중 + 중지되어 있는 컨테이너 목록 보기
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2075dcf5877b nginx "nginx -g 'daemon of…" 6 minutes ago Exited (0) 4 minutes ago happy_northcutt
9c463ce0ba1a nginx "nginx -g 'daemon of…" 16 minutes ago Exited (0) 6 minutes ago determined_kepler
877109223b50 centos "-it /bin/bash" 18 hours ago Created zen_shtern
a832f8501790 centos "-it" 18 hours ago Created quirky_pasteur
7cd283e61b5c centos "/bin/bash" 18 hours ago Exited (0) 18 hours ago zealous_minsky
73b9b86cd5ae ubuntu "/bin/bash" 18 hours ago Exited (130) 18 hours ago stoic_galileo
f1503a0744e1 centos "/bin/bash" 18 hours ago Exited (0) 18 hours ago xenodochial_roentgen
aedf0b600ae7 centos "-i -t /bin/bash" 18 hours ago Created inspiring_dubinsky
429add0f81f5 centos "--it /bin/bash" 18 hours ago Created mystifying_roentgen
run vs. start
- docker container run은 항상 *new* 컨테이너를 시작시킴
- docker container start는 중지되어 있는 컨테이너를 실행시킴
컨테이너 로그 보기
$ docker container logs <NAME>
$ docker container run --publish 80:80 --detach --name webhost nginx // 컨테이너 새로 시작하기, 이름은 webhost로 설정
브라우져에서 http://localhost:80 접속해 보기, 몇번 Reload 한 후에
$ docker container logs webhost
172.17.0.1 - - [08/Oct/2018:10:55:03 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "-"
172.17.0.1 - - [08/Oct/2018:10:55:05 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "-"
172.17.0.1 - - [08/Oct/2018:10:55:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "-"
172.17.0.1 - - [08/Oct/2018:10:55:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "-"
컨테이너 내부에서 돌고 있는 프로세스 정보 보기
특정 컨테이너 내부에서 실행되고 있는 프로세스 정보
$ docker container top <NAME>
$ docker container top webhost
PID USER TIME COMMAND
4664 root 0:00 nginx: master process nginx -g daemon off;
4705 101 0:00 nginx: worker process
컨테이너 삭제하기
$ docker container rm <CONTAINER ID>
$ docker container rm 2075dc
- 동작 중일 때는 삭제되지 않고 에러 메시지 출력
- 이때는 -f 사용: $ docker container rm -f 2075dc
docker container run을 실행하면
- 로컬의 이미지 cache에서 이미지를 찾는다. 만약 없으면
- 원격 이미지 repository(디폴트가 Docker Hub)에서 찾는다
- 최신 버전(nginx:latest가 디폴트)을 다운로드 받는다
- 이미지로 부터 컨테이너를 생성하고, 시작을 준비한다
- 도커 엔지 내부의 private network에 virtual IP를 부여한다
- 호스트의 80 포트를 오픈하고 컨테이너의 80 포트로 연결한다
- 이미지 Dockerfile내에 있는 CMD를 이용하여 컨테이너를 시작한다.
docker container 는 결국은 process
linux에서 mongodb 컨테이너를 실행시키고($ docker run --name mongo -d mongo
), docker container top
으로 확인되는 프로세스와 ps aux | grep mongod
의 프로세스(UID, PID)가 같음.
docker container stop mongo
로 컨테이너를 중지시키면, ps aux | grep mongod
에서도 프로세스는 죽어서 목록에서 빠짐.
* macOS와 Windows는 docker가 mini-VM에서 실행되기 때문에 ps aux로 프로세스 확인할 수 없음