docker 기본 명령어
• docker version
⁃ docker 버전이나 Go 언어, 버전 OS, 아키텍처를 확인
• docker system info
- docker 실행환경의 상세 설정을 표시
• docker system df
- 디스크의 이용 상황을 표시 (상세 내용은 -v 추가)
• docker image pull
- Docker Hub에서 이미지를 다운받음
docker image pull [옵션] 이미지명[:태그명]
$ docker image pull centos:7 <= 7버전을 선택하여 저장 $ docker image pull -a centos <= 전체 목록을 저장
docker image ls [ == docker images ]
- Docker Hub에서 이미지를 다운받은 목록을 확인
docker image ls [옵션] [레파지토리명]
$ docker image ls
[옵션]
—all, -a : --digests : --no-trunc : --quiet, -q :
모든 이미지를 표시
다이제스트를 표시할지 말지 [이미지를 고유하게 식별하기 위한 값] 결과를 모두 표시
Docker 이미지 ID만 표시
[docker image ls 명령 결과]
- REPOSITORY : - TAG : - IMAGE ID : - CREATED : - SIZE :
이미지 이름 이미지 태그명 이미지 ID 작성일
이미지 크기
•docker image inspect
- 이미지 상세 정보 확인
docker image inspect 이미지명[:태그명] $ docker image inspect centos:7
•docker image tag
- 이미지에 표식이 되는 태그를 붙일 때 사용
docker image tag <Docker Hub 사용자명>/이미지명:[태그명] $ docker image tag nginx batstorm0530/webserver:1.0
•docker search
- Docker Hub에 공개되어 있는 이미지를 검색할 때 사용
docker search [옵션] <검색 키워드>
$ docker search --filter=stars=1000 nginx [옵션]
•docker image rm ( = docker rmi ) - 작성한 이미지를 삭제
docker image rm [옵션] 이미지명 [이미지명] $ docker image rm nginx
[옵션]
--force, -f : 이미지를 강제로 삭제 --no-prune : 중간 이미지를 삭제하지 않음
docker image prune [옵션] $ docker image prune [옵션]
--all, -a : 사용하지 않은 이미지를 모두 삭제 --force-f : 이미지를 강제로 삭제
•docker login
- Docker 레파지토리에 업로드를 하기 위한 로그인
docker login [옵션] [서버] $ docker login
[옵션]
--password, -p : 비밀번호 --username, -u : 사용자명
•docker image push
- Docker Hub 에 이미지를 업로드
docker image push 이미지명[:태그명]
$ docker image push batstorm0530/webserver:1.0
•docker logout
- Docker Hub 에서 로그아웃
docker logout [서버명] $ docker logout
• docker container run
- 컨테이너 생성 및 시작
docker container run [백그라운드 실행 옵션] 이미지명[:태그명] [인수]
$ docker container run -it —name “test1” centos /bin/cal
[옵션]
--attach, -a
--cidfile --detach, -d --interactive, -i --tty, -t
: 표준입력(STDIN), 표준출력(STDOUT), 표준 오류 출력(STDERR)에 어태치 : 컨테이너 ID를 파일로 출력
: 컨테이너를 생성하고 백그라운드에서 실행
: 컨테이너의 표준 입력을 엶
: 단말기 디바이스를 사용
- 컨테이너의 백그라운드 실행
docker container run [실행 옵션] 이미지명[:태그명] [인수]
$ docker container run -d centos /bing/ping localhost
[백그라운드 실행 옵션]
--detach, -d :
--user, -u :
--rm :
--restart[no | on-failure | on-failure:횟수n | always | unless-stopped]
:
no
on-failure on-failure:횟수n always unless-stopped
백그라운드에서 실행
사용자명을 지정
명령 실행 완료 후에 컨테이너를 자동으로 삭제
명령의 실행 결과에 따라 재시작을 하는 옵션
- : 재시작하지 않음
- : 종료 스테이터스가 0이 아닐 때 재시작
- : 종료 스테이터스가 0이 아닐 때 n번 재시작
- : 항상 재시작
- : 최근 컨테이너가 정지 상태가 아니라면 항상 재시작
- 컨테이너의 네트워크 설정
docker container run [네트워크 옵션] 이미지명[:태그명] [인수]
$ docker container run -d -p 8080:80 nginx
[네트워크 옵션]
--add-host=[호스트명:IP 주소] : 컨테이너의 /etc/hosts 에 호스트명과 IP주소를 정의 --dns[IP 주소] : 컨테이너용 DNS 서버의 IP 주소 지정
--expose
--mac-address=[MAC 주소]
--hostname, -h
--publish-all, -p
--publish, -p[호스트의 포트번호]:[컨테이너의 포트 번호]
: 지정한 범위의 포트 번호를 할당
: 컨테이너의 MAC 주소를 지정
: 컨테이너 자신의 호스트명을 지정
: 호스트의 임의의 포트를 컨테이너에 할당
: 호스트와 컨테이너의 포트 매핑 --net=[bridge | none | container<name | id> | host | NETWORK]
: 컨테이너의 네트워크를 지정 (기본적으로 Host OS 와 브리지 연결 을 하지만 --net 옵션 이용시 아래와 같은 설정이 가능함)
bridge : none : container:[name | id] : host : NETWORK :
브리지 연결(기본값)을 사용
네트워크에 연결하지 않음
다른 컨테이너의 네트워크를 사용
컨테이너가 호스트 OS의 네트워크를 사용
사용자 정의 네트워크를 사용
(사용자 정의 네트워크는 docker network create 명령으로 작성)
- 자원을 지정하여 컨테이너 생성 및 실행
docker container run [자원 옵션] 이미지명[:태그명] [인수]
$ docker container run --cpu-shares=512 --memory=1g centos
$ docker container run -v /Users/asa/webap:/usr/share/nginx/html nginx [자원 옵션]
--cpu-shares, -c : CPU의 사용 배분(비율)
--memory, -m : 사용할 메모리를 제한하여 실행(단위는 b, k, m, g 중 하나) --volume=[호스트의 디렉토리]:[컨테이너의 디렉토리], -v
: 호스트와 컨테이너의 디렉토리를 공유
- 컨테이너를 생성 및 시작하는 환경을 지정
docker container run [환경설정 옵션] 이미지명[:태그명] [인수]
$ docker container run -it -e foo=bar centos /bin/bash
[환경설정 옵션]
--env=[환경변수], -e : 환경변수를 설정 --env-file=[파일명] : 환경변수를 파일로부터 설정
--read-only=[true | false] --workdir=[패스], -w
-u, --user=[사용자명]
• docker container ls (docker ps) - 가동 컨테이너 목록 표시
docker container ls [옵션]
$ docker container ls
: 컨테이너의 파일 시스템을 읽기 전용으로 만듦 : 컨테이너의 작업 디렉토리를 지정
: 사용자명 또는 UID를 지정
[옵션]
--all, -a
--filter, -f --format --last, -n --latest, -l --no-trunc --quiet, -q --size, -s
: : : : : : : :
실행 중/정지 중인 것도 포함하여 모든 컨테이너를 표시 표시할 컨테이너의 필터링
표시 포맷을 지정
마지막으로 실행된 n건의 컨테이너만 표시
마지막으로 실행된 컨테이너만 표시 정보를 생략하지 않고 표시 컨테이너 ID만 표시
파일 크기 표시
[명령 결과]
- CONTAINER ID : - IMAGE : - COMMAND : - CREATED : - STATUS : - PORTS : - NAMES :
컨테이너 ID
컨테이너의 바탕이 된 이미지
컨테이너 안에서 실행되고 있는 명령
컨테이너 작성 후 경과 시간
컨테이너의 상태(restarting | running | paused | exited) 할당된 포트
컨테이너 이름
• docker container stats
- 컨테이너의 가동 상황을 확인하고 싶을 때 사용
docker container stats [컨테이너 식별자]
$ docker container stats webserver
[명령 결과]
- CONTAINER ID : - NAME : - CPU % : - MEM USAGE/LIMI : - MEM % : - NET I/O : - BLOCK I/O : - PIDS :
컨테이너 식별자
컨테이너명
CPU 사용률
메모리 사용량/컨테이너에서 사용할 수 있는 메모리 제한 메모리 사용률
네트워크 I/O
블록 I/O
PID(Windows 컨테이너 제외)
- docker container start
- 정지하고 있는 컨테이너를 시작 $ docker container start dbb4bbe0f470 - [옵션]
--attach, -a : 표준 출력, 표준 오류 출력을 엶 --interactive, -i : 컨테이너의 표준입력을 엶 - docker container start [옵션] <컨테이너 식별자> [컨테이너 식별자]
- docker container stop
- 실행중인 컨테이너를 정지 $ docker container stop -t 2 dbb4bbe0f470 - [옵션]
--time, -t : 컨테이너의 정지 시간을 지정 (default 10초) - docker container stop [옵션] <컨테이너 식별자> [컨테이너 식별자]
•docker container restart
- 실행중인 컨테이너를 재시작
docker container restart [옵션] <컨테이너 식별자> [컨테이너 식별자] $ docker container restart -t 2 webserver
[옵션]
--time, -t : 컨테이너의 정지 시간을 지정 (default 10초)
•docker container rm
- 정지하고 있는 컨테이너를 삭제
docker container rm [옵션] <컨테이너 식별자> [컨테이너 식별자] $ docker container rm dbb4bbe0f470
[옵션]
--force, -f : 실행중인 컨테이너를 강제로 삭제 --volumes, -v : 할당한 볼륨을 삭제
•docker container pause
- 실행중인 컨테이너에서 작동중인 프로세스를 모두 중단시킴 docker container pause <컨테이너 식별자>
$ docker container pause webserver
•docker container unpause
- 중단시킨 컨테이너에서 프로세스를 모두 재개함 docker container unpause <컨테이너 식별자> $ docker container unpause webserver
• docker network ls
- 네트워크의 목록을 확인
docker container ls [옵션]
$ docker network ls -q —filter driver=bridge
[옵션]
--no-trunc : -q, —quite : -f, --filter=[] :
상세정보를 출력함 네트워크 ID만 표시함 출력을 필터링함
driver : id : label : name : scope : type :
드라이버 지정
네트워크 ID
네트워크에 설정된 라벨(label=<key> 또는 label=<key>=<value>로 지정) 네트워크명
네트워크의 스코프 (swarm/global/local)
네트워크의 타입(사용자 정의 네트워크 custom/정의 완료 네트워크 builtin)
[ 오버레이 네트워크 (overlay network) ]
- 물리 네트워크 상에서 소프트웨어적으로 에뮬레이트한 네트워크를 말함
- 물리 네트워크를 덮듯이 가상 네트워크가 구성된다는 점에서 가상 네트워크라고도 부름
- 물리 네트워크의 구조가 은폐되어 그 아래에 있는 물리 계층의 형태나 제어 방식을 의식하지 않고 이용 - 예를 들어 여러개의 호스트에 걸친 네트워크를 구성할 때 사용
- 소프트웨어로 구성되어 물리 작업을 수반하지 않고 자유롭게 구성을 변경할 수 있는 장점이 있음
• docker network create
- 새로운 네트워크를 작성하여 추가
docker container create [옵션] 네트워크
$ docker network create —driver-bridge web-network [옵션]
--driver, -d : --ip-range : --subnet :
네크워크 브리지 또는 오버레이(기본값은 bridge) 컨테이너에 할당하는 IP 주소의 범위를 지정 서브넷을 CIDR 형식으로 지정
--ipv6 : IPV6 네트워크를 유효화할지 말지(true/false) -label : 네트워크에 설정하는 라벨
• docker network connect / disconnect - 컨테이너를 네트워크에 연결
docker network connect [옵션] <네트워크> <컨테이너 식별자>
$ docker network connect web-network webfront
$ docker container run -itd —name=webap —net=web-network nginx [옵션]
--ip :
--ip6 :
--alias :
--link :
- 컨테이너를 네트워크에 연결 해제
IPv4 주소
IPv6 주소
앨리어스명
다른 컨테이너에 대한 링크
docker network disconnect <네트워크> <컨테이너 식별자>
$ docker network disconnect web-network webfront
- docker network inspect [옵션] 네트워크 - 네트워크 상세 정보 확인 $ docker network inspect web-network
- docker network inspect [옵션] <네트워크>
- docker network rm - 네트워크 삭제 $ docker network rm web-network
- docker network rm [옵션] <네트워크>
- docker container attach docker container attach <컨테이너 식별자>
- $ docker container attach sample
- - 가동중인 컨테이너 연결
• docker container exec
- 가동 컨테이너에서 프로세스 실행
docker container exec [옵션] <컨테이너 식별자> <실행할 명령> [인수]
$ docker container exec -it webserver /bin/bash
[옵션]
--detach, -d : --interactive, -i : --tty, -t : --user, -u :
명령을 백그라운드에서 실행 컨테이너의 표준 입력을 엶 tty(단말 디바이스)를 사용 사용자명을 지정
- docker container top
- 가동중인 컨테이너에서 실행되고 있는 프로세스를 확인 $ docker container top webserver - docker container top <컨테이너 식별자>
- docker container port
- 가동중인 컨테이너에서 실행되고 있는 프로세스가 전송되고 있는 포트를 확인 $ docker container port webserver - docker container port <컨테이너 식별자>
- docker container rename - 컨테이너 이름 변경 $docker container rename webserver webserver2
- docker container rename <컨테이너 식별자> <NEW컨테이너식별자>
- docker container cp
- 컨테이너 안의 파일을 복사 - docker container cp <컨테이너 식별자>:<컨테이너 안의 파일 경로> <호스트의 디렉토리 경로> docker container cp <호스트의 파일> <컨테이너 식별자>:<컨테이너 안의 파일 경로>
$ docker container cp webserver:/etc/nginx/nginx.conf /tmp/nginx.conf
docker image save
- 이미지를 tar 파일로 저장
docker image save [옵션] <저장 파일명> [이미지명] $ docker image save -o export.tar nginx
docker image load
- 이미지를 읽어 들이기
docker image load [옵션] [파일명] $ docker image load -i export.tar
[export/import 와 save/load 차이]
- 컨테이너를 export 하면 컨테이너를 작동시키는데 필요한 파일을 모두 압축 아카이브로 모을 수 있음
그래서 이 tar 파일을 풀면 컨테이너의 루트 파일 시스템을 그대로 추출할 수 있음
한편 이미지를 save 하면 이미지의 레이어 구조도 포함된 형태로 압축 아카이브로 모을 수 있음 이미지는 똑같아도 docker container export 명령과 docker image save 명령은 내부적인 디렉토리와 파일 구조가 다름
• docker system prune
- 사용하지 않는 이미지, 컨테이너, 볼륨, 네트워크를 일괄적으로 삭제할 수 있음
docker image load [옵션]
$ docker system prune -a
[옵션]
--all, -a : 사용하지 않는 리소스를 모두 삭제 --force, -f : 강제적으로 삭제
docker image save
- 이미지를 tar 파일로 저장
docker image save [옵션] <저장 파일명> [이미지명] $ docker image save -o export.tar nginx
docker image load
- 이미지를 읽어 들이기
docker image load [옵션] [파일명] $ docker image load -i export.tar
[export/import 와 save/load 차이]
- 컨테이너를 export 하면 컨테이너를 작동시키는데 필요한 파일을 모두 압축 아카이브로 모을 수 있음
그래서 이 tar 파일을 풀면 컨테이너의 루트 파일 시스템을 그대로 추출할 수 있음
한편 이미지를 save 하면 이미지의 레이어 구조도 포함된 형태로 압축 아카이브로 모을 수 있음 이미지는 똑같아도 docker container export 명령과 docker image save 명령은 내부적인 디렉토리와 파일 구조가 다름
• docker system prune
- 사용하지 않는 이미지, 컨테이너, 볼륨, 네트워크를 일괄적으로 삭제할 수 있음
docker image load [옵션]
$ docker system prune -a
[옵션]
--all, -a : 사용하지 않는 리소스를 모두 삭제 --force, -f : 강제적으로 삭제
'Docker' 카테고리의 다른 글
Docker 이미지 생성 (0) | 2023.09.19 |
---|---|
Docker의 정의 (0) | 2023.09.19 |