AWS, Docker/Docker

Docker 시작하기 <3.Image>

zooyeonii 2020. 6. 28. 01:55

Docker 게시글 모음

1. Docker 시작하기 <1.설치와 재설치>

2. Docker 시작하기 <2.컨테이너>

4. Docker 시작하기 <4. docker compose>


도커 허브엔 이미지가 가득가득~

 

저는 ubuntu:16.04 환경에 go-ipfs이 설치된 컨테이너가 여러 개 필요하기 때문에 이를 이미지로 저장하려고 합니다.

 

이미지를 만드는 방법에는 1) 커밋, 2) 도커파일이 있습니다.

커밋은 명령어를 입력해가며 컨테이너에 layer를 하나씩 쌓아가며 이미지를 만드는 것이고,

도커파일은 이 과정을 하나의 파일로 수행할 수 있습니다.

 

0. 이미지 생성의 원리

예를 들어 go 이미지에 go-ipfs를 추가해서 (go+go-ipfs) 이미지를 만든다고 해봅시다. 

이미지는 여러 '레이어'로 구성되어 있습니다. 

컨테이너를 수정하면, 해당 변경 사항을 '레이어'로 저장하고, 해당 '레이어'를 포함하는 새로운 이미지를 만듭니다. 

 

실제 레이어를 확인하고 싶으면 다음 명령어를 사용합니다.

$ docker inspect [컨테이너/이미지/네트워크/볼륨 등의 이름]
$ docker inspect go-ipfs_install

 

변경된 내용이 '레이어'로 저장되어 새로운 이미지에 추가되는 것을 볼 수 있습니다.

 

커밋은, 즉각적인 피드백이 가능하다는 것,

도커파일은 한 번에 수행할 수 있으며 설치된 파일들의 기록을 남길 수 있다는 점이 장점입니다. 

 

명령어가 꽤나 많이 필요하기 때문에 저는 도커파일로 만들어보려고 합니다.

 

1. 도커파일 만들기

제일 좋은 건 도커 허브에 원하는 이미지가 있는 경우인데, 저는 일단 도커파일을 만들어 보겠습니다.

명령어가 까다롭군요. 다음에 따로 정리해봐야겠습니다.

https://github.com/zooyeonii/ipfs-docker

 

zooyeonii/ipfs-docker

Contribute to zooyeonii/ipfs-docker development by creating an account on GitHub.

github.com

 

 

 

2. commit

$docker run -i -t --name ipfs_install ubuntu:16.04

위는 ubuntu:16.04 라는 이미지를 바탕으로 ipfs_install 이라는 컨테이너를 만든다는 뜻입니다.

그러면 ipfs_install 컨테이너 속으로 들어가게 되겠죠!

 

ipfs_install 이라는 컨테이너를 만들고, 그 안에 ipfs를 설치하였습니다.

이를 이미지로 만들고 싶습니다.

다음 명령은 ipfs_install 이라는 컨테이너를 ipfs_install:first 라는 이미지로 생성합니다. 

$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
$ docker commit ipfs_install ipfs_install:first

 

docker hub에 push 하기 위해서는 본인의 repository에 맞게 이미지의 이름을 재설정합니다.

$ docker tag [기존의 이미지 이름] [새롭게 만들 이미지 이름]
$ docker tag ipfs_install:first zooyeonii/ipfs_install

 

이제 더 이상 ipfs 부터 설치하지 않아도 됩니다!! ~.~

도커 이미지에 ipfs_install:first 가 추가되었습니다!
이미지를 push 했습니다.

 


go version 1.14.2 와 go-ipfs를 설치한 Docker image를 도커 허브에 배포하였습니다. 

 

go install version 1.14.2 Docker image : https://hub.docker.com/repository/docker/zooyeonii/go_install

go version 1.14.2 / go-ipfs version 0.5.0 installed Docker image : https://hub.docker.com/repository/docker/zooyeonii/go-ipfs