- 먼저 docker 사이트에 들어가서 회원가입
- 터미널에서 docker login
docker login
- 접속시 유의할 점은 email로 가입 했더라도 커맨드에서 로그인 할 때 닉네임을 적어줘야함
- 로그아웃
docker logout
1. 다운받을 ubuntu 이미지 검색
- 예시로 ubuntu image
docker search ubuntu
- ubuntu 상위5개 검색
docker search --limit=5 ubuntu
2. docker 이미지 다운로드
- :10.04 버전을 제외하면 latest(최신버전) 다운로드
docker pull ubuntu:20.10
3. 다운로드 받은 이미지 목록 확인
- 이미지 내용 전체 리스트 확인
docker images
- 이미지 ID만 리스트로 확인
docker images -q
4. 다운받은 이미지 삭제하기
- 특정 이미지 삭제하기
docker rmi {IMAGE ID or REPOSITORY NAME} docker image rm {IMAGE ID or REPOSITORY NAME}
- 이미지 전체 삭제
docker rmi -f $(docker images -q)
5. 이미지 세부 정보
docker inspect {IMAGE NAME}
- 앞서 다운받은 images는 container로 만들어야 실행 가능
1. 컨테이너 생성
- 다운받은 ubuntu 이미지로 컨테이너 생성
docker create ubuntu
- 컨테이너 생성 시 이름 부여(삭제할 때 사용되는 이름)
docker create --name test_ubuntu ubuntu
2. 생선된 컨테이너 확인
- 실행중인 컨테이너 확인
docker ps
- 생성된 컨테이너 전체 확인
docker ps -a
- 컨테이너의 ID만 확인
docker ps -a -q
3. 생성된 컨테이너 실행
docker start {CONTAINER NAME}
- 실행 후 docker ps로 실행 컨테이너를 확인하려 해도 보이지 않는다. 이유는 실행 되자마자 중지되기 때문. 컨테이너 실행 후 유지하는 명령어들이 있어야함
4. 컨테이너 종료
- 백그라운드로 실행한 컨테이너 중지
- 중지된 컨테이너는 start로 재실행 가능
docker stop {CONTAINER NAME}
- 실행 중인 컨테이너 전체 종료
docker stop $(docker ps -a -q)
5. 컨테이너 삭제
- 특정 컨테이너 삭제
docker rm {CONTAINER ID or NAME}
- 컨테이너 전체 삭제
docker rm $(docker ps -a -q)
- 여기서 name은 컨테이너 리스트 확인 중 나오는 NAMES를 말함
- 실행 중인 컨테이너는 삭제되지 않기에 종료 후 삭제
6. 컨테이너 파일 이동
- 컨테이너에서 현재 디렉토리로 파일 가져오기
docker cp {CONTAINER NAME}:/etc/test/conf/default.conf ./
- 파일 컨테이너에 넣기(test_default.conf -> default.conf 덮어씌움)
docker cp ./test_default.conf {CONTAINER NAME}:/etc/test/conf/default.conf
7. 컨테이너 변경사항 적용한 이미지 생성
- 컨테이너 에서 작업한 내용을 포함시켜 새로운 이미지로 생성
docker commit -m "message" {IMAGE NAME} {NEW IMAGE NAME}
8. 기존 이미지와 변경 사항 비교
- 컨테이너가 실행 되면서 기존의 이미지와 비교하여 변경된 파일 출력(추가, 수정, 삭제 모두 출력됨)
docker diff {CONTAINER NAME}
9. 컨테이너 세부 정보 확인
docker inspect {CONTAINER NAME}
- docker run 이란.. 새로운 이미지를 컨테이너로 만들고 실행까지 즉, docker create & start 라고 생각하면 이해하기 쉽다.
| 옵션 | 설명 |
|---|---|
| -i | 컨테이너 입력을 열어 놓는 옵션 |
| -t | 가상 터미널을 할당하는 옵션(주로 -it로 함께 사용) |
| -p | 호스트와 컨테이너 포트 연결 |
| -d | 컨테이너를 백그라운드에서 실행 |
| -v | 호스트와 컨테이너 디렉토리 연결 |
| --rm | 컨테이너 종료시 자동으로 컨테이너 삭제 |
| --name | 컨테이너 이름 설정 |
1. docker run 예시
- ubuntu 이미지를 기반으로 test_ubuntu라는 이름으로 컨테이너 생성 후, ubuntu 내로 들어가서 터미널로 명령어 칠 수 있는 환경 생성, exit로 컨테이너에서 나올 수 있고, 컨테이너 종료시 삭제
docker run -it --rm --name test_ubuntu ubuntu
2. 실행중인 컨테이너 사용 리소스 확인
- 종료는 ctrl+c
docker container stats
3. 실행중인 컨테이너에 연결하기
- run에 -it -d 옵션으로 백그라운드 실행
docker run -it -d --name test_ubuntu ubuntu
- 위 컨테이너에 연결하여 명령하기
docker attach test_ubuntu
4. 실행중인 컨테이너 명령 실행
- 컨테이너가 실행 중일 때만 실행 가능
docker exec {CONTAINER_ID} {명령} {인자}
- exec 명령으로 컨테이너 안에 접속하기
docker exec -it test_ubuntu /bin/sh
- exec와 attach의 차이
exec는 해당 컨테이너에 신규 명령을 실행하는 명령어
attach는 컨테이너에 연결한는 명령어
| 명령어 | 설명 |
|---|---|
| docker stop $(docker ps -a -a) | 모든 컨테이너 중지 |
| docker rm $(docker ps -a -q) | 모든 컨테이너 삭제 |
| docker rmi -f $(docker images -q) | 모은 이미지 삭제 |
| docker container prune | 정지된 컨테이너 삭제 |
| docker image prune | 실행중인 컨테이너 image 외의 이미지 삭제 |
| docker system prune | 정지된 컨테이너, 실행중인 컨테이너, 이미지 외의 이미지, 볼륨, 네트워크 삭제 |