비전공자도 이해할 수 있는 Docker 입문/실전 (박재성)
🎈 도커 허브
도커허브란 이미지를 저장, 다운로드 받을 수 있게 해주는 저장소 역할을 하는 서비스이다.
개인이 직접 업로드한 이미지뿐 아니라, 다른 사람이 공개한 이미지를 다운받을 수도 있다.
https://www.docker.com/products/docker-hub/
📯 이미지
1️⃣ 이미지 다운로드
✅ docker pull 명령어를 통해 도커 허브에서 이미지를 다운받을 수 있다.
docker pull 이미지명
docker pull 이미지명:태그명
- 이미지명만 작성하는 경우 태그가 latest인 이미지를 다운받아준다.
- 태그명을 추가해서 원하는 버전의 이미지를 다운받을 수 있다.
docker pull nginx
✨ 보통 컨테이너 생성과 동시에 자동으로 이미지를 다운받기 때문에 자주 사용되지 않는 명령어라고 한다.
2️⃣ 이미지 조회
✅ docker image ls 명령어를 통해 현재 다운로드 받은 이미지를 확인할 수 있다.
docker image ls
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
nginx | latest | 4e1b6bae1e48 | 45 hours ago |
- CREATED는 도커 허브에 업로드된 시간을 의미한다.
3️⃣ 이미지 삭제
✅ docker image rm 명령어를 통해 이미지를 삭제할 수 있다.
docker image rm IMAGEID
- 중복되지 않는 범위내에서 아이디의 일부만 입력해도 삭제가 가능하다.
- 이미지는 컨테이너에서 사용하고 있으면 삭제가 불가능하다.
✅ 컨테이너에서 사용하고 있는 이미지를 삭제하는 경우 -f 옵션을 사용하면 삭제가 가능하다.
docker image rm -f IMAGEID
- 실행중인 컨테이너에서 사용하고 있는 이미지는 삭제가 불가능하다.
- 삭제하기 위해서는 컨테이너를 중지하고 삭제가 가능하다.
✨ 컨테이너에서 사용하는 것과 실행중인 컨테이너는 구분할 필요가 있다.
✅ 컨테이너에서 사용하고 있지 않은 모든 이미지를 삭제할 수 있다.
docker image rm $(docker images -q)
- docker images -q : 현재 로컬에 저장된 모든 이미지의 아이디만을 반환해준다.
✅ 실행중이지 않은 컨테이너에서 사용하고 있는 이미지 포함 모든 이미지를 삭제한다.
docker image rm -f $(docker images -q)
- 실행중인 컨테이너에서 사용하고 있는 이미지는 삭제 불가능하다.
🛒 컨테이너
1️⃣ 컨테이너 생성
✅ docker create 명령어를 통해 컨테이너를 생성할 수 있다.
docker create 이미지명
- create 뒤에오는 이미지명를 바탕으로 컨테이너를 생성시켜 준다.
- 로컬에서 이미지가 존재하는 경우 로컬의 이미지를 사용한다.
- 로컬에 이미지가 존재하지 않는 경우 도커허브에서 자동으로 다운받는다.
- 이미지명에 해당하는 이미지가 존재하지 않는 경우 생성할 수 없다.
2️⃣ 컨테이너 실행
✅ docker start 명령어를 통해 컨테이너를 실행시킬 수 있다.
docker start [컨테이너ID | 컨테이너이름]
3️⃣ 컨테이너 중지
✅ docker stop 명령어를 통해 컨테이너를 중지시킬 수 있다.
docker stop [컨테이너ID | 컨테이너이름]
- 일반적으로 중지시킬 때 사용하는 것으로 컨테이너의 정상 중지 시 사용하면 된다.
- 컨테이너가 하던 작업을 정리할 수 있도록 유예기간을 준다.
✅ docker kill을 통해 컨테이너를 강제로 종료할 수 있다.
docker kill [컨테이너ID | 컨테이너이름]
- 작업에 대한 정리 없이 즉시 중지시킨다.
- 일반적인 중지 방법이 아니기 때문에 docker stop을 사용할 수 없는 경우에만 사용하자.
4️⃣ 컨테이너 삭제
✅ docker rm 명령어를 통해 컨테이너를 삭제시킬 수 있다.
docker rm [컨테이너ID | 컨테이너이름]
✅ -f 옵션으로 실행중인 컨테이너를 삭제할 수 있다.
docker rm -f [컨테이너ID | 컨테이너이름]
✅ 다음 명령어를 통해 중지된 모든 컨테이너를 삭제할 수 있다.
docker rm $(docker ps -qa)
- docker ps -qa : 현재 설치된 모든 컨테이너의 아이디만 반환한다.
5️⃣ 컨테이너 생성 및 시작을 한번에
✅ docker run 명령어를 통해서 컨테이너를 생성하고 실행도 할 수 있다.
docker run 이미지명
- 다른 옵션을 추가하지 않으면 포그라운드에서 실행된다.
- 이 명령어는 생성 + 시작 이기 때문에 실행 마다 매번 새로운 컨테이너가 생성된다.
- 이미 생성한 컨테이너를 실행할 때는 start를 사용하자.
✅ -d 옵션을 사용하면 백그라운드에서 실행할 수 있다.
docker run -d 이미지명
- 이미지명이 항상 가장 뒤에 와야 한다.
✅ --name 옵션을 사용하면 컨테이너에 이름을 지정할 수 있다.
docker run --name 이름 이미지명
✅ -p 옵션을 사용해서 호스트 컴퓨터와 컨테이너 컴퓨터간의 포트포워딩을 설정할 설정할 수 있다.
docker run -p [호스트포트]:[컨테이너포트] 이미지명
- 80번 포트를 사용하고 있는 nginx 컨테이너가 존재한다고 하자.
- 이때, 호스트 컴퓨터에서 80번 포트로 접속하는 경우 nginx 포트로 접속하는 것이 아니라 호스트 컴퓨터의 80번 포트로 접속하는 것이다.
- 포트포워딩을 설정하면 설정한 호스트포트로 접속하는 경우 컨테이너의 포트로 연결해주는 기능이다.
6️⃣ 컨테이너 조회
✅ docker ps 명령어를 통해 컨테이너를 조회할 수 있다.
docker ps
- 현재 실행중인 컨테이너만 조회 가능하다.
✅ -a 옵션을 통해 설치된 모든 컨테이너를 조회할 수 있다.
docker ps -a
- 실행 중 뿐 아니라 중지 상태인 컨테이너까지 조회할 수 있다.
7️⃣ 컨테이너 진입
✅ docker exec 명령어를 통해 컨테이너에 접속할 수 있다.
docker exec -it 컨테이너ID bash
- 컨테이너에 접속하고 bash로 접속한다.
- exec는 컨테이너의 프로그램을 실행시켜주는 명령어인데, bash 프로그램을 실행시켜서 컨테이너에 직접 명령어를 입력가능하게 해주는 것이다.
8️⃣ 컨테이너 로그
✅ docker logs 명령어를 통해 컨테이너의 로그를 확인할 수 있다.
docker logs [컨테이너ID | 컨테이너이름]
- 중지 된 컨테이너의 로그도 확인이 가능하다.
✅ --tail 줄수 옵션을 통해 해당 줄수만큼의 로그를 확인할 수 있다.
docker logs --tail 줄수 [컨테이너ID | 컨테이너이름]
- 가장 최신의 로그에서 해당 줄수만큼 보여준다.
✅ -f 옵션을 통해 실시간으로 생성되는 로그를 확인할 수 있다.
docker logs -f [컨테이너ID | 컨테이너이름]
- 기존 로그를 출력하고 이후에는 실시간으로 생성되는 로그도 보여준다.
✅ 아래 명령어를 통해 기존 로그는 생략하고 실시간으로 생성되는 로그만 확인 가능하다.
docker logs --tail 0 -f [컨테이너ID | 컨테이너이름]
- 줄수를 0으로 해서 기존건 안보고 실시간으로 쌓이는 것만 확인 가능하다.
'Docker' 카테고리의 다른 글
[Docker] Dockerfile 만들어보기 (0) | 2025.05.04 |
---|---|
[Docker] 도커 볼륨 (0) | 2025.04.26 |