์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- ์ฐ์ ์์ ํ
- ๊ตฌํ
- DP
- thymeleaf
- CVE
- OS
- ์ฌ๊ท
- ๋ถํ ์ ๋ณต
- java
- ์์ ์ ๋ ฌ
- Reversing
- dynamic debugging
- ๊ทธ๋ฆฌ๋
- error
- ์ด๋ถ ํ์
- dfs
- c++
- web
- ์ต๋จ ๊ฒฝ๋ก
- ์คํ
- ์๋ฎฌ๋ ์ด์
- GCP
- Spring
- ๋ฐ์ดํฌ์คํธ๋ผ
- ๋งต
- ๋์ ํฉ
- BFS
- ๋ฐฑํธ๋ํน
- JPA
- ๋ฌธ์์ด
- Today
- Total
hades
[Docker] ๋์ปค ๊ธฐ์ด ๋ณธ๋ฌธ
๋์ปค๊ฐ ์ปจํ ์ด๋๋ฅผ ์ด์ฉํ๋ค.
์ปจํ ์ด๋๋ ๊ฐ์๋จธ์ ์ฒ๋ผ ํ๋์จ์ด๋ฅผ ์ ๋ถ ๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์คํ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง, ๊ฐ์๋จธ์ ์ฒ๋ผ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋ฆฌ๋ ์ค ์ปจํธ๋กค ๊ทธ๋ฃน์ด๋ ํ๋ก์ธ์ค๋ก ์๋นํ ์ ์๋ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ๋์ญ๋ ๋ฑ)์ ์ ํํ๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ์๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด Image๋ฅผ ์ ๊ณตํด์ฃผ๊ณ ์๋ค. github์ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค.
Public Cloud๋ public registry, On-premises๋ private registry๋ฅผ ์๋ฏธํ๋ค.
Registry์์ Image๋ฅผ PULLํ๊ณ , ๊ทธ Image๋ก Container๋ฅผ ๋ง๋ค์ด Memory์์ ์คํ์ํจ๋ค.
Container๋ ๊ฐ์ ์ค์ ์ผ๋ก ์ค๋ณต๋ ์ ์๋ค.
Docker ์ค์น
sudo apt update
sudo apt install docker.io
Docker Root Dir์ /var/lib/docker์ ์ด๋ฏธ์ง์ ๋ก๊ทธ ๋ฑ ์๋ค.
Docker ์คํ
sudo docker
Container๋ง๋ค ์ค์ ์ด ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ IP๋ ๋ค๋ฅด๋ค. ๋ฐ๋ผ์, Container๋ง๋ค IP๋ฅผ ํ์ธํด์ฃผ๋ ๊ฒ์ด ํ์ํ๋ค.
Docker hub์์ image ๊ฒ์
sudo docker search nginx
https://hub.docker.com/ ์์ image๋ฅผ ๊ฒ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค.
Docker hub์์ image ๋ค์ด๋ก๋
sudo docker pull nginx
๊ฑฐ์ ์ฌ์ฉํ์ง ์์
Docker ์ ๋ณด ํ์ธ
sudo docker info
Docker ์ปจํ ์ด๋ ์คํ
sudo docker run -itd -p 80:80 --name=webapp nginx
-itd : interactive, terminal, background
-p : ์นผ๋ฆฌ ๋ฆฌ๋ ์ค 80 ํฌํธ๋ฒํธ๋ฅผ nginx 80 ํฌํธ๋ฒํธ์ ์ฐ๊ฒฐ
--name=webapp : webapp์ด๋ผ๋ ์ด๋ฆ์ผ๋ก nginx ์คํ
๊ฒฐ๊ณผ๋ก ๋์ค๋ ๊ฒ์ hash ๊ฐ์ผ๋ก ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์๋ค.
๋์ํ๊ณ ์๋ ํ๋ก์ธ์ค ์ ๋ณด
sudo docker ps
์ปจํ ์ด๋ ์กฐ์ฌ
sudo docker inspect [CONTAINER ID]
Container๋ ๋ด๋ถ ip๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ ์ ์์ง๋ง, Docker๋ฅผ ์คํํ ์ปดํจํฐ์ IP๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผ๊ฐ๋ฅํ๋ค.
์ปจํ ์ด๋ ์คํ ์ค์ง
sudo docker stop [CONTAINER ID]
์ปจํ ์ด๋ ์คํ ์ฌ์์
sudo docker start [CONTAINER ID]
webapp์ ์ฝ์ ์คํ, ์ข ๋ฃ
sudo docker exec -it webapp bash
exit
์ปจํ ์ด๋๋ ๊ฒฝ๋ํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋จ์ด ์ค์น๋์ด ์์ง ์์ผ๋ฏ๋ก, ์ค์น๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
apt-get update
apt-get install vim
๊ฒฝ๋ก์ ๋ณต์ฌ
sudo docker cp index.html [CONTAINER_ID]:/usr/share/nginx/html/index.html
๋ณ๊ฒฝ์ฌํญ ํ์ธ
sudo docker diff [CONTAINER ID]
๋ณ๊ฒฝํ Container๋ฅผ image๋ก ์ ์ฅ
sudo docker commit -a "[DOCKER HUB NICKNAME]" webapp2 webapp_last:1.0
webapp2๋ฅผ webapp_last, TAG๊ฐ 1.0์ธ image๋ก ์์ฑํ๋ค๋ ์๋ฏธ์ด๋ค.
Docker ๋ณผ๋ฅจ ์์ฑ ๋ฐ ํ์ฉ
์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ค๋ฅ ๋ฐ์์ผ๋ก ์ฌ๋ผ์ง ๊ฒฝ์ฐ, ๋ชจ๋ ์ ๋ณด๋ฅผ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค. ์ด๋ฅผ ๋๋นํ๊ธฐ ์ํด ๋ณผ๋ฅจ์ด๋ผ๋ ๊ฒ์ด ์๋ค.
sudo docker volume create vol_test1
sudo docker inspect vol_test1์ ํ๊ฒ ๋๋ฉด, Mountpoint๋ผ๋ ๊ฒ์ด ๋์ค๋๋ฐ, ์ด ๊ฒฝ๋ก์ ๋ณผ๋ฅจ๊ณผ ์ฐ๊ฒฐ๋ ์ปจํ ์ด๋์ ์ ๋ณด๋ค์ด ์ ์ฅ๋๋ค.
sudo docker run -itd --name=webapp6 -p 86:80 -v vol_test1:/var/log nginx
nginx ์ปจํ ์ด๋์ /var/log์ vol_test1์ ์ฐ๊ฒฐํ๋ค.
sudo docker logs webapp6
webapp6์ ์ ์ ๊ธฐ๋ก์ ํ์ธํ ์ ์๋ค.
Docker ๋ณผ๋ฅจ์ ํ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์
sudo docker volume create mysql_vol01
sudo docker run -idt --name=mysql01 -e MYSQL_DATABASE=TEST_DATABASE -e MYSQL_ROOT_PASSWORD=test -v mysql_vol01:/var/lib/mysql mysql:5.7
์ปจํ ์ด๋ ์ด๋ฆ์ mysql01์ด๋ค.
TEST_DATABASE๋ผ๋ ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋ ์์ฑํ๋ค.
๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ test์ด๋ค.
๋ณผ๋ฅจ์ธ mysql_vol01๊ณผ /var/lib/mysql์ ์ฐ๊ฒฐํ๋ค. /var/lib/mysql์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋ค.
mysql 5.7๋ฒ์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๊ฐ์ ธ ์จ๋ค.
sudo docker exec -it mysql01 bash
mysql -u root -p
์ปจํ ์ด๋์ bash ์ฐฝ์์ ๋ก๊ทธ์ธ์ ํ๋ค. ๋น๋ฐ๋ฒํธ๋ ์์์ ์ค์ ํ test์ด๋ค. show databases; ๋ฅผ ํ๋ฉด TEST_DATABASE๊ฐ ์์ฑ๋์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
Docker ๋คํธ์ํฌ ํ์ธ, ์์ฑ ๋ฐ ํ์ฉ
sudo docker network create net_test01
net_test01์ด๋ผ๋ ์ด๋ฆ์ ์ผ์ข ์ ์๋ธ๋ท์ ์์ฑํ๋ค.
sudo docker run -itd --name=webapp9 -p 89:80 --net=net_test01 nginx
--net์ net_test01์ ์ ๋ฌํ์ฌ net_test01์ ์ฐ๊ฒฐ๋ nginx ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค. sudo docker inspect webapp9์ ํตํด IP๋ถ๋ถ์ ํ์ธํด๋ณด๋ฉด ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. --net์ default๋ bridge์ด๋ฉฐ, host๋ก ์ ๋ฌ ์ host์ ๊ฐ์ IP๋ฅผ ๊ณต์ ํ์ง๋ง, ๋ณด์ ์์ ์ํ์ด ์๋ค.
Docker ๋ณผ๋ฅจ์ ํ์ฉํ์ฌ ์นํ์ด์ง ๋ณ๊ฒฝ
sudo docker run -itd --name=webapp3 -p 83:80 -v vol_test1:/usr/share/nginx/html nginx
/usr/share/nginx/html์ nginx์ index.html ๋ณด๊ด ์ฅ์์ด๋ค. ์ด๋ฅผ ๋ณผ๋ฅจ๊ณผ ์ฐ๊ฒฐํ๋ค.
๋ณผ๋ฅจ์ ์ํ๋ ๋๋ก index.html์ ๋ง๋ค๊ณ ์ ์ฅํ๋ฉด, /usr/share/nginx/html์๋ ๊ทธ๋๋ก ๋ณต์ฌ๋์ด ์ ์ฅ๋๋ค.
Docker๋ฅผ ์ด์ฉํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ตฌ์ถ
sudo docker volume create vol01
sudo docker volume create vol02
sudo docker volume create vol03
sudo docker run -itd --name=webapp01 -v vol01:/usr/share/nginx/html -p 8001:80 nginx
sudo docker run -itd --name=webapp02 -v vol02:/usr/share/nginx/html -p 8002:80 nginx
sudo docker run -itd --name=webapp03 -v vol03:/usr/share/nginx/html -p 8003:80 nginx
Docker ๋ณผ๋ฅจ์ ๋ง๋ค๊ณ , ๊ทธ์ ๋ง๋ nginx ์๋ฒ๋ฅผ ์์ฑํ๋ค.
sudo apt update
sudo apt install nginx
๋ฆฌ๋ ์ค์ nginx๋ฅผ ์ค์นํ๋ค.
sudo service nginx start
sudo vim /etc/nginx/nginx.conf
nginx ์คํ ๋ฐ ์ค์
์์ ๊ฐ์ด ์ค์ ํ๋ฉด, ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ์ด๋ฃจ์ด์ง๋ค.
Dockerfile
๋์ปค hub์์ ์๋์ํฌ ์ปจํ ์ด๋์ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ ํ์ผ์ด๋ค.
๊ณต๊ฐ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑ -> OS ์ค์ , ๋ฏธ๋ค์จ์ด ์ค์น -> ํ๋ผ๋ฏธํฐ ์ค์
๋์ปค ํ์ผ์๋ ์ด๋ฏธ์ง ์ ๋ณด, ์ปจํ ์ด๋ ์์์ ์ํํ๋ ๋ช ๋ น์ด, ํ๊ฒฝ ๋ณ์ ์ค์ , ์ปจํ ์ด๋ ์์์ ์๋์์ผ๋ ๋ฐ๋ชฌ ์คํ ๋ฑ์ด ์๋ค.
FROM ubuntu:latest
LABEL email=admin@naver.com
CMD ["echo", "Hello Dockerfile"]
sudo docker pull ubuntu:latest
์ค๋ช
CMD
sudo docker build -t ubuntu:v1.0 .
Dockerfile(.)์ ์ฌ์ฉํ์ฌ ubuntu:v1.0์ผ๋ก ๋น๋ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
FROM : ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ด
RUN : FROM์์ ๊ฐ์ ธ์จ ์ด๋ฏธ์ง์ ๋ํด ์คํฌ๋ฆฝํธ ํน์ ๋ช ๋ น์ ์คํ, RUN apt-get update && apt-get install -y -q nginx
COPY : ๋ก์ปฌ ํธ์คํธ์ ์๋ ํ์ผ์ ์ด๋ฏธ์ง ์์ ๋ณต์ฌ
EXPOSE : ํธ์คํธ์ ์ฐ๊ฒฐํ ํฌํธ ๋ฒํธ ์ค์
CMD : ์ปจํ ์ด๋๊ฐ ์์๋์์ ๋ ์คํ๋๋ ๋ช ๋ น์ด
ubuntu๋ฅผ ์์ฑํ๊ณ ๊ทธ ์์์ Nginx ์๋ฒ ์์ฑ
COPY์ ๊ฒฝ๋ก๋ ๋ฒ์ ์ ๋ฐ๋ผ /var/www/html/ ๋๋ /usr/share/nginx/html/์ด๋ค.
alpine(๊ฐ์ํ๋ ๋ฆฌ๋ ์ค) ์ค์น
sudo du -sh
์ฉ๋ ํ์ธ
sudo docker rmi -f $(docker images -a -q)
๋ชจ๋ ์ด๋ฏธ์ง ์ญ์
Docker Compose
๋ค์์ ์ปจํ ์ด๋๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์๊ฒ ํ๋ ๋๊ตฌ
docker-compose.yml ํ์ผ์ ์์ฑํ๊ณ , sudo docker-compose up -d
https://github.com/docker/awesome-compose/tree/master/official-documentation-samples/wordpress/
awesome-compose/official-documentation-samples/wordpress at master · docker/awesome-compose
Awesome Docker Compose samples. Contribute to docker/awesome-compose development by creating an account on GitHub.
github.com
sudo docker inspect [CONTAINER]๋ฅผ ์คํํ๊ณ , LogPath๋ฅผ ์ฐพ๋ ๊ฒ๊ณผ sudo docker logs [CONTAINER]๋ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค.
'๐๐ปโโ๏ธ ๊ธฐ๋ณธํ๋ จ > CICD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GCP] API๋ฅผ ์ฌ์ฉํ ์ ์์ ๋ (0) | 2024.08.14 |
---|---|
[GCP] Credentials ์ค์ ํ์์ฑ (0) | 2024.08.14 |
[Atlassian] CVE-2023-22527 (0) | 2024.07.06 |
[PHP] CVE-2024-4577 (0) | 2024.07.01 |
[Jenkins] CVE-2024-23897 (0) | 2024.06.25 |