docker [서브 명령][서브 명령의 옵션]
- run : 배포/실행
- stop: 실행 중인 컨테이너 정지
- start: 정지 중인 컨테이너 싫애
- rm: 배포한 컨테이너 삭제
- exec: 실행중인 컨테이너에 명령어 실행
- logs: 컨테이너의 로그(표준 출력/ 표준 에러) 표시
- inspect: 컨테이너/이미지의 상세정보 표시
- images: Docker Daemon에 있는 이미지 목록 표시
-> image ls 와 같은 동작- rmi: Docker 이미지 삭제
-> image rm 과 같은 동작
- commit: 컨테이너의 상태를 새로운 이미지로 생성
- tag: 기존 이미지의 새로운 태그(이름) 부여
- save: 이미지를 파일로 내보내기
- load: 이미지 파일을 (다른)Daemon으로 적재하기
docker run [옵션] 이미지(:태그) [명령][인수...]
- [옵션] : docker run 서브 명령의 옵션
이미지가 전개 된 후
- [명령] : 이미지에서 사용 가능한 명령
- [인수] : 명령에 대한 인수
특정한 이미지 선택: 태그
docker run ubuntu:20.04 cat /etc/lsb-release
docker search [이미지 이름]
docker ps
- container ls 와 같은 동작
docker run -d -P nginx
- -d: Daemon으로 실행(백그라운드 실행)
- -P: Expose 된 Port를 개방(호스트에서 접근 가능)
- 다음과 같이 호스트의 32768 포트가 NGINX 컨테이너의 80 포트로 포트포워딩됨을 확인할 수 있음
-p 옵션
- -p 8080:80
- 호스트의 8080 포트를 컨테이너의 80 포트로 포트포워딩
netstat -natp
- Network 정보 확인
- -t: TCP 프로토콜 확인
- -p: 프로세스 정보 확인
docker stop [옵션] 컨테이너 [컨테이너 ...]
- [옵션]: stop 서브 명령의 옵션
- 컨테이너: 컨테이너 이름 혹은 HASH ID
docker ps -a
- -a: 실행중이지 않지만, 존재하는 모든 컨테이너 목록 표시
docker start 컨테이너
- 컨테이너: 컨테이너 이름 또는 HASH ID
docker rm [옵션] 컨테이너 [컨테이너 ...]
- [옵션] : rm 서브 명령의 옵션
- -f: 실행중인 컨테이너도 강제 중지 후 제거하고 싶을때
docker exec [옵션] 컨테이너 명령 [인수]
- [옵션]: 서브 명령 exec 옵션
- -t: 터미널 열기
- -i: 상호작용(표준 입출력) 허용
- 컨테이너: 컨테이너 이름 혹은 HASH ID
- 명령: 컨테이너 내에 있는 명령어
- [인수]: 명령의 인수
MD5SUM
- 파일을 다운받거나, 이동하거나, 복사한 후에 원본파일과 동일한 파일인지 확인하는 목적으로 쓰이는 명령어
- docker exec df9d048440e2 md5sum /etc/nginx/nginx.conf
- docker exec -it df9d048440e2 /bin/bash
docker logs [옵션] 컨테이너
- [옵션]: 서브 명령 logs의 옵션
- -f: 향후 출력되는 로그를 게속 추적(종료하지 않고 새로운 로그를 대기)
- 컨테이너: 컨테이너의 이름 또는 HASH ID
docker inspect [옵션] 대상 [대상...]
- [옵션]: 서브 명령 inspect의 옵션
- 대상: 컨테이너의 이름 혹은 HASH ID / 볼륨의 이름 또는 HASH ID
Docker Hub의 익명, 무료 사용자에 대해
- 익명(IP기반)
-> 100개 컨테이너 이미지/6시간- 무료 사용자(계정 기반)
-> 200개 컨테이너 이미지/6시간
- 중간에 Proxy 서버를 두어 Docker Hub로의 요청 회수 감소
/etc/docker/registry/cofing.yml
proxy: remoteurl: https://registry-1.docker.io //Docker Hub 계정이 있는 경우 username: [username] passworkd: [password]
docker run -d \ -v /etc/docker/registry:/etc/docker/registry \ -p 5000:5000 \ --name registry \ registry:2
docker pull localhost:5000/ubuntu:latest
localhost:5000
- Docker HUb를 사용하지 않고, 레지스트리를 이용하고 싶을 때
- 매번 localhost:5000 을 쓰기 어려움
- Proxy 서버에 있을 경우 받아오고 아닐경우 Docker Hub에서 받아오게 하는 방법
/etc/docker/daemon.json
{ ... (생략) //서버 추가 "registry-mirrors": ["http://localhost:5000"] }
systemctl restart docker
docker run -d \ -v /etc/docker/registry:/etc/docker/registry \ -p 5000:5000 \ --name registry \ registry:2
docker pull ubuntu:20.04
- 먼저 daemon.json에 기술한 regisry-mirrors에 있는 서버들에 차례대로 시도한 후, Docker Hub에 접근
- 원래는 자기 코팅된 혹은 원판 형태의 장치를 의미
-> 물리적인 저장장치
- 파일 시스템을 갖춘(갖출 수 있는) 저장 장치
- Direct Attached Storage
- 컴퓨터 시스템에 직접 연결된 저장장치
- SAN: Storage Area Network
- NAS: Network Attached Storage
소프트웨어적/물리적으로 구성
- 여러개의 물리적 블록 장치
-> 하나의 볼륨으로 인식할 수 있도록 해줌- 물리적 장치의 고장에 대비
-> 데이터 보호를 위해 데이터 중복 기법을 가지고 있음RAID 종류
- RAID 0
->- RAID 1
->- RAID 5
->
운영체제 수준에서 구성
- 여러개의 물리 볼륨을 묶어 논리적으로 관리
- 볼륨을 두 단계로 나눔
-> 논리적 레이어
-> 물리적 레이어LVM의 특징
- 시스템 전체의 중단 없이 온라인(연결) 상태에서 크기 조정 가능
- 디스크의 불연속 공간 사용(RAID 개념)
-> 여러 물리적 디스크(볼륨)에 걸쳐 사용
논리적인 저장 단위
- 정보 저장의 논리적 관점
관련 정보 자료들의 집합
- 이를 부르는 이름 = 파일 이름
- 파일을 관리하기 위한 각종 정보: 파일 속성/메타 데이터
-> 이름, 유형, 위치, 크기, 권한, 소유자, 관련 시간
파일에 관련된 접근 기법 제공
- 운영체제 수준에서 제공
파일에 관한 정보를 제공: 계층적 디렉토리 구조
- 파일, 파일 메타데이터, 디렉토리 정보 등을 관리
/var/lib/docker
- 이 경로를 root 로 사용함
- 컨테이너에 대한 모든 정보와 디스크, 이미지, 볼륨이 관리되는 위치
- 데이터 중복을 줄이기 위해 이러한 구조를 사용
- 호스트 시스템 root 와 Docker의 root 분리
다른 파일 시스템으로 구성
- 호스트 시스템은 큰 변화가 없ㅇ름
- Docker는 Application의 동작으로 용량 등에 영향을 많이 미침
다른 블록 장치로 구성
- I/O 연산이 호스트 시스템에 영향을 주지 않게 하기 위함
한번 수신한 Image는 삭제하지 않음
- 정기적으로 사용하지 않는 이미지 제거 필요(CI/CD 운영시)
컨테이너의 관리
- 종료된 컨테이너는 기본적으로 삭제 안됨
- 실행 시 --rm 옵션으로 자동삭제 되도록 하거나
- 정기적으로 불필요한 컨테이너 제거되도록 해줘야 함
아주 유용한 정보네요!