12. Docker Container
# 간단 개념 정리
□ Volume(볼륨) : Docker 컨테이너의 생명 주기와 관계없이 데이터를 영속적으로 저장할 수 있는 옵션 중 하나.
□ 도커 : 컨테이너를 위한 운영체제. 컨테이너를 구축, 시작, 중단하는 데 사용할 수 있는 명령을 제공. sw를 표준화된 유닛으로 패키징하여 컨테이너로 생성한다
□ 컨테이너 : 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 소프트웨어의 실행에 필요한 모든 것을 패키징한 단위. 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키징하여 서비스 구동을 위한 격리 환경을 마련한다.
1. 도커 이미지 검색 : 이미지 레지스트리에서 검색하며, 별도 지정하지않을시, 디폴트는 도커 허브(https://hub.docker.com)
docker search nginx
2. 이미지 내려받기
docker pull nginx
3. 내려받은 이미지로 컨테이너 실행
# -d : 백그라운드에서 구동
# --restart : 오류 등으로 도커/컨테이너의 작동 중지시, 컨테이너의 재시작과 관련된 정책
# always : --restart의 옵션. 컨테이너 비정상종료시 컨테이너를 재시작하며,
# 도커 서비스 시작시 컨테이너를 시작하도록 설정
docker run -d --restart always nginx
# 실행 확인
docker ps
4. 외부 접속 옵션 추가
# -p 8080:80 으로 8080으로 요청받은 호출을 80포트 컨테이너로 보냄
docker run -d -p 8080:80 --name nginx-exposed --restart always nginx
5. Volume 으로 호스트와 컨테이너 연결하기
웹서버 접근시 기본 페이지인 index.html 을 수정한 후, 해당 볼륨을 연결한 새로운 컨테이너를 생성하였다.
6. 컨테이너 정리하기
컨테이너는 정지>삭제 순으로 진행해야한다.
6-1. 컨테이너 정지
# 방법1
docker stop 컨테이너명
# 방법2
docker stop 컨테이너ID
# 방법3 : 해당 이미지로 생성된 모든 컨테이너 중지
docker stop $(docker ps -q -f ancestor=nginx)
6-2. 컨테이너 삭제
# 중지된 컨테이너 확인
docker ps -a -f ancestor=nginx
# 방법1. 특정 id 지정
docker rm 컨테이너id
# 중지된 컨테이너의 id 만 조회
docker ps -aq -f ancestor=nginx
# 방법2. 특정 이미지로 생성된 중지상태 컨테이너 전체 삭제
docker rm $(docker ps -aq -f ancestor=nginx)
6-3. 내려받았던 이미지 삭제
docker rmi $(docker images -q nginx)
7. 볼륨 제거
볼륨은 해당 볼륨이 마운트되어있는 컨테이너가 있을 경우, 제거되지않기때문에 컨테이너 먼저 삭제 후 제거한다.
docker volume rm 볼륨명
# 어디까지 했나
# 참고
https://docs.docker.com/storage/volumes/
Use volumes
docs.docker.com
https://www.daleseo.com/docker-volumes-bind-mounts/
Docker 컨테이너에 데이터 저장 (볼륨/바인드 마운트)
Engineering Blog by Dale Seo
www.daleseo.com