반응형
1. docker 설치
우분투 서버에 docker 설치
https://docs.docker.com/engine/install/ubuntu/
<도커설치 방법>
1. Set up Docker's "apt" repository.
# Add Docker's official GPG key:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
2. Install the Docker packages
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. Verify that the installation is successful by running the hello-world image:
#설치 여부 확인 명령어
$ sudo docker run hello-world
# 설치가 되었다면 아래와 같이 출력됩니다!
vagrant@ubuntu2204:/etc/apt/keyrings$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
2. docker를 활용하여 httpd 컨테이너 생성실행
<ip 정보 확인방법>
$ ip addr
<httpd 컨테이너 생성>
# 이름이 apache 인 httpd 컨테이너 생성
vagrant@ubuntu2204:~$ sudo docker run -d --name apache httpd
ddc4fb87d7a8e3c25129f890dacd2ed73483f6f1cadad6e816e0d1e9543d2fa0
# 생성된 컨테이너 정보 확인
vagrant@ubuntu2204:~$ sudo docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ddc4fb87d7a8 httpd "httpd-foreground" 16 seconds ago Up 16 seconds 80/tcp apache
# 이름이 apache2 인 httpd 컨테이너 생성
vagrant@ubuntu2204:~$ sudo docker run -d --name apache2 httpd
498616d4931c6261b0fa19f1a530a3f3193e7d11dbf06b06b7e706132fb3c8ac
# 생성된 컨테이너 정보 확인
vagrant@ubuntu2204:~$ sudo docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
498616d4931c httpd "httpd-foreground" 11 seconds ago Up 11 seconds 80/tcp apache2
ddc4fb87d7a8 httpd "httpd-foreground" About a minute ago Up About a minute 80/tcp apache
# 서버 응답 내용 확인
#내 서버의 ip가 172.17.0.1 이므로 2부터 차례로 입력해보면 나온다
# apache컨테이너 안에 /usr/local/apache2/htdocs/index.html 파일 정보를 가져옴
vagrant@ubuntu2204:~$ curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
vagrant@ubuntu2204:~$ curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
#apache 컨테이너에 접속
vagrant@ubuntu2204:~$ sudo docker exec -it apache /bin/bash
#apache컨테이너로 접속했으나, 이동된 위치에 apache2라고 되어있음.
#이는 파일명으로 잘 이동되었는가는 hostname으로 확인 해야하는 것같음
root@ddc4fb87d7a8:/usr/local/apache2# hostname
ddc4fb87d7a8
#bin 위치로 이동
root@ddc4fb87d7a8:/usr/local/apache2# cd bin
#bin 내 파일들 확인
root@ddc4fb87d7a8:/usr/local/apache2/bin# ls
ab checkgid envvars-std htdbm httpd rotatelogs
apachectl dbmmanage fcgistarter htdigest httxt2dbm suexec
apxs envvars htcacheclean htpasswd logresolve
root@ddc4fb87d7a8:/usr/local/apache2/bin# ls httpd
httpd
root@ddc4fb87d7a8:/usr/local/apache2/bin# ldd httpd
linux-vdso.so.1 (0x00007ffcd37e5000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe6a39f6000)
libaprutil-1.so.0 => /lib/x86_64-linux-gnu/libaprutil-1.so.0 (0x00007fe6a39c8000)
libapr-1.so.0 => /lib/x86_64-linux-gnu/libapr-1.so.0 (0x00007fe6a398b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe6a37aa000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe6a377f000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fe6a3741000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe6a3737000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe6a3b1e000)
# 해당 apache 컨테이너에서 명령어를 어떤것을 써야하는지 확인
# Debian -> apt(우분투명령어) 사용할 수 있음
root@ddc4fb87d7a8:/usr/local/apache2/bin# cat /etc/issue
Debian GNU/Linux 12 \n \l
# index.html 파일 내용 확인
# curl 172.17.0.2 내용과 동일함
root@ddc4fb87d7a8:/usr/local/apache2/bin# cd /usr/local/apache2/htdocs
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# ls
index.html
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# cat index.html
<html><body><h1>It works!</h1></body></html>
<httpd 컨테이너에 명령어 실행 여부 확인 및 설치>
# 아파치에 관련 명령어들이 설치되어있지 않음
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# vi
bash: vi: command not found
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# nano
bash: nano: command not found
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# ping google.com
bash: ping: command not found
#업데이트를 한 후 명령어 설치 가능함 (vi / namo 등)
# 설치시 최소한으로 필요한 것만 설치할 것
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# apt update
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# apt install nano
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# apt install vim
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# apt update
#내용 수정
root@ddc4fb87d7a8:/usr/local/apache2/htdocs# vi index.html
It worker -> hello-docker로 수정함
저장 후 exit으로 나가기
curl 명령어로 입력해보면 해당 내용이 변경된 것을 확인 할 수 있음
vagrant@ubuntu2204:~$ curl 172.17.0.2
<html><body><h1>hello-docker</h1></body></html>
3. 실행되고 있는 docker, 컨테이너 중지 및 삭제
# docker에 생성되어있는 컨테이너 확인
# ID 확인
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a773327c7ada httpd "httpd-foreground" 6 seconds ago Up 5 seconds 80/tcp apache2
6cfc022180ab httpd "httpd-foreground" 11 seconds ago Up 10 seconds 80/tcp apache
<컨테이너 이름으로 삭제>
실행되고 있는 컨테이너 중지 및 삭제
컨테이너는 중지 후 삭제를 진행해야함
# 중지 없이 삭제할 경우 에러 표출
vagrant@ubuntu2204:~$ docker rm apache
Error response from daemon: cannot remove container "/apache": container is running: stop the container before removing or force remove
#apache 중지
vagrant@ubuntu2204:~$ docker stop apache
#실행 컨테이너 항목
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a773327c7ada httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp apache2
#apache 컨테이너 삭제
vagrant@ubuntu2204:~$ docker rm apache
apache
#모든 컨테이너 정보 확인
#apache 컨테이너 정보 없음
vagrant@ubuntu2204:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a773327c7ada httpd "httpd-foreground" 5 minutes ago Up 5 minutes 80/tcp apache2
< 컨테이너 ID로 삭제 방법>
#컨테이너 중지
vagrant@ubuntu2204:~$ docker stop a773327c7ada
a773327c7ada
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#컨테이너 삭제
vagrant@ubuntu2204:~$ docker rm a773327c7ada
a773327c7ada
vagrant@ubuntu2204:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<컨테이너 삭제를 쉽게 하는 방법>
#all_containers_rm -> 명령어 만들기, docker stop 후 docker rm 실행하도록 명령어 생성
$ alias all_containers_rm='docker stop $(docker ps -q) ; docker rm $(docker ps -aq)'
4. httpd 컨테이너 생성, 실행, 일시정지, 중지, 삭제
#myapache 컨테이너 생성(실행이 아님), 생성시 image를 최신버전으로 생성,
vagrant@ubuntu2204:~$ docker container create --name myapache httpd:latest
6eedde8bcd81bb16eea23ea9c267f83081576780ed1d862f9987e889b8e47ace
#생성했으나, 실행은 되지 않음
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#생성됨을 확인
vagrant@ubuntu2204:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6eedde8bcd81 httpd:latest "httpd-foreground" 15 seconds ago Created myapache
#docker run -d --name apache httpd 명령어를 썼을때와 차이점
vagrant@ubuntu2204:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bff670a0cce9 httpd "httpd-foreground" 10 seconds ago Up 10 seconds 80/tcp apache
6eedde8bcd81 httpd:latest "httpd-foreground" About a minute ago Created myapache
#myapache 실행
vagrant@ubuntu2204:~$ docker start myapache
myapache
#myapache 실행 확인
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6eedde8bcd81 httpd:latest "httpd-foreground" 4 minutes ago Up 5 seconds 80/tcp myapache
#myapache 일시정지
vagrant@ubuntu2204:~$ docker pause myapache
myapache
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ba4c6fc7d98 httpd:latest "httpd-foreground" 23 seconds ago Up 12 seconds (Paused) 80/tcp myapache
#myapache 중지
vagrant@ubuntu2204:~$ docker stop myapache
myapache
vagrant@ubuntu2204:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#myapache 삭제
vagrant@ubuntu2204:~$ docker container rm myapache
myapache
vagrant@ubuntu2204:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
반응형
'요즘공부' 카테고리의 다른 글
[도커&쿠버네티스] 교육 1일차_ centos9,mysql image 설치 (0) | 2025.02.20 |
---|---|
[도커&쿠버네티스] 교육 1일차_ nginx, mariaDB image 설치 (0) | 2025.02.20 |
[도커&쿠버네티스] 교육 1일차_사전준비 사항 (0) | 2025.02.15 |
CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부4 (1) | 2024.12.15 |
CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부3 (0) | 2024.12.14 |