컨테이너 생성 및 실행
: 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
'Docker & Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes) - 기본적인 사용방법 (0) | 2022.01.29 |
---|---|
쿠버네티스(Kubernetes) - 이해하기 (0) | 2022.01.22 |
인프라 환경 관련 개념정리 (0) | 2022.01.20 |
Docker - Jenkins 설치 및 배포 (Spring boot 프로젝트) (0) | 2021.09.15 |
Docker - mac 환경에서 도커 설치 및 컨테이너 생성 (0) | 2020.03.21 |