겉바속촉
[DOCKER] 도커_이미지 생성 본문
DOCKER에 대해서
공부해보도록 하겠습니다
!^^!
우리는 원래
Docker 이미지를 바탕으로 컨테이너를 작성해왔습니다
그런데
컨테이너를 바탕으로 해서 도커 이미지를 만들어보려고 합니다
1. 컨테이너로부터 이미지 작성
우선 exec 명령 활용해서 root 밑에 commit.test 파일 만들게요
docker exec dns-web touch/commit.test
그리고 커밋해주기 --> 이미지 작성
docker commit -a "ljh" -m "add /commit test and index.html" dns-web juhyun9086/web:v1
(컨테이너 이름 뒤에는 도커 허브에 올리기 위해 추가 옵션 넣었습니다)
(도커허버 아이디/레퍼지토리:태그)
2. 도커 허브에 push
docker images 명령으로 이미지 잘 되어있나 확인
그리고 push 해볼게요
그전에 login 먼저!!
docker login
docker push juhyun9086/web:v1
3. 이미지로 컨테이너 올리기
docker run -d juhyun9086/web:v1
그리고 docker ps로 컨테이너 id 확인해준 후에
그 id로 docker exec b7 cat /etc/hosts
ip주소 확인
curl 172.17.0.5
tar 파일을
활용해보도록 하겠습니다
1. 컨테이너를 tar 파일로 출력
docker export dns-web > web.tar
dns-web 컨테이너를 web.tar 파일로 묶어서 아카이빙해주는 것입니다
mkdir /test
cd /test
test 폴더 하나 만든 후에 거기로 들어가서
타르 파일을 풀어줄게요
그전에 tvf로 확인할게요
tar tvf /root/web.tar
그럼 굉장히 많은 파일들이 뜹니다
tar xf /root/web.tar
해당 디렉토리로 가서 web.tar를 풀어줍니다
이제 cd usr/share/nginx/html/ 로 가서
ls 로 확인해보니
잘 들어가 있습니다:)
2. tar 파일로부터 이미지 작성
우선 home으로 이동해주시고
cat web.tar |docker image import - webimport:test
파이프의 역할 : cat의 표준 출력을 뒤에 오는 프로세스를 표준 입력으로!!
그리고 import 뒤의 "-" 이 표시가 뒤의 디바이스에 데이터를 넣겠다는 뜻
docker images로 확인해보니
webimport가 보이네요?!
현재까지 한 과정
server1의 컨테이너로 돌고 있는 애를
export를 활용해 tar로 묶어준 후에
server2로 넘기고
거기서 이미지를 import 시킵니다
다시 이 이미지로 컨테이너 올릴 수가 있죠
그래서 server1에 동작 중이었던 컨테이너를 server2로 이관하는 작업을 진행한 겁니다
3. 이미지 저장
docker save -o nginx.tar nginx
nginx이미지를 tar로 아카이빙해서 저장할게
컨테이너가 아니라 이미지 자체로!!
즉 이미지 이관
컨테이너 이관 --> export
이미지 이관 --> save
(이미지 자체를 넘길 수가 없어서 tar 형태로)
그리고 현재 저는 우분투에서 작업하고 있기 때문에
centos로 옮기는 것도 가능하겠죠??
scp nginx.tar 192.168.137.131:/tmp
centos에서 ls /tmp로 확인해보시면
nginx.tar 가 있는 걸 볼 수 있습니다
4. 이미지 읽어 들이기
docker image load -i /tmp/nginx.tar
5. 불필요한 이미지, 컨테이너 일괄 삭제
사용하지 않는 볼륨들,
stop된 컨테이너들,
사용하지 않는 네트워크들,
컨테이너에서 사용하지않는 이미지들
삭제해주는 명령
docker system prune -a
우선 docker image들이 얼마나 있는 지
docker images 명령
docker ps -a 명령을 내려서
컨테이너들도 얼마나 있는 지 확인
그리고
docker system df 명령으로
이미지와 관련된 정보들을 보며 prune을 했을 때 확보가능한 정보들을 알 수 있다
지우고 나서
다시
docker system df로 확인해봤더니
다음과 같이 reclaimable보니 아까와 다르죠??
ps -a 명령으로,
images 명령으로
변화된 것 확인 가능합니다:)
현재 포스팅에서 한 명령들 정리
135 docker exec dns-web touch /commit.test
136 docker diff dns-web
137 docker commit -a "ljh" -m "add /commit.test and index.html" dns-web juhyun9086/web:v1
138 docker images
139 docker push
140 docker login
141 docker push juhyun9086/web:v1
142 docker run -d juhyun9086/web:v1
143 docker ps
144 docker exec b7 cat /etc/hosts
145 curl 172.17.0.5
146 docker ps
147* docker run -d roseh00/
148 docker export jin-web > web.tar
149 docker export dns-web > web.tar
150 pwd
151 ls -;
152 ls -l
153 mkdir /test
154 cd /test
155 tar tvf /root/web.tar
156 tar xf /root/web.tar
157 ls
158 cd usr/share/nginx/html/
159 ls
160 cat index.html
161 cd
162 cat web.tar |docker image import - webimport:test
163 docker images
164 docker save -o nginx.tar nginx
165* scp nginx.tar
166 cd /var/lib/docker/image
167 ls
168 cd
169 docker images
170 docker ps -a
171 docker system df
172 docker system prune -a
173 docker system df
174 ps -a
175 docker images
'IT 일기 (상반기) > DOCKER' 카테고리의 다른 글
[DOCKER] bwapp 설치, Apache 웹 서버 설치 (0) | 2021.01.11 |
---|---|
[DOCKER] 도커_Dockerfile (0) | 2020.12.31 |
[DOCKER] 도커_Network static하게 설정하기 (0) | 2020.12.31 |
[DOCKER] 도커_컨테이너 명령어 (0) | 2020.12.31 |
[DOCKER] 도커_v 옵션 활용하기 (0) | 2020.12.31 |