๐ฅ TIL#15 Docker ์ฌ์ฉ๋ฐฉ๋ฒ ์ ๋ฆฌ
Today I learned
- ubuntu์์ Docker ์ค์น
- Docker ๋ช ๋ น์ด
- Docker image ๋ง๋ค๊ธฐ
- EC2์์ Docker image download ๋ฐ ์คํํ๊ธฐ
1. ubuntu์์ Docker ์ค์นํ๊ธฐ.
์๋ ๋ช ๋ น์ ์์๋๋ก ์คํ.
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
์ ์ ์ฐจ๊ฐ ๋ชจ๋ ์ฑ๊ณตํ๋ฉด ๋ค์ ๋ช ๋ น์ ํตํด ์ค์น์ฌ๋ถ ํ์ธ
Docker version
Docker ์ค์น์ ์๋์ ๊ฐ์ด Client / Server๊ฐ ๋ชจ๋ ์ค์น๋์ด์ผ ํจ์ ์ ์ํ์.
2. Docker ๋ช ๋ น์ด
- docker ps
์คํ์ค์ธ container๋ฅผ ๋ณด์ฌ์ฃผ๋ command
- docker ps -a
์คํ์ด ์ข ๋ฃ๋ ๊ฒ์ ํฌํจ, ๋ชจ๋ container๋ฅผ ๋ณด์ฌ์ฃผ๋ command ๋ฐ option
- docker images
(์์ฑ๋๊ฑฐ๋ download๋ iamge๋ฅผ ๋ณด์ฌ์ฃผ๋ command)
- docker images -a
(๋ชจ๋ image ๋ณด์ฌ์ฃผ๋ command ๋ฐ option)
- docker build -t {dockerHub์ ๊ฐ์ ํ ๊ณ์ ๋ช }/{์ด๋ฏธ์ง๋ช (ํ๋ก์ ํธ๋ช ๊ถ์ฅ)}:{๋ฒ์ }
(docker image๋ฅผ buildํ๋ ๋ช ๋ น์ด๋ก Dockerfile ์ฌ์ฉ)
- docker run -d -p 8000:8000 --name {container name} {image name}
(docker container ์คํ ๋ช ๋ น์ด๋ก ์์ฑ๋ ์ด๋ฏธ์ง ์ฌ์ฉ)
(-d : Deamon ์ ์๋ฏธํ๋ฉฐ ์ง์์ฑ์ ์๋ฏธ(๋ง์ฝ ๋น์ ์ ์คํ์ zombie๊ฐ ๋จ)
(-p 8000:8000: Port-fowarding ์๋ฏธ, local port 8000 ์ ๊ทผ์ docker container ํฌํธ 8000 ์ผ๋ก ์ฐ๊ฒฐ ์๋ฏธ)
(--name 'container name': ์ด๋ฆ ๋ถ์ฌ์ต์ (์ด๋ฆ์ uniqueํด์ผ ํจ))
- docker run -it 'image name' /bin/bash
(docker container๋ฅผ ์คํ์ํด๊ณผ ๋์์ container์ ์ ์, shell์ ์คํ์ํค๋ ๋ช ๋ น)
- docker stop {container name}
(docker container๋ฅผ ์ค์ง)
- docker rm {container name}
(docker container ์ ๊ฑฐ)
- docker rm 'docker os -a -q'
(docker container ๋ชจ๋ ์ ๊ฑฐ)
- docker rmi {image name}
(docker image ์ ๊ฑฐ)
3. Docker image ๋ง๋ค๊ธฐ
์ค์ ๋ก django project๋ฅผ Docker image๋ก ๋ง๋ค์ด ๋ณด์. image๋ก ๋ง๋ค์ด์ง ๋์์ ์๋ ๊ณผ์ ์ด ํ์์ด๋ค.
- requirements.txt ์ gunicorn ํจํค์ง ๊ธฐ์ฌ.
- EC2์์ Service ์คํ์ ์ํด ํ์ํ ๋ชจ๋
- Dockerfile
- Dockerfile์ ์ผ์ข ์ ๊ณํ์๋ก project์ ์ต์์์ ์กด์ฌํด์ผ ํ๋ฉฐ ์๋์ ๊ฐ์ ๋ด์ฉ์ด ์์ด์ผ ํ๋ค.
# ./Dockerfile FROM python:3 #๊ธฐ๋ฐ์ด ๋ ์ด๋ฏธ์ง(์๋ python 3 version์ ubuntu๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ธ์ค๋ ๋ช ๋ น) # ์์ ๋๋ ํ ๋ฆฌ(default)์ค์ (์ฃผ์:๊ฐ์์ปจํ ์ด๋ ๋ด์ ์ฃผ์์) WORKDIR /usr/src/app ## Install packages #ํ์ฌ ํจํค์ง ์ค์น ์ ๋ณด๋ฅผ ๋์ปค ์ด๋ฏธ์ง์ ๋ณต์ฌ COPY requirements.txt ./ #์ค์น์ ๋ณด๋ฅผ ์ฝ์ด ๋ค์ฌ์ ํจํค์ง๋ฅผ ์ค์น RUN pip install -r requirements.txt ## Copy all src files #ํ์ฌ๊ฒฝ๋ก์ ์กด์ฌํ๋ ๋ชจ๋ ์์คํ์ผ์ ์ด๋ฏธ์ง์ ๋ณต์ฌ COPY . . ## Run the application on the port 8080 #8000๋ฒ ํฌํธ๋ฅผ ์ธ๋ถ์ ๊ฐ๋ฐฉํ๋๋ก ์ค์ EXPOSE 8000 #CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"] #gunicorn์ ์ฌ์ฉํด์ ์๋ฒ๋ฅผ ์คํ CMD ["gunicorn", "--bind", "0.0.0.0:8000", "docker_train.wsgi:application"]
์ ๊ณผ์ ์ด ์ค๋น๋๋ฉด ์๋ ์ ์ฐจ๋ก image ์์ฑ
- sudo docker build -t [docker id]/[image์ด๋ฆ]:[๋ฒ์ ผ]
(ํ์ฌ ๊ฒฝ๋ก์ ์๋ Dockerfile์ ์ฝ์ด build ํ๋ค. docker id๋ docker ๊ณ์ id)
- sudo docker images -a
(์์ฑ๋ image ํ์ธ)
์ ์ฌ์ง์์ 'jinybear/docker_train:0.1' image๊ฐ ์์ฑ๋์ด ์๋ค.
- sudo docker run -d -p 8000:8000 --name docker_train jinybear/docker_train:0.1
(image ์คํ)
- sudo docker ps -a
(์คํ์ค์ธ container ํ์ธ)
- ์ ์์ ์ผ๋ก ์คํ๋๋์ง ํ์ธ์ ์ํด 'http' ๋๋ 'postman'์ ์ด์ฉํด request๋ฅผ ํด ๋ณธ๋ค.
- sudo docker stop [container id]
(์คํ์ค์ธ container ์ค์ง)
- sudo docker login
(dockerHub์ image ๋ฑ๋ก์ ์ํด login)
- docker push {docker id}/{image์ด๋ฆ}:{๋ฒ์ ผ}
(dockerHub์ image ์ฌ๋ฆฌ๊ธฐ)
4. EC2์์ Docker image download ๋ฐ ์คํํ๊ธฐ
์ด์ EC2๋ก ์ ์ํด Docker image๋ฅผ ๋ค์ด๋ฐ์ ์คํํ๋ฉด ๋๋ค. ์ ์ฐจ๋ ์๋์ ๊ฐ๋ค
1. EC2 ์ Docker ์ค์น (local ์ค์น๊ณผ์ ๊ณผ ๋์ผ)
2. Docker login
3. Docker pull {image name}
4. Docker images -a ๋ก ๋ค์ด๋ฐ์ ์ด๋ฏธ์ง ํ์ธ
5. Docker run ์ผ๋ก ์คํ ํ ๊ธฐ๋ฅ ํ์ธ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฅ TIL#15 Docker ์ฌ์ฉ๋ฐฉ๋ฒ ์ ๋ฆฌ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@jinybear/TIL14-Docker-์ฌ์ฉ๋ฐฉ๋ฒ-์ ๋ฆฌ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค