만약 도커 명령어나 플래그들이 잘 기억이 안나면 --help옵션을 주어 명령어들을 확인하는 것이 가능하다.
ex) docker --help
docker ps -a로 모든 CONTAINER를 확인할 수 있다
dong@ubuntu:~/docker-complete$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04b943f22fbf b2da75518bad "docker-entrypoint.s…" 23 hours ago Exited (137) 23 hours ago zealous_ganguly
731b1d47f91a b2da75518bad "docker-entrypoint.s…" 23 hours ago Exited (137) 23 hours ago trusting_mahavira
03f8545cbaf0 b2da75518bad "docker-entrypoint.s…" 23 hours ago Exited (137) 23 hours ago nervous_tesla
aa7190ac1421 b2da75518bad "docker-entrypoint.s…" 46 hours ago Exited (137) 46 hours ago happy_cohen
c5abc953ba85 31bc868478b8 "docker-entrypoint.s…" 46 hours ago Exited (137) 46 hours ago nifty_maxwell
d0801952859f 31bc868478b8 "docker-entrypoint.s…" 46 hours ago Exited (137) 46 hours ago dazzling_keldysh
0e74f3d74044 31bc868478b8 "docker-entrypoint.s…" 46 hours ago Exited (137) 46 hours ago jovial_kapitsa
f636acf4aea9 node "docker-entrypoint.s…" 47 hours ago Exited (0) 47 hours ago focused_williamson
5c7cea748b17 node "docker-entrypoint.s…" 47 hours ago Exited (0) 47 hours ago vigilant_bartik
09f67efccfea 989df459e007 "docker-entrypoint.s…" 3 days ago Exited (137) 3 days ago interesting_snyder
실행하기 원하는 컨테이름의 이름을 이용하여 컨테이너를 실행할 수 있다.
dong@ubuntu:~/docker-complete$ docker start zealous_ganguly
zealous_ganguly
docker ps 명령어로 해당 컨테이너가 실제로 작동 중인 걸 확인할 수 있다.
dong@ubuntu:~/docker-complete$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04b943f22fbf b2da75518bad "docker-entrypoint.s…" 23 hours ago Up 2 minutes 0.0.0.0:3000->80/tcp, :::3000->80/tcp zealous_ganguly
localhost 3000번 포트로 접속하면 전에 이미지로 만들어둔 node.js 서버가 작동하는 것을 확인할 수 있다.
여기서 주목해봐야 할 점은 docker start {{컨테이너명}}
으로 실행하면 백그라운드 프로세스로 실행이 된다는 점이다. 이 점이 전에 실행한 이미지로 새로운 컨테이너를 만들어 실행해주는 docker run 명령어와 차이를 보여준다. 아래와 같이 docker run 명령어로 이미지를 실행하면 백그라운드로 실행이 되지 않아 더이상의 명령어를 입력할 수 없다. 다른 터미널을 열어 docker ps 명령어로 실행중인 컨테이너를 확인하면 컨테이너는 제대로 실행되고 있는 것을 확인할 수 있다.
dong@ubuntu:~/docker-complete$ sudo docker run -p 8000:80 b2da75518bad
dong@ubuntu:~/docker-complete$ sudo docker ps
[sudo] password for dong:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3eb80d93afee b2da75518bad "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:8000->80/tcp, :::8000->80/tcp condescending_perlman
04b943f22fbf b2da75518bad "docker-entrypoint.s…" 23 hours ago Up 14 minutes 0.0.0.0:3000->80/tcp, :::3000->80/tcp zealous_ganguly
이러한 차이는 docker start
는 detached mode가 디폴트이고 docker run
attached mode가 디폴트인 부분 때문에 생긴다. 이 detached mode와 attached mode는 플래그를 주어 설정해 줄 수 있다. 만약 컨테이너의 출력값을 콘솔에서 확인하고 싶다면 attached mode가 알맞을 것이고, 백그라운드 프로세스로 돌리고 싶다면 detached mode가 알맞을 것이다.
run 명령어를 사용하여 이미지로 컨테이너를 생성하여 실행할 때 이미지 앞에 -d를 붙여 detached mode로 실행할 수 있다. 이렇게 실행하면 출력값으로 새로 생성한 컨테이너의 ID를 출력하고 백그라운드 프로세스로 실행된다.
dong@ubuntu:~/docker-complete$ sudo docker run -p 8000:80 -d b2da75518bad
716aed400a61a30d704edd9d1d5eaad1d90d412457ec279e8d9e6754b965acb2
dong@ubuntu:~/docker-complete$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
716aed400a61 b2da75518bad "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:8000->80/tcp, :::8000->80/tcp great_ritchie
04b943f22fbf b2da75518bad "docker-entrypoint.s…" 23 hours ago Up 25 minutes 0.0.0.0:3000->80/tcp, :::3000->80/tcp zealous_ganguly
만약 실행중인 컨테이너의 출력값을 보고싶다면 2가지 방법이 있다.
첫번째 방법으로는 docker의 attach 명령어를 사용하는 방법이다. docker attach {{컨테이너명}}
으로 간단하게 실행이 가능하다.
dong@ubuntu:~/docker-complete$ sudo docker attach great_ritchie
출력값입니다
두번째 방법으로는 docker의 log 명령어를 사용해 해당 컨테이너의 과거 출력값을들 전부 확인하는 방법이 있다. 이 또한 docker log {{컨테이너명}}
으로 간단하게 실행이 가능하다.
dong@ubuntu:~/docker-complete$ sudo docker logs great_ritchie
출력값입니다
두번째 출력값입니다
만약 과거 로그 뿐만이 아니라 앞으로의 출력도 계속해서 보고싶다면 -f 플래그를 주어 앞으로의 출력 또한 모니터링하는것이 가능하다.
dong@ubuntu:~/docker-complete$ sudo docker logs -f great_ritchie
출력값입니다
두번 째 출력값입니다
제대로 모니터링 중인지 확인하는 출력입니다.