0부터 시작하는 Docker 공부 - Registry & 도커 컨테이너의 life cycle & 컨테이너 삭제

Jaehong Lee·2022년 8월 17일
0
post-thumbnail

1. Registry ( 저장소 )

  • 이미지가 보관되는 곳
    • 불특정 다수가 접근하여 이미지를 사용할 수 있는 public registry
    • 특정 사용자 / 그룹만 접근하여 이미지를 사용할 수 있는 private registry
    • 사용자 혼자만 접속할 수 있는 local registry

public registry

  • 위와 같이 docker search 를 하면 도커 허브에 연결하여, 퍼블릭 저장소에 보관된 공개된 모든 이미지를 검색 / pull 할 수 있다. 첫번째 검색 결과는 항상 공식 이미지 이다

  • 공식 이미지는 별도의 계정 정보가 보이지 않는다. 하지만, public registry 에 공개된 이미지는 ID/프로그램명 과 같이 출력된다 ( ex. circleci/python )

  • public 저장소는 이처럼 누구든 접속 가능하므로 위험하다

private registry

  1. 도커 허브에 repository 를 만들 때 private 으로 만들고, 접속 허용하고자 하는 id 를 지정
  2. aws, gcp, azure 와 같이 vpc 환경에서 작업하는 경우에도 사설 저장소를 운영할 수 있다
  3. 별도의 서버를 하나 준비하고, 해당 서버에 registry 라는 이미지를 이용하여, 사설 저장소를 운영할 수 있는 컨테이너를 생성한다
  • 별도의 프로젝트를 진행하는 경우에 사용한다

local registry

  • 컴퓨터 자체에 이미지를 보관할 수 있는 공간이 있는데, 여기를 로컬 저장소하고 하며, 컨테이너 생성시에는 1차적으로 이 로컬 저장소에서 이미지를 검색하게 된다. 이때, 로컬 저장소에 이미지가 없다면, 도커 허브로 연결한다

  • 레포지터리와 레지스트리를 동일한 의미로 사용하긴 하지만, 레포지터리의 모음이 레지스트리. 즉, 도커 허브라는 퍼블릭 레지스트리 안에, 우리는 레포지터리를 만든 것이다. 이 레포지터리는 안에 TAG 로 또 구분한다

    • 하나의 이미지를 하나의 레포지터리에 연결, 레포지터리 안에도 구획 나눠져 있기도 하다

2. 도커 컨테이너의 life cycle

p.63

  • run 하면, 컨테이너가 생성 및 실행된다
  • start 하면 실행되며, stop 을 통해 die 시켜서 stop 상태로 전환시킬 수 있다
  • create 를 통해 생성하면, 생성만 되고, 시작이 안되므로, 별도로 start 를 시켜야 시작된다
  • restart 를 통해 재시작이 가능하다
  • pause 를 하면 컨테이너를 중지시킨다
  • 컨테이너 삭제는 stop 인 상태에서 docker container rm 을 하면 삭제된다
    • docker container rm -f = docker container stop + docker container rm

명령어

  • docker container attach : 생성된 컨테이너에 연결
  • docker container exec [컨테이너 이름] 명령어 : 컨테이너에게 명령어를 전달
  • 이미지 pull 하기 : docker pull 이미지이름 을 통해 이미지를 pull 한다
    • docker pull httpd : 도커 허브에서 제공되는 공식 이미지 중 최신 이미지를 local registry 에 pull
    • docker pull centos:7 : 도커 허브 공식 centos 이미지 중 7 버전을 local registry 에 pull
  • docker container ls --all : 컨테이너 리스트
  • docker image ls : 이미지 리스트

3. 컨테이너 삭제

  • 위와 같이 실행중인 컨테이너는 삭제가 불가능하다. -f 옵션을 통해 실행중인 컨테이너를 바로 삭제할 수 있다
  • 위와 같이 q 옵션으로 컨테이너 ID 만 출력할 수 있다
  • 이를 통해 위와 같이 모든 컨테이너를 삭제할 수 있다
docker rm -f $(docker container ls --all -q)
profile
멋진 엔지니어가 될 때까지

0개의 댓글