반응형
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 파일로 생성한 이미지의 경우 이렇게 포그라운드로 설치하면 설치가 가능함
반응형
'요즘공부' 카테고리의 다른 글
[도커&쿠버네티스] 교육 2일차_ Dockerfile 생성 (0) | 2025.03.09 |
---|---|
[도커&쿠버네티스] 교육 2일차_인터넷이 차단된 환경에서 도커이미지 다운로드 및 설치 방법 (0) | 2025.03.07 |
[도커&쿠버네티스] 교육 2일차_ docker 브릿지/네트워크 연결 확인 (0) | 2025.03.06 |
[도커&쿠버네티스] 교육 2일차_ IP설정,docker네트워크 확인 (0) | 2025.02.23 |
[도커&쿠버네티스] 교육 1일차_ 컨테이너 생성시 삭제되지 않도록 하는 법 (0) | 2025.02.21 |