docker

01. Docker 기본 명령어

식피두 2020. 7. 29. 08:54

주요 명령어들

특히 자주 쓰는 것들은 강조 표시를 해두었다.

 

기본적으로 루트 권한이 필요하므로

필요한 경우엔 현재 계정을 docker 그룹에 포함 시킬 필요가 있다.

sudo usermod -aG docker ${USER}
sudo service docker restart

docker hub로 부터 ubuntu 이미지 검색 예시

docker search ubuntu

docker hub로 부터 이미지(이미지이름:태그) 받기

docker pull ubuntu:latest

이미지 목록 출력

docker images

컨테이너 생성

- i, t 옵션 지정시 실행된 bash 셸에 입출력이 가능하다. (-it)

- p, P 옵션을 통해 포트 바인딩이 가능하다.

- d 옵션으로 백그라운드 실행이 가능하다.

docker run <옵션> <이미지 이름> <실행할 파일>

 

우리가 주의해야할 것은,

도커 컨테이너를 통해 실행되는 애플리케이션은 반드시 foreground로 실행이 되어야 한다는 것!

 

즉, 내부에서 실행되는 애플리케이션은 도커가 계속해서 상태를 추적할 수 있도록,

background가 아닌 foreground 로 실행이 되어야 한다.

 

컨테이너 내부에 foreground로 실행되는 프로세스가 없다면, 컨테이너는 바로 exit된다. 

이 부분은 반드시 이해를 하고 있어야 함.

 

예를 들어, 컨테이너 내부에 flask 앱을 gunicorn을 이용해 데몬으로 띄워둔다면,

10000% 컨테이너 실행시 바로 종료가 될 것이다. 

 

만약, 도커 혹은 컴포즈의 restart 옵션을 적용 했다면

포그라운드로 실행되는 앱의 상태를 도커가 계속 체크하면서,

앱이 죽는 경우에 바로 컨테이너를 재시작해 줄 수 있다.

 

docker run할 때, 리소스 제한도 가능하다.

docker run --name hello --cpus="4" -d -P myappImage:test

 

참고자료

- run 옵션
- run 읽을 거리

 

 

컨테이너 목록 확인

docker ps -a

컨테이너 시작

docker start test-container

모든 컨테이너 종료 및 삭제

- q 옵션을 넣어주면 ID 만 리턴한다

 docker stop $(docker ps -a -q)
 docker rm $(docker ps -a -q)

 

실행중인 컨테이너에 접속하는 법

- 매우 자주 씀

docker exec -it 이미지아이디 /bin/bash

실행중인 컨테이너의 출력을 보고 싶을 때

- ctrl + D ; 컨테이너 정지

- ctrl + P, ctrl + Q 차례대로 입력 > 정지하지 않고 빠져나옴

docker attach test-container

 

그 외 명령어

이미지 히스토리 조회

docker history <이미지이름>:<태그>

컨테이너와 호스트간의 파일 복사!!!!

docker cp <컨테이너이름>:/etc/nginx/nginx.conf./docker

cp ./abc.txt containername:/abc.txt
docker containername:/abc.txt ./abc.txt

현재 컨테이너의 상태로 이미지 생성

docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그>
docker commit -a "Jein Song <jeinsong@abc.com>" -m "커밋 메시지" node-nginx node-nginx-image:0.2