Ruff! Ruff!
[오픈소스] - Docker 사용법 본문
< Docker 명령어 활용>
도커 이미지 관련 명령어 도식화
도커 컨테이너 관련 명령어 도식화
1. Docker 이미지 명령어 구성
- 이미지 검색
docker search 이미지명[:TAG]
-> 도커 허브에서 이미지 검색해보기
-> 보통 ubuntu, centos, redis 등 os나 프로그램 이름을 가진 이미지가 공식 이미지, 나머지는 사용자들이 만들어서 공개한 이미지
- 도커 이미지 내려받기
docker [image] pull [options] 이미지명[:tag]
-> 이미지의 기본 형식 <네임스페이스>/<이미지명>:<태그> : 도커 허브의 라이브러리가 기본 네임스페이스
-> 이미지명 뒤에 :tag 를 포함하지 않으면 자동으로 latest로 지정
-> 다운로드한 이미지는 여러 레이어로 구성 + 각각의 레이어는 해시 값으로 구분
-> 다이제스트 값은 docker 레지스트리에서 관리하는 이미지 고유 식별값
* 주의사항 : 웹 주소 url에서 http://를 붙이지 않고 이미지 주소 작성해야함
- 도커 이미지 목록 출력하기
docker image ls
docker images
-> 다운로드한 이미지 정보 조회
-> 이미지 이름을 설정하면 이름은 같지만 태그가 다른 이미지가 출력됨
- 도커 이미지 세부 정보 조회하기
docker image inspect [options] 이미지명[:tag]
-> 구성
- “Id”: 이미지 ID
- “Created”: 생성일
- “DockerVersion”: Docker 버전
- “Architecture”: CPU 아키텍처
- “RootFS”: 이미지 다이제스트 정보
- “GraphDriver”: 이미지 레이어 저장 정보
- 도커 이미지 히스토리 조회하기
docker image history [options] 이미지명[:tag]
-> 이미지 구성 레이어의 수행 명령, 크기 등 조회 (위쪽 내용이 최신 변경 내역)
-> image != Layer
-> 이미지로 다운하면 중복되는 레이어까지 다운받게 되어 저장공간 효율성 떨어짐 -> 레이어로 다운하면 중복되는 건 서로 공유 -> 공간 효율 굿
- 이미지 태그 설정하기
docker tag 원본이미지명[:tag] 참조이미지명[:tag]
-> 도커 허브와 같은 레지스트리에 업로드 하는 경우 저장소명과 함께 태그 지정
- 도커 이미지 삭제하기
docker image rm [옵션] {이미지명[:tag] | 이미지ID}
-> 컨테이너가 실행 중인 이미지는 삭제 불가 -> 구동 중인 컨테이너를 멈추고 삭제한 이후 이미지 삭제 가능
- 모든 도커 이미지 삭제하기
docker image prune
-> 로컬에 다운로드한 이미지 중 하나 이상의 컨테이너가 연결되지 않은 모든 이미지를 제거
-> Dangling 이미지 모두 삭제 (태그가 붙지 않은 이미지/ 어떤 컨테이너도 참조하지 않는 이미지)
-> "-a" 옵션을 이용하면 사용 중이 아닌 모든 이미지가 제거
2. Docker 로그인
- 도커 로그인 하기
docker login
-> 호스트에서 도커 허브에 이미지를 업로드하기 위해서는 로그인 필요
-> 암호화 알고리즘이 아닌 베이스64 인코딩을 통한 암호 키값 저장. 디코딩이 가능하므로 노출 주의해야함
- 도커 로그아웃 하기
docker logout
-> 도커 허브 레지스트리로부터 로그아웃
3. Docker 컨테이너 명령어
- 컨테이너 목록 확인하기
docker container ls
-> 컨테이너 목록을 출력함
-> "-a"옵션을 사용하면 정지된 컨테이너까지 모두 출력
-> 옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력
- 컨테이너 실행하기
docker [container] run [옵션] 이미지명 [실행명령]
-> 이미지를 기반으로 컨테이너 실행
-> [pull] + create + start + [command]
- 컨테이너 생성하기
docker [container] create [옵션] 이미지명
-> 이미지 기반으로 컨테이너 생성
- 컨테이너 시작하기
docker [container] start [옵션] 컨테이너명
-> 이미 생성한 컨테이너를 시작
- 컨테이너 접속하기
docker [container] attach [옵션] 컨테이너명
-> 동작 중인 컨테이너에 접속
-> bash 쉘에서 exit 또는 ctrl+D 를 입력하면 컨테이너가 정지됨
- 컨테이너 삭제하기
docker [container] rm [옵션] 컨테이너명
-> 컨테이너를 삭제
-> "-f"옵션을 통해 동작 중인 컨테이너도 삭제 가능 (SIGKILL)
- 컨테이너를 정지할 때 함께 삭제하기
docker [container] run --rm [옵션] 이미지명
-> 정지된 컨테이너를 디스크에 유지할 필요 없는 경우
-> docker run --rm 은 실행이 끝나면 자동으로 파기
- 실행 중이지 않은 모든 컨테이너 파기하기
docker container prune [옵션]
-> 실행 중이 아닌 모든 컨테이너 일괄 삭제
** run / start 차이
-> run : 새로운 컨테이너를 이미지로부터 만듦
-> start | stop : 기존에 실행되었던 컨테이너를 중지시키거나 실행시킴
- 컨테이너 정지하기
docker [container] stop 컨테이너명
-> 실행 중인 컨테이너를 정지
-> SIGKILL 시그널 전송해서 프로세스를 죽인다
- 컨테이너 재시작
docker [container] restart 컨테이너명
-> 기존 프로세스를 정지하고 새로운 컨테이너 프로세스를 시작
-> 컨테이너 동작에는 영향을 주지 않고, 호스트의 PID만 변경함
- 외부에서 컨테이너 안의 명령 실행
docker [container] exec 컨테이너명 실행명령
-> 외부에서 컨테이너 안의 명령 실행하기
-> 컨테이너가 실행되고 있는 상태에서만 사용할 수 있으며 정지된 상태에서는 사용 불가
-> 패키지를 설치하거나 각종 daemon을 실행할 때 사용
- 컨테이너 표준 출력 호스트에 연결하기
docker [container] logs 컨테이너명
-> 현재 실행 중인 특정 도커 컨테이너의 출력 내용을 확인
-> "-f" 옵션 사용시 새로 출력되는 내용 계속 출력
- 컨테이너와 호스트 간 파일 복사하기
docker [container] cp 컨테이너명:원본파일 대상파일
-> 실행/ 정지 상태의 컨테이너와 호스트 간에 파일을 복사하기 위한 명령
- 컨테이너 사용 현황 확인하기
docker [container] stats 컨테이너명
-> 컨테이너들의 시스템 리소스 사용 현황 확인
- 컨테이너에서 변경된 파일 확인
docker [container] diff 컨테이너명
-> 컨테이너가 실행되면서 변경된 파일 및 디렉토리 목록을 출력
-> A: 추가된 파일 / C: 변경된 파일 / D: 삭제된 파일
-> 컨테이너를 생성한 이미지 내용 기준 비교
- 컨테이너 세부 정보 확인
docker [container] inspect 컨테이너명
-> 컨테이너의 세부 정보를 출력 (할당 ip주소 등)
- 컨테이너의 변경사항을 이미지로 생성
docker [container] commit [옵션] 컨테이너명 이미지명[:태그]
-> "-a" : Author
-> "-m" : commit 메세지
'CS' 카테고리의 다른 글
[오픈소스] - CI 환경 구축 (0) | 2024.10.22 |
---|---|
[오픈소스] - Docker를 활용한 개발 (1) | 2024.10.15 |
[오픈소스] - 컨테이너와 도커 (1) | 2024.10.01 |
[오픈소스] - GitHub을 활용한 협업방법 (0) | 2024.09.24 |
[오픈소스] - Git을 활용한 소스코드 관리 (1) | 2024.09.17 |