. jar 파일과 같이 실행되지 않는 os이다. 라이브러리와 기타 종속성에 대한 정의, 실행되는 코드가 포함되어 있다.
- 애플리케이션과 관련된 모든 파일과 라이브러리를 포함하고 있기 때문에 다른 환경에서도 동일한 애플리케이션을 실행할 수 있다.
- 이미지가 한 번 생성되면 변경할 수 없다.
- 도커 이미지는 필요한 파일만 포함하고 있기 때문에 용량이 적다. 만약 이미지를 변경해야 한다면 새로운 이미지를 생성해야 한다.
- Registry/ dockerhub에 저장되어 있는 image를 pull 하고 Container를 run 하게 된다.
- Dockerfile로 image를 build 하고 dockerhub에 push를 할 수도 있다. 또는 자신의 Container에서 run 할 수 있다.
cd ~
mkdir {하위 디렉토리}
cd {하위 디렉토리}
vi {테스트 파일}
vi Dockerfile
docker build -t [이미지 이름]:[태그] . # 점(.)은 현재 티렉토리를 나타내며, Dockerfile이 위치한 경로를 지정
postgres - Official Image | Docker Hub
Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/postgres/README.md. See also docker/hub-feedback#238 and d
hub.docker.com
예시로 docker 환경에서 postgreSQL을 실행시켜 보자.
# 사용하고 싶은 image를 가져온다.
docker pull [options] name:[tag]
# 실제로 저장된 image를 확인해본다.
docker images
# image에 대한 여러 정보를 확인해보고 싶다면
docker image inspect [image 이름]
# docker run 명령어를 사용하여 이미지를 기반으로 컨테이너를 생성하는 경우, 해당 명령어에 따라 컨테이너가 생성되고 실행
docker run --name postgres -e POSTGRES_PASSWORD={비밀번호 설정} -d -p 5432:5432 postgres -v my_postgres_data:/var/lib/postgresql/data postgres
# --name : 컨테이너의 이름을 지정
# -e POSTGRES_PASSWORD=: 슈퍼유저 비밀번호를 설정
# -d: 컨테이너를 백그라운드에서 실행
# -p 5432:5432: 호스트의 5432 포트를 컨테이너의 5432 포트에 연결
# -v : 컨테이너가 중지되거나 삭제되더라도 데이터를 유지할 수 있게 Volume을 사용
docker exec -it my_postgres psql -U postgres
# docker exec : 이미 실행 중인 컨테이너 내에서 명령을 실행
# -it : 명령어가 실행된 후, 콘솔에서 사용자 입력을 받을 수 있다
# -i(interacive) : 표준 입력을 활성화하여 사용자가 입력할 수 있도록 한다
# -t(tty) : 가상 터미널을 활성화해서 사용자와 상호작용하는 명령어를 실행할 수 있다
# psql : 데이터베이스와 상호작용할 수 있는 도구
# -U postgres : psql에 접속할 때 사용할 데이터베이스 사용자 이름을 지정, 기본 슈퍼 유저는 postgres이다.
Container란?
Docker image를 실행한 인스턴스로, image를 실행하여 생성되며 해당 image를 기반으로 애플리케이션이 실제로 작동하는 환경을 제공해서 애플리케이션을 개발하고 테스트하며, 배포도 할 수 있다.
image와 Container는 1 : N의 관계로 하나의 image에 여러개의 Container를 생성할 수 있다.
# 현재 실행 중인 Container
docker top [이미지 이름]
# 컨테이너에 매핑된 포트 조회
docker port [이미지 이름]
# 컨테이너 리소스 통계 출력
docker stats [이미지 이름]
# 컨테이너 내부 확인
docker inspect [이미지 이름]
# 도커 상태 확인
docker stats
# 도커 프로세스 이벤트 확인
docker events
# 도커 상태 관리
docker stop [이미지 이름]
docker ps -a
docker start [이미지 이름]
docker pause [이미지 이름]
docker unpause [이미지 이름]
docker ps -a
# 현재 실행중인 컨테이너 확인
docker container ls
docker container ls -a # 전체 컨테이너 확인
# 필요없는 컨테이너, 태그가 붙지 않은(dangling) 이미지 정리
docker container prune
y
docker image prune
y
docker system prune # 이미지, 컨테이너, 볼륨, 네트워크 등 모두 정리
이후에는 CI/CD에 대해 더 알아보자 🖐️🖐️
'🔥스파르타 TIL (Docker)' 카테고리의 다른 글
Dockerfile과 docker-compose.yml (0) | 2025.03.12 |
---|---|
Docker 제대로 시작하기 (0) | 2025.02.27 |
CI/CD와 Docker 란? (1) | 2025.02.10 |