1. 이미지 다운로드
docker pull [이미지명]
2. 이미지 다운로드 확인
docker image ls
3. 이미지들은 어디에서 다운로드 받는 것일까? (Docker hub)
Docker Hub Container Image Library | App Containerization
Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.
hub.docker.com
이전에 다운받았던 nginx 를 검색해본다.
docker hub -> 이미지를 저장 , 다운받을 수 있는 저장소 역할을 함
4. 이미지의 버전(tags)
이미지의 특정 버전을 나타내는 것을 태그명이라고함.
만약 특정 버전의 이미지를 다운로드 받고싶다면?
docker pull nginx:[태그명]
위를 예시로 들면 아래와 같다.
docker pull nginx:stable-perl
태그가 없는 경우에는 latest 를 다운받음(최신이미지)
5. 이미지의 삭제
docker image rm [IMAGE ID]
여기서 말하는 IMAGE_ID 는 아래에서 이미지 조회 시 확인되는 IMAGE_ID 이다. 전체를 입력할 필요 없이 일부만 입력해도 삭제 가능
6. 이미지의 삭제(에러)
설치되어있던 nginx를 삭제하고자하니 아래와 같은 에러가 발생했다.
정지되어 있는 5f2dbcf596c8 컨테이너에서 해당 이미지를 사용되고 있다는 뜻임
이전 강의에서 컨테이너를 띄워서 nginx 이미지를 실행후 멈춰놨는데, 그거때문임
rm 명령어는 컨테이너에서 사용하고 있지 않는 이미지만 삭제하는 명령어 이기 때문에 컨테이너에서 사용중인 이미지는 삭제할 수 없어 해당 아레거 발생하는 것
그럴 경우에는 강제로 삭제하게끔 아래와 같이 명령어를 작성하면된다.
docker image rm -f [IMAGE_ID]
삭제 후 확인해보면 정상적으로 삭제된 것이 확인된다.
-f 는 중단된 컨테이너의 이미지는 삭제해줌. 하지만, 실행중인 컨테이너의 이미지는 삭제되지 않음
그럴 경우에는 컨테이너를 중단시키고 이미지를 삭제해야함
이 명령어는 컨테이너에서 사용하고 있지 않은 전체 이미지를 삭제하는 명령어
docker image rm ${docker images -q)
docker image rm -f ${docker images -q)
7. 컨테이너 생성/실행 1
docker create nginx
아래의 명령어로 생성된 모든 컨테이너를 확인한다.
docker ps -a
현재 생성만 되어있는거고, 실행은 하지 않은 상황
실행 시키기 위해서는 아래의 명령어를 사용한다. 이미지와 같이 ID는 일부만 입력해도됨
docker start [CONTAINER_ID]
컨테이너 실행 후 상태를 확인해봤다.
생성만 했을 때는 Created 였고, 현재는 Up으로 변경된것을 확인할 수 있다.
이는 실행된지 52초 됐다는 뜻임
그러면 아래와 같이 명령어를 작성해본다.
우리는 mysql이라는 이미지를 다운로드 받지않았지만, 정상적으로 작동된다.
docker create mysql
이렇게 작동하는 이유는
일단 우리 컴퓨터에 해당 이미지가 존재하지는지 확인해보고, 없으면 DockerHub에서 해당 이미지를 다운로드받는 것을 자동으로 실행하기 때문
이미지를 수동으로 받지 않아도, DockerHub에서 찾아서 다운받고 컨테이너를 생성시킨다.
8. 컨테이너 생성/실행 2
현업에서는 create -> start 를 순차적으로 진행하는 것보다
한번에 실행하는 경우가 많음
그 명령어는 아래와 같다.
docker run 이미지
이 명령어를 사용하면, 이미지를 다운받고, 컨테이너를 생성 후 실행까지 한다.
이렇게되면, 터미널에서 더이상 명령어를 작성할수 없게되는데 이는 포그라운드 이기때문이다.
포그라운드(forground)
내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력중인 상태 -> 다른 프로그램을 조작할 수없음
실시간으로 어떤 로그들이 찍히는지 확인이 가능하다.
백그라운드(background)
내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태를 의미
로그를 실시간으로 확인할 수없음 , 다른 명령어를 추가적으로 입력할 수 있음
-d 옵션을 추가해서 실행하면 다른 명령어를 추가적으로 작성할 수 있다.
백그라운드에서 실행하기때문
❯ docker run -d nginx
9. 컨테이너 생성/실행 - 컨테이너에 이름을 붙여서 생성&실행
docker run -d --name [이름] nginx
나는 "my-web-server"라는 이름으로 생성했다
ps로 확인해 보면 정상적으로 이름이 적용된게 확인된다.
10. 컨테이너 생성/실행
docker run -d nginx
80번 포트에서 실행된다
로컬 호스트로 확인해봤는데, 연결이 안됐다고 뜬다.
이는 호스트 컴퓨터의 네트워크와 컨테이너의 네트워크가 분리되어 있어서 외부에서 접근할 수 없게되는거다.
이거를 연결해서 컨테이너에 접근할 수 있게 만들어줘야함
docker run -d -p [호스트포트]:[컨테이너 포트] 이미지명:[:태그명]
외부에서 4000번 포트로 요청을 보내면 컨테이너의 80번 포트와 연결시키겠다라는 뜻
시크릿모드로 4000번 포트에 접속해본다.
11. 컨테이너 조회 / 중지 / 삭제
1. 실행중인 컨테이너만 조회
docker ps
2. 실행& 중단 된 컨테이너만 조회
docker ps -a
3. 중지
1) 정상 중지-안전하게 중지
docker stop [컨테이너 ID]
2) 강제 중지- 파일 손상가능성
docker kill [컨테이너 ID]
4. 삭제
1) 실행하지 않은 컨테이너 삭제 시
docker rm [컨테이너 ID]
2) 컨테이너 중지하지 않은 경우에는 강제로 삭제
docker rm -f [컨테이너ID]
3) 중지되어 있는 모든 컨테이너를 한번에 지울 수 있는 명령어
docker rm $(docker ps -qa)
12. 컨테이너 로그 확인
docker logs [컨테이너ID]
로그 끝에서 10줄만 조회
docker logs --tail 10 [컨테이너id]
실시간으로 생성되는 로그 조회
docker logs -f [컨테이너ID]
지금 시점으로 실시간으로 쌓이는 로그 조회
docker logs --tail 0 -f [컨테이너ID]
12. 실행중인 컨테이너 내부에 접속하기 (exec-it)
docker exec -it [컨테이너ID] bash
내부에서 나와서 호스트 환경으로 이동
exit
'Docker' 카테고리의 다른 글
Next.js 를 Docker로 배포하기 (1) | 2025.03.22 |
---|---|
DockerFile? (0) | 2025.03.22 |
Docker Volume (도커 볼륨) /MySQL로 볼륨 사용해보기 (0) | 2025.03.22 |
Docker 설치 (0) | 2025.03.15 |
Docker , Container, Image 란? (0) | 2025.03.15 |