Search
Duplicate
📒

[Docker Container] 02. Docker Image 저장소(Public, Private)

상태
미진행
수업
Docker Container
주제
Docker
4 more properties
참고

Docker Image 관리

NOTE
docker image ⇒ Container runtime에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함하고, 변경되는 상태 값을 보유하지 않고(stateless) 변하지 않는다.(Immutable)
일반적인 Dockerfile 생성과정
docker image 관련 명령어 flow

이미지 구조 확인 (inspect, history)

NOTE
이미지는 여러개의 layer를 통해 이루어진다.
이미자 pull 당시 각 layer별로 다운받는 것
# 1. 도커 이미지 내려받기 docker pull httpd:2.4 # 2. 도커 이미지 구조 확인 docker image inspect httpd:2.4 # JSON 형태 docker image history httpd:2.4 # Dockerfile 형태
Shell
복사
inspect (JSON 형태)
history (Dockerfile 형태)

이미지 올리기 (login/logout, push)

NOTE
빌드한 이미지를 보관하는 Registry
Dockerfile을 통해 생성된 이미지나 docker commit을 통해 생성된 이미지를 저장하는 곳을 registry라고 한다.
Registry는 public과 private 2개의 종류가 있다.
public ⇒ Docker hub
private ⇒ registry 직접구축, 외부 프로그램사용
# username, pw 입력 docker login # 유저네임이 나온다. 단 계정이 비암호화되어서 저장되므로 주의하자. docker info | grep Username # 실제 저장확인 base64로 인코딩됨 cat /home/scofe/.docker/config.json
Shell
복사
docker hub에 올리기 위해 login과정부터 진행한다.
그냥 로그인하면 ID/PW가 암호화 되지 않는다.
# 토큰값을 복사해서 넣어둔다. vi .access_token # 토큰값을 통한 로그인 cat .access_token | docker login --username scofe --password-stdin
Shell
복사
docker hub의 token으로 로그인하는 방법 (암호화되어 저장됨)
docker image tag [기존 이미지] [새로운 이미지] docker push [새로운 이미지]
Shell
복사
새로운 이미지의 경우 본인 허브에 올리기 때문에 본인이름/이미지:태그 형식으로 해야함
docker pull [새로운 이미지] docker run -d -p [포트정보] [새로운 이미지]
Shell
복사
다른 가상머신에서 이미지를 가져와서 실행
이미지 삭제 명령어

private registry 구성

NOTE
기업 내부에서 사용하는 이미지는 public registry에 올리는 경우가 없으므로, private registry를 구축해서 사용한다!
docker pull registry docker run -d \ -v /home/kevin/registry_data:/var/lib/registry \ -p 5000:5000 \ --restart=always \ --name=local-registry \ registry sudo netstat -nlp | grep 5000 curl -X GET http://192.168.56.101:5000/v2/_catalog
Shell
복사
registry 이미지를 이용해 private registry를 구축한다.
# 파일에 값 넣어주기 sudo vi /etc/init.d/docker DOCKER_OPTS=--insecure-registry 192.168.56.101:5000 # 파일에 값 넣어주기 sudo vi /etc/docker/daemon.json { "insecure-registries": ["192.168.56.101:5000"] } # 도커 재시작 sudo systemctl restart docker.service # 적용되었는지 확인 docker info
Shell
복사
pirvate registry를 위한 설정값
docker image tag myweb:v1.0 192.168.56.101:5000/myweb:v1.0 docker push 192.168.56.101:5000/myweb:v1.0 curl -X GET http://192.168.56.101:5000/v2/_catalog
Shell
복사
pirvate에 올라가는 이미지역시, private registry의 IP:Port를 앞에 적어준다.

private registry 실습

NOTE
git clone https://github.com/hylee-kevin/fastcampus.git cd fastcampus/ch04 docker build -t phpserver:1.0 . docker run -it -d -p 8004:80 -h phpserver --name=phpserver phpserver:1.0
Shell
복사
1번 서버에서 이미지 빌드
docker image tag phpserver:1.0 192.168.56.101:5000/phpserver:1.0 docker push 192.168.56.101:5000/phpserver:1.0 curl -X GET http://192.168.56.101:5000/v2/_catalog
Shell
복사
1번 서버에서 private registry에 업로드
docker pull 192.168.56.101:5000/phpserver:1.0
Shell
복사
2번서버에서 pull