본문 바로가기

Docker & Kubernetes

Docker - 명령어

컨테이너 생성 및 실행

: docker run [옵션] <이미지명> [:태그명] [값]

ex)  docker run -d --name container1 -p 8080:80 --link ubuntu:16.04 -v /Users/we/docker-test:/home/ubuntu docker_ubuntu:1.0

docker run 관련 옵션

- 주요옵션

-a, —attach=[STDIN | STDOUT | STDERR] : 표준 입력(STDIN), 표준 출력(STDOUT), 표준 에러 출력(STDERR)을 연결

--cidfile=“파일명”: 컨테이너 ID를 파일로 출력

-d, --detach: 컨테이너를 생성하여 백그라운드에서 실행

-i, --interactive: 컨테이너 표준 입력 열기

-t,--tty: tty(단말 디바이스)를 사용

-u, --user=“사용자명”: 사용자명을 입력

-p: 지정하는 포트번호를 사용 (web서버로 사용하기 위해 80포트를 사용)

--name: 컨테이너명
-v: volume을 mount (내 하드디스크내에 있는 폴더와 가상공간(docker)의 폴더를 연결)
--link: 다른 Container와 연결 (web서버 사용목적이므로, DB Container를 생성해서 연결)

--rm: 커맨드 실행 완료 후, 컨테이너 자동 삭제

--restart always: 프로그램에서 예상하지 못한 오류가 발생하거나 리눅스 시스템에서 도커 서비스가 중지되는 경우에 자동으로 재시작할 수 있도록 설정

 

- 네트워크 설정관련 옵션

--add-host=[호스트명:IP Address]: 컨테이너의 /etc/hosts에 호스트명과 IP Address를 설정

--dns=[IP Adress]: DNS 서버의 IP Address를 설정

--expose=[포트번호]: 포트 번호 할당

--mac-address=[MAC Address]: 컨테이너의 MAC Address 설정

--net=[bridge|none|container:<name|d> | host]: 컨테이너의 네트워크 설정

-h,-hostname=“호스트명”: 컨테이너의 호스트명 설정

-P,--publish-all=[true|false}: 임의의 포트를 컨테이너에 할당

-p, [호스트 포트 번호]:[컨테이너 포트 번호]: 호스트와 컨테이너의 포트를 매핑

--link=[컨테이너명:alias]: 다른 컨테이너에서 액세스 시 이름 설정

 

- 리소스 설정관련 옵션

-c, --cpu-shares=0: CPU 리소스 분배

-m, --memory=[메모리 사용량]: 메모리 사용량 제한

-v, --volume=[호스트 디렉터리]:[컨테이너 디렉터리]: 호스트와 컨테이너의 디렉터리 공유

 

- 환경설정 옵션

-e, --env=[환경변수]: 환경변수 설정

--env-file=[파일명]: 파일에서 환경변수 설정

--privileged=[true | false]: privileged 모드에서 구동(호스트의 커널 기능도 사용 가능)

--read-only=[true | false]: 컨테이너의 파일 시스템일 read-only로 설정

-w, --workdir=[경로]: 컨테이너의 작업 디렉터리를 설정

컨테이너 프로세스 실행

: docker exec [옵션] <컨테이너명 또는 ID> <커맨드> [값]

- 옵션

-d, --detach=false: 커맨드를 백그라운드에서 실행

-i, --interactive=false: 컨테이너 표준 입력 열기

-t, --tty=false: tty(단말디바이스) 사용

ex) docker exec -it —name docker_ubuntu /bin/bash  (/bin/bash 실행)

 

- 컨테이너의 프로세스 확인(docker top)

ex) docker top docker_ubuntu

 

- 컨테이너의 포트 상태 확인(docker port)

ex) docker port docker_ubuntu

컨테이너 목록 확인

docker ps

- 옵션

-a, --all=false : 구동, 중지 상태의 모든 컨테이너를 표시

--before="" : 입력한 컨테이너명 또는 ID보다 이전에 구동된 컨테이너를 표시

-f, --filter '[key]=[value]' : 목록에 표시할 컨테이너를 필터링

--format '[key]=[value]' : 목록에 표시할 포맷을 설정

-l, --latest=false : 마지막에 구동된 컨테이너를 표시

--no-trunc=false : 생략된 정보 없이 모두 표시

-q, --quiet=false : 컨테이너 ID만 표시

-s, --size=false : 파일 사이즈를 표시

--since="" : 입력한 컨테이너명 또는 ID보다 이후에 구동된 컨테이너를 표시

 

- docker ps 커멘드 결과

CONTAINER ID : 컨테이너 ID

IMAGE : 컨테이너 기반이 된 이미지

COMMAND : 컨테이너에서 실행 중인 커멘드

CREATED : 컨테이너 생성 후 경과 시간

STATUS : 컨테이너 상태(restarting | running | paused | exited)

PORTS : 할당된 포트

NAMES : 컨테이너명

ex) docker ps -a -f 'name=docker_ubuntu'

ex) docker ps -a -f 'exited=0'

컨테이너 구동 확인

docker stats <컨테이너명 또는 ID>

ex) docker stats docker_ubuntu

 

- docker stats 커멘드 결과

CONTAINER : 컨테이너명 또는 ID

CPU % : CPU 사용률

MEM USAGE/LIMIT : 메모리 사용량, 컨테이너에서 사용할 수 있는 메모리 제한

MEM % : 메모리 사용률

NET I/O : 네트워크 I/O

컨테이너 구동

docker start [옵션] <컨테이너명 또는 ID>

ex) docker start docker_ubuntu

- 옵션

-a, --attach=false : 표준 출력, 표준 에러를 연결

-i, --interactive=false : 컨테이너 표준 입력을 연결

컨테이너 중지

docker stop [옵션] <컨테이너명 또는 ID>

ex) docker stop -t 2 docker_ubuntu

- 옵션

-t, --time=10 : 컨테이너 재시작 시간을 지정(default는 10초)

컨테이너 재시작

docker restart [옵션] <컨테이너명 또는 ID>

ex) docker restart -t 2 docker_ubuntu

- 옵션

-t, --time=10 : 컨테이너 재시작 시간을 지정(default는 10초)

컨테이너 삭제

docker rm [옵션] <컨테이너명 또는 ID>

- 옵션

-f, --force=false : 구동 중인 컨테이너를 강제 삭제

-v, --volumes=false : 할당된 볼륨을 삭제

ex) docker rm -f 'docker ps -a -q'    (docker rm 커맨드로 일괄 삭제)

컨테이너 일시정지 및 재시작

docker pause/unpause <컨테이너명 또는 ID>

컨테이너명 변경

docker rename <기존컨테이너명> <변경할 컨테이너명>

docker 이미지 확인

docker images

docker 이미지 세부 정보 확인

docker inspect [옵션] <컨테이너 도는 이미지의 이름, ID>

docker 이미지 태그 설정

docker tag <Docker Hub 사용자명> / 이미지명 : [태그명]

ex) docker tag httpd:2.4 ewshin/webserver:1.0

Docker Hub에 공개된 이미지 검색시..

docker search [옵션] <검색 키워드>

ex) docker search --stars=30 centos

- 옵션

--automated=false : Automated Build만 표시

--no-trunc=false : 모든 결과 표시

-s[--stars=0] : 특정 개수 이상의 별 수

 

- docker search 커멘드 결과

NAME : Docker 이미지명

DESCRIPTION : Docker 이미지 설명

STARS : 해당 이미지가 받은 별 수

OFFICIAL : 공식 이미지 여부

AUTOMATED : Dockerfile을 기반으로 자동 생성된 이미지 여부

docker 이미지 삭제

docker rmi [옵션] <이미지명>

- 옵션

-f, --force=false : 이미지 강제 삭제

--no-prune=false : 태그가 없는 부모 이미지를 삭제하지 않음

docker 실행 환경 확인

docker info

=> 구동 중인 컨테이너 수, 스토리지 드라이브 종류와 Boot2Docker 버전 등 Docker의 상세 설정을 확인할 수 있다.

컨테이너에서 이미지 생성

docker commit [옵션] <컨테이너명 또는 ID> [이미지명[:태그명]]

- 옵션

-a, --author="~" : 생성자 (예: YUNSANG JANG <xggames1@gmail.com>

-m, --message="~" : 메시지

-p, --pause=true : 컨테이너를 일시 중지한 후 commit

ex) docker commit -a "Jang Yun Sang" docker_ubuntu yunsang/webproj:1.1

컨테이너를 tar 파일로 저장

docker export <컨테이너명 또는 ID>

ex) docker export dbb4bbe0f470 > container_export.tar

tar 파일에서 이미지 생성

docker import <파일 또는 URL> - [이미지명[:태그명]]

=> docker import 커맨드에서 지정할 수 있는 파일확장자 : tar, tar.gz, fgz, bzip, tar.xz, txz

이미지 저장

docker save [옵션] <파일명> [이미지명]

ex) docker save -o container_export.tar mongo

이미지로 되돌리기

docker load [옵션]

ex) docker load -i container_export.tar