본문 바로가기
요즘공부

[도커&쿠버네티스] 교육 2일차_도커 이미지 생성(일반,*.tar)/컨테이너 생성

by 게으른 피글렛 2025. 3. 6.
반응형

1. 도커 이미지 생성

<우선 기존 내용 삭제>

#우선 기존에 생성한 네트워크 제거
vagrant@ubuntu2204:~$ docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
0b4980930830   bridge     bridge    local
6c49481470a0   host       host      local
b435a13fe1c8   mybridge   bridge    local
454c6ebb3330   none       null      local

#네트워크 삭제
vagrant@ubuntu2204:~$ docker network rm mybridge
mybridge

#불필요한 네트워크 정리
vagrant@ubuntu2204:~$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y

#삭제 완료
vagrant@ubuntu2204:~$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
0b4980930830   bridge    bridge    local
6c49481470a0   host      host      local
454c6ebb3330   none      null      local

 

 

 

apache 서버 > 서버 내 설정값 변경 > 도커 이미지 생성 > 컨테이너 생성

#apache 컨테이너 생성
vagrant@ubuntu2204:~$ docker run -d --name apache httpd
2ff5a380b5116861dfd5f18feaf5578599aab7c4ed37bbd6a98ed11424ff4136
vagrant@ubuntu2204:~$ curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>

#접속
vagrant@ubuntu2204:~$ docker exec -it apache /bin/bash

 

 

<서버 내 설정값 변경>

#컨테이너 접속하여 설정값 변경
root@32fce80d18f1:/usr/local/apache2/htdocs# apt update
root@32fce80d18f1:/usr/local/apache2/htdocs# apt install vim
root@32fce80d18f1:/usr/local/apache2/htdocs# apt install iputils-ping
root@32fce80d18f1:/usr/local/apache2/htdocs# apt install net-tools
root@32fce80d18f1:/usr/local/apache2/htdocs# useradd -m admin2
root@32fce80d18f1:/usr/local/apache2/htdocs# rm /etc/motd
root@2ff5a380b511:/usr/local/apache2# exit

 

변경된 내용 확인 - 확인

vagrant@ubuntu2204:~$ docker container diff apache
C /usr/sbin
A /usr/sbin/nameif
A /usr/sbin/slattach
A /usr/sbin/rarp
A /usr/sbin/capsh
A /usr/sbin/setcap
A /usr/sbin/mii-tool
(생략)

 

 

<도커 이미지 생성>

#도커 이미지 생성
vagrant@ubuntu2204:~$ docker container commit -a "piglet8<piglet8@example.com>" apache custom_httpd:1.0
sha256:b4f324c7ff81d91b94080d5672061413425a3f37aea62702c03d35b74b2dc9dc

#도커 이미지 리스트(custom_httpd 생성된 것 확인)
vagrant@ubuntu2204:~$ docker images
REPOSITORY              TAG       IMAGE ID       CREATED          SIZE
custom_httpd            1.0       b4f324c7ff81   34 seconds ago   211MB
mariadb                 latest    a914eff5d2eb   2 weeks ago      336MB
alpine                  latest    aded1e1a5b37   2 weeks ago      7.83MB
quay.io/centos/centos   stream9   5ef0f9d95ba6   3 weeks ago      164MB
nginx                   latest    97662d24417b   4 weeks ago      192MB
httpd                   latest    4d98e80840bb   5 weeks ago      148MB
mysql                   latest    5568fddd4f66   6 weeks ago      797MB
hello-world             latest    74cc54e27dc4   6 weeks ago      10.1kB

 

 

<생성한 도커 이미지로 서버생성>

#도커 이미지로 서버 생성
vagrant@ubuntu2204:~$  docker run -d --name apache2 custom_httpd:1.0
94caa1864e897c2cdb31caa054a3c27e895466d439b71c1820182f229c53e347

#서버에 접속해서 설치가 되어있는지 확인
vagrant@ubuntu2204:~$ docker exec -it apache2 /bin/bash

#ping 설치된 것을 확인 할 수 있음
root@94caa1864e89:/usr/local/apache2# ping
ping: usage error: Destination address required
root@94caa1864e89:/usr/local/apache2# ping google.com
PING google.com (142.251.42.142) 56(84) bytes of data.
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=1 ttl=254 time=40.2 ms
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=2 ttl=254 time=50.5 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 40.227/45.339/50.452/5.112 ms

 

저장된 도커이미지로 설치되는 것을 확인 할 수 있음

 

 

 

기존 내용을 삭제해줍니다.

삭제 명령어

alias all_containers_rm='docker stop $(docker ps -q) ; docker rm $(docker ps -aq)'

 

 

2. tar 파일을 도커 이미지 생성

*.tar 파일 생성 > 도커이미지로 생성 > 이미지로 컨테이너 설치(포그라운드로 설치)

 

<httpd.tar 파일 생성>

#컨테이너 생성
vagrant@ubuntu2204:~$ docker run -d --name apache httpd
6fef6e03fca41f965f98dc20c92dd7d8b69d854cac97d56cca4166eac7f8c055

#생성한 서버에 user1 계정 추가
vagrant@ubuntu2204:~$ docker exec apache useradd -m user1
vagrant@ubuntu2204:~$ docker exec apache ls /home
user1

#httpd.tar 파일로 압축
vagrant@ubuntu2204:~$ docker container export apache > httpd.tar
vagrant@ubuntu2204:~$ ls httpd.tar
httpd.tar
vagrant@ubuntu2204:~$ ls

 

#httpd.tar 파일에 들어있는 내용 확인
vagrant@ubuntu2204:~$ tar -tf httpd.tar
var/mail/
var/opt/
var/run
var/spool/
var/spool/mail
var/tmp/
(생략)

 

 

<tar 파일을 도커 이미지로>

httpd.tar라는 Docker 이미지 tar 파일을 docker image import 명령을 통해 newhttpd:latest 이미지 파일로 가져옴

#tar 파일을 도커이미지로 생성
vagrant@ubuntu2204:~$ cat httpd.tar | docker image import - newhttpd:latest
sha256:e38abdc91cd3e334363f25ae15cc27d265d61a7ab8878c68dbd71051b21afb65

#생성 확인(newhttpd)
vagrant@ubuntu2204:~$ docker images
REPOSITORY              TAG       IMAGE ID       CREATED          SIZE
newhttpd                latest    e38abdc91cd3   10 seconds ago   146MB
custom_httpd            1.0       b4f324c7ff81   18 minutes ago   211MB
mariadb                 latest    a914eff5d2eb   2 weeks ago      336MB
alpine                  latest    aded1e1a5b37   2 weeks ago      7.83MB
quay.io/centos/centos   stream9   5ef0f9d95ba6   3 weeks ago      164MB
nginx                   latest    97662d24417b   4 weeks ago      192MB
httpd                   latest    4d98e80840bb   5 weeks ago      148MB
mysql                   latest    5568fddd4f66   6 weeks ago      797MB
hello-world             latest    74cc54e27dc4   6 weeks ago      10.1kB

 

tar 파일 이미지를 활용하여 컨테이너를 생성하였으나, 생성이 되지않음

#컨테이너 생성이 되지 않음
vagrant@ubuntu2204:~$ docker run -d --name apache2 newhttpd
docker: Error response from daemon: no command specified.
See 'docker run --help'.

 

<포그라운드로 설치>

vagrant@ubuntu2204:~$ docker run -d --name apache2 newhttpd /usr/local/apache2/bin/httpd -D FOREGROUND
ded158523911221743f9501cb79843e41616abb8e0070e0cee764c123d82f7ed
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS     NAMES
ded158523911   newhttpd   "/usr/local/apache2/…"   5 seconds ago    Up 4 seconds              apache2
6fef6e03fca4   httpd      "httpd-foreground"       26 minutes ago   Up 26 minutes   80/tcp    apache

 

 

tar 파일로 생성한 이미지의 경우 이렇게 포그라운드로 설치하면 설치가 가능함

반응형