일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- mmoe
- 도커 컨테이너
- routing problem
- Sarsa
- 케밥케이스
- on-policy
- 배반사건
- 파스칼케이스
- 카멜케이스
- 강화학습
- 그리드월드
- 몬테카를로 학습
- 확률공리
- off-policy
- 도커 개념
- Metaheuristic
- 코딩스타일
- 헝가리안노테이션
- 딥러닝
- Federated learning
- q learning
- 스네이크케이스
- 큐러닝
- 연합학습
- Docker Image
- Traveling salesman problem
- 유전알고리즘
- multi task learning
- 산업공학
- genetic algorithm
- Today
- Total
SU Library
[Docker초보]Docker 이미지에 대한 정리 본문
지난 포스팅(컨테이너 개념정리)에서 살펴보았던 명령어
docker run -it rockylinux:9 date
는 rockylinux의 9버전 이미지를 실행하고 date라는 명령어를 실행합니다.
이렇게 이미지를 기반으로 실행된 컨테이너들은 서로 독립적인 관계로 서로가 서로에게 영향을 주지 않습니다.
docker ps -a
예를 들면 rockylinux:9 이미지를 기반으로 실행된 8d5386861d9f 컨테이너 내부에서 date 명령어를 삭제하는 작업을 진행하였습니다. 8d5386861d9f에서는 date 명령어를 실행할 수 없는 상황이지만, 0e2fbc94bb2b에서는 date를 여전히 사용할 수 있습니다. 즉, 어떤 컨테이너에서 파일을 삭제해도, 다른 컨테이너에는 영향을 끼치지 않습니다. 이런점이 바로 Docker가 자랑하는 이식성입니다.
현재 로컬에 어떤 도커 이미지가 저장되어 있는지 확인하는 방법으로는
docker images
를 통해
확인할 수 있습니다. 이전의 글들을 통해 도커의 컨테이너 실행시 이미지가 기반이 되고 이 이미지가 존재하지 않을시 TAG을과 레포지토리 이름을 바탕으로 특정 저장소에서부터 내려받는 것을 확인할 수 있습니다. 깃과 동작방식이 유사함을 알 수있는데, 이 저장소들을 Docker Hub(https://hub.docker.com/)라고 부릅니다. 깃처럼 pull명령어를 통해서 다음과 같이 이미지를 다운받을 수 있습니다.
docker pull debian
태그를 명시하지 않을 경우 latest버전이 다운이 됩니다.
우측 컬럼에서 확인할 수 있듯이 이미지의 크기가 적지않음을 확인할 수 있습니다. 해서 종종 이미지를 삭제해야하는 상황이 생기는데, 주의사항이 삭제하기 전 해당 이미지를 사용하는 모든 컨테이너를 종료해야합니다. 그후
docker rmi rockylinux:9
docker image rm debian
을 통해 이미지를 삭제할 수 있습니다.
정적 웹사이트를 서빙하는 nginx의 이미지를 빌려 컨테이너로 웹 서버를 구축해보겠습니다.
먼저 현재 폴더에 index.html을 생성합니다.
<html>
<style>
html {
font-size: 16px;
}
h1 {
text-align: center;
margin: 2rem 1rem;
}
</style>
<h1>Welcome to SU Docker Tutorial</h1>
</html>
그후 다음의 명령어를 실행합니다.
docker run -d --name nginx-static -p 8082:80 -v ${pwd}:/usr/share/nginx/html:ro nginx
이는 nginx를 실행하되 8082로 포트포워딩을 한 후 실행하고 -d옵션으로 백그라운드 프로세스를 실행시키는 역할을 합니다. 또한, -v 옵션을 사용하여 현재 디렉터리를 컨테이너의 /usr/share/nginx/html 디렉터리에 마운트 시킵니다. 그리고 마지막 :ro는 컨테이너에서 이 디렉터리에서 쓰기를 할 수 없도록 읽기 전용으로 마운트하라는 의미입니다.
웹브라우저에서 localhost:8082를 열어보면 다음과같은 화면이 나옵니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker초보]다수의 컨테이너 관리방법(Docker Compose) (0) | 2024.05.16 |
---|---|
[Docker초보]Docker 컨테이너에 대한 개념 설명과 간단한 명령어 소개 (0) | 2024.05.13 |