개발자 일기장

[Docker #4/docker command 정리] 본문

Docker

[Docker #4/docker command 정리]

kmsjks79 2020. 11. 25. 00:19

 

도커 커맨드를 개발할 때마다 항상 찾아보는것에 지치기 시작한다. 정리해서 자주 사용되는 명령어에 대해서 포스팅하는것도 나쁘지 않을것 같다는 생각이 들어서 관련 명령어 및 실제 개발하면서 겪었던 상황들에 대한 해결 방안 및 팁 들을 정리 하려고 한다.

 

COMMANDS


SEARCH

docker search centos# docker search centos

- Docker Hub로부터 사용가능한 image를 찾는 명령어

- Docker는 Dokcer HUB 를 통해 Git Hub 처럼 사용자들간의 이미지 공유를 할 수 있는 환경이 구축되어 있다

- 공식이미지는 galid/centos 처럼 / 앞에 사용자의 이름이 붙지 않는 것

 

PULL

docker pull centos:latest

- docker hub로 부터 image를 다운받는 명령어

 

TAG

docker tag [IMAGE_NAME] [USERID]/[[REPOSITORY]:TAG]

- 도커 이미지에 레포지토리와 태그를 설정한다.

 

PUSH

docker push [USERID]/[[REPOSITORY]:TAG]

- 도커 허브에 태그한 이미지를 업로드한다.

 

IMAGES (image 목록 보기)

dokcer images

- 현재 Host PC에 다운 받아져있는 image들을 출력하는 명령어

 

CREATE

docker create -i -t --name CONTAINER IMAGE

- 이미지로 컨테이너 생성

더보기

-i : 상호 입출력

-t : tty를 활성화해서 bash 셸을 사용

--name : 생성할 컨테이너 이름 지정

 

RUN

docker run -it --rm -d -p xxxx:yyyy -v /path/to/yours/:/path/to/container --name CONTAINER REPOSITORY:TAG 

- 이미지를 사용해서 컨테이너를 실행시킨다.

더보기

-d : 컨테이너를 백그라운드에서 동작시킨다.

-it : 컨테이너와 통신할 수 있는 tty를 오픈하여 보여준다.

-p : 1996:80 포트포워딩

-v : 볼륨 마운드 Host volume : container [/root:/mnt/1]

--rm : 컨테이너 종료시 컨테이너 자동삭제

--name : 컨테이너에 별명을 달아준다.

 

CP

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

- 컨테이너 외부에서 내부로 혹은, 컨테이너 내부에서 외부로
파일 또는 디렉토리를 복사한다.

 

COMMIT

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit CONTAINER IMAGE_NAME

- 컨테이너의 변경사항을 반영하여 새로운 이미지를 만든다.

 

INSPECT

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

- 도커 오브젝트 (네트워크, 이미지, 컨테이너 등)들의 저수준
레벨의 정보들을 출력한다. 디버깅 시 유용하게 사용할 수 있다.

 

RM

docker rm [OPTIONS] CONTAINER [CONTAINER...]

- 컨테이너를 삭제할 때 사용한다.

 

PRUNE

docker container prune

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

- 존재하는 모든 컨테이너 삭제

 

RMI

docker rmi IMAGE

- 이미지를 삭제할 때 사용한다.

 

EXEC

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

- 동작중인 컨테이너 내부로 명령을 전달한다.
docker exec -it <컨테이너> /bin/bash

- 과 같은 구문을 통해 컨테이너와 통신할 수 있는 tty를 오픈하여 보여준다.

 

START

docker start CONTAINER

- 생성된 컨테이너를 실행한다.

 

RESTART

docker restart CONTAINER

- 생성된 컨테이너를 재시작한다.

 

STOP

docker stop CONTAINER

- 생성된 컨테이너를 종료한다.

 

ATTACH

docker attach CONTAINER 

- 동작중인 컨테이너로 접속한다.

 

RENAME

docker rename old_container new_container

- 컨테이너의 이름을 다시 지정한다.

 

BUILD

docker build <옵션> <Dockerfile 경로>

더보기

Dockerfile 경로는 로컬 경로와 URL모두 사용가능하며,
-를 설정하면 표준 입력으로 Dockerfile 내용을 받을 수 있음

--force-rm=false: 이미지 생성에 실패했을 때도 임시 컨테이너를 삭제

--no-cache=false: 이전 빌드에서 생성된 캐시를 사용하지 않음

(Docker는 이미지 생성 시간을 줄이기 위해서 Dockerfile의 각 과정을 캐시하는데,
이 캐시를 사용하지 않고 처음부터 다시 이미지를 생성)

-q, --quiet=false: DockerfileRUN이 실행한 출력 결과를 표시하지 않음

--rm=true: 이미지 생성에 성공했을 때 임시 컨테이너를 삭제

-t, --tag=””: 저장소 이름, 이미지 이름, 태그를 설정 ex) [저장소 이름]/[이미지 이름]:[태그]

 

INSPECT

docker container inspect jupyter_test | grep Memory

- 현재 사용중인 jupyter_user01 컨테이너의 리소스를 확인

 

UPDATE

docker update --memory=1g --memory-swap=3g jupyter_test 
- 현재 사용중인 jupyter_user01 컨테이너의 리소스(메모리)설정(--memory 처럼 --cpu가능)

 

 

TIPS


컨테이너에서 작업을 하다가 빠져나올때

1) Ctrl + d & exit 

- 컨테이너가 종료되면서 빠져나옴 

2) Ctrl + p & Ctrl + q

- 컨테이너가 백그라운드에 살아있는 채로 빠져나옴

 

CentOS 컨테이너에서 systemctl 커맨드 사용시 permission 에러 

1) /sbin/init을 쉘로 하는 컨테이너를 백그라운드로 실행시킨다.

2) 백그라운드로 생성한 컨테이너에 exec를 통해 /bin/bash 프로세스를 생성한다

3) 확인

- 컨테이너 내부에서 systemctl 사용 가능확인

 

 

출처 :

captcha.tistory.com/49

 

Docker 명령어 정리

Docker 사용법 CentOS Docker는 OS의 자원을 사용하기 때문에 기본적으로 Root 사용자에서 명령어를 사용해야한다 1. search (image 검색) # docker search centos - Docker Hub로부터 사용가능한 image를 찾는 명..

captcha.tistory.com

nicewoong.github.io/development/2018/03/06/docker-commit-container/

 

Docker(도커) 컨테이너 커밋, 이미지 푸쉬하기 - nicewoong

container 이름이 ubuntu-cpp-driver 였고, 이를 이미지로 저장할 때 이미지 이름도 동일하게 했다.

nicewoong.github.io

 

Comments