Lsiron
Docker 기초부터 배포까지 - python, django(elice) 본문
Docker는 소프트웨어 컨테이너화 플랫폼으로, 애플리케이션을 그 종속성과 함께 패키징하여 일관된 환경에서 실행할 수 있도록 돕는 도구이다. Docker를 사용하면 개발, 테스트, 프로덕션 환경에서 일관된 성능을 유지할 수 있으며, 배포 과정을 단순화하고 효율화할 수 있다.
즉, Docker란 환경설정을 편리하게 해주는 도구이다.
Docker는 소프트웨어 개발, 배포, 운영의 모든 단계에서 많은 이점을 제공한다.
일관된 환경 제공, 리소스 효율성, 빠른 배포 및 롤백, 확장성, 마이크로서비스 아키텍처 지원, CI/CD 통합, 플랫폼 독립성, 개발자 생산성 향상, 보안 격리 등 다양한 필요성을 충족시키며, 이는 Docker를 현대 소프트웨어 개발 및 운영의 필수 도구로 만들었다.
Docker를 도입하면 소프트웨어 개발 및 배포 과정이 단순화되고, 더 높은 품질의 소프트웨어를 더 빠르게 제공할 수 있다.
Docker를 시작하기 전에 먼저 vi 기초부터 진행 해보자.
vi 기초
$ mkdir practice_01
명령어로 폴더를 하나 만들어준다.
$ cd practice_01
명령어로 practice_01폴더에 들어가준다.
$ vi README.md
명령어를 입력한다. 아래 사진처럼 나온다.
vi는 insert 모드와 normal 모드가 있다.
i
를 누르면 insert 모드가 된다.
아무거나 입력하고 esc를 누른다.
:w
를 입력하고 enter를 누르면 저장이 된다.
:q
를 입력하고 enter를 눌러서 밖으로 다시 나온다.
$ cat README.md
명령어를 입력해서 내용을 확인한다.
$ vi elicer.txt
명령어를 입력한다.
:wq
를 입력한다. (저장하고 나가기)
$ ls
명령어를 입력하고
$ cat elicer.txt
명령어를 입력한다. 파일은 있는데 내용은 없다. => 빈 파일을 생성하는 경우
$ mkdir practice_02
명령어를 입력하고 폴더 하나를 더 만든다.
$ cd practice_02
명령어를 입력하고 폴더로 이동한다.
$ vi 01.py
명령어를 입력하고 파일을 하나 만든다.
i
를 눌러서 insert 모드로 들어간다.
아래 사진과 같이 입력한다
esc
를 누르고
:wq
를 입력해서 나와준다.
$ cat 01.py
명령어를 입력하고 내용을 확인한다
$ python 01.py
명령어를 입력하고 파일을 실행시킨다.
$ vi 02.py
명령어로 파일을 하나 만든다.
i
를 눌러서 insert 모드로 들어간다.
아래 사진과 같이 입력한다.
esc
를 누르고
:wq
를 입력해서 밖으로 나온다.
$ python 02.py
명령어로 파일을 실행시킨다.
아래 사진처럼 나온다.
$ cd ~
명령어를 입력하여 home으로 온다.
$ vi .bashrc
명령어를 입력한다.
shift + g
를 눌러서 맨 밑으로 내려온다. ( 파일의 아래 맨 끝으로 가는 단축키이다. )
shift + 4
를 눌러서 맨 끝으로 간다. ( 줄의 우측 맨 끝으로 가는 단축키이다. )
a
를 눌러주고 insert 모드로 들어간다. ( 커서가 있는 방향에서 insert모드가 시작된다. )
:q!
를 입력하고 enter를 눌러주자 :q!는 저장안하고 나가기이다.
$ mkdir practice_03
명령어를 입력하고 폴더 하나를 더 만든다.
$ cd practice_03
명령어를 입력하고 폴더로 이동한다.
$ vi practice_03/01.py
명령어를 입력하고 i를 눌러서 아래와 같이 입력한다.
:w 를 입력한 뒤 저장해주고
:e practice_03/02.py 를 입력해준다. (:e 명령어는 바로 파일로 이동해서 입력하는 창으로 들어간다)
아래 사진과 같이 입력해보자.
vm 기초가 끝났다.
이제 본격적으로 Docker 기초를 실행해보자
먼저 구글 클라우드에서 인스턴스를 하나 만들어주자.
리전은 서울로 하고 머신유형은 standard의 e2-standard-2(ram 8기가)를 선택해주자.
부팅 디스크는 운영체제는 ubuntu 그리고 버전은 ubuntu 22.04 LTS 로 선택해 주고, 크기는 30GB로 설정해주자.
(10GB는 너무 작음)
마지막으로 HTTP와 HTTPS 트래픽을 허용해주자.
인스턴스를 생성이 완료됐으면
SSH 옆 화살표를 눌러주고 브라우저 창에서 열기를 눌러주자.
이제 터미널 창이 열렸다.
docker 명령어의 경우 네트워크과 관련된 작업 및 로우레벨 작업이 있을 수 있어서 유저권한으로 도커 명령어 진행시 sudo가 동반되어야한다.
그러나 처음 도커 명령어 배우는데 계속 sudo 를 입력하기 힘들기 때문에 root로 진행을 해보자.
$ sudo su
명령어를 입력하여 root로 바꿔주자. (바꿔주면 $ 에서 # 으로 바뀜)
# cd ~
명령어를 입력하여 root의 home으로 가보자.
# apt update && apt upgrade
명령어를 입력하여 패키지 업데이트 및 업그레이드를 해주자.
이제 docker를 설치 할 차례이다.
https://docs.docker.com/engine/install/ubuntu/
1. 위 사이트로 가서 아래 명령어대로 입력 해주자.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
2. 아래 명령어를 입력해준다.
# 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 "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
3. 아래 명령어를 그대로 복사해서 입력해준다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 잘 설치 됐는지 확인 하려면 아래 명령어를 그대로 복사해서 입력해준다.
sudo docker run hello-world
자, 이제 docker가 성공적으로 설치되었다.
# mkdir installs
명령어를 통해 폴더를 하나 만들어주자.
#cd installs
명령어를 통해 폴더로 들어가주자. 이제 파이썬 버전관리 툴인 conda를 설치해보자.
https://www.anaconda.com/download/success
위 사이트로 들어가서 해당 사양에 맞는 링크로 우클릭을 눌러서 링크 주소복사를 눌러주자.
# wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
명령어를 입력해서 conda를 설치해주자.
# sh A
를 입력하고 tab을 눌러주면
# sh Anaconda3-2024.06-1-Linux-x86_64.sh
로 바로 입력이 된다 enter 를 눌러준다.
# q
를 입력하고 enter를 누른 뒤, More이 뜨면 계속 enter를 눌러주자.
license를 동의하냐는 말이 나오면 yes를 입력하고 enter를 누르면 설치가 된다.
# sudo su root
명령어를 통해 다시 돌아와준다. ( 맨 앞이 (base) 로 바뀜 )
# conda env list
명령어를 입력해주자.
# conda search python
명령어를 입력해주자.
# conda create -n general python=3.10.14
명령어를 입력해주고나서
y를 입력하여 설치해준다.
# conda activate general
명령어를 입력해주자. ( 맨 앞이 (general) 로 바뀜 )
이제 우리는 general 이라는 환경을 만들었다!
# conda env list
명령어로 conda를 확인해주자.
# docker ps
명령어로 docker를 확인해주자.
# mkdir things
명령어로 폴더를 하나 만들어주고
# cd things
명령어로 폴더 안으로 들어가서
# mkdir myweb
명령어로 폴더를 만들어주고
# cd myweb
명령어로 폴더 안으로 들어가주자
# pip install django
명령어를 입력해서 django를 설치해주자
# django-admin startproject elice .
명령어를 입력해서 django 프로젝트를 실행해주자.( elice뒤에 . 온점 필수로 입력)
# apt install tree
명령어로 tree를 설치해주자.
# tree
명령어로 한번 확인 해보자.
# vi elice/settings.py
명령어를 입력하고
ALLOWED_HOSTS = [] 를
ALLOWED_HOSTS = ["*"] 로 바꿔주자.
저장하고 나와서
# python manage.py runserver 0.0.0.0:8000
명령어를 입력해주자.
이제 구글 클라우드로 돌아와서 접속을 해보자.
접속이 안된다. 포트를 열어주지 않아서 그렇다.
VM을 클릭해주자.
네트워크 인터페이스 란을 가서 default 를 클릭해주자.
왼쪽 사이드 바의 방화벽에 들어가주자.
방화벽 규칙 만들기를 눌러주자.
타겟은 네트워크의 모든 인스턴스를 선택해주고,
IPv4 의 범위는 0.0.0.0/0 으로 입력해주자.
프로토콜 및 포트는 tcp를 설정해주고 port는 8000 으로 입력하자.
다시 터미널로 돌아와서
# python manage.py runserver 0.0.0.0:8000
명령어를 입력해보자.
http://외부 IP 주소:8000/ 로 접속하면 서버가 열린다!
이제 docker를 실행해보자.
# cd ~
명령어를 통해 다시 home으로 돌아오자.
# sudo docker run hello-world
명령어로 hello world 를 찍어보자.
위와 같이 결과가 나오는데 이는
1. image 가 있나 확인
2. image를 pulll
3. image -> container 생성
과정을 거쳤다.
# docker image ls
명령어를 통해 image를 확인해보자.
위와 같이 결과가 나온다.
# docker container ls -a
그러면 명령어를 통해 컨테이너를 한번 확인해보자.
# docker container rm [container id]
명령어를 통해 container를 지워보자.
# docker image ls -a
명령어를 통해 이미지 리스트를 확인하고
# docker pull hello-world
명령어를 통해 hello-world 이미지를 가져오자.
# docker image ls
명령어를 통해 이미지 리스트를 확인하고
# docker container create hello-world
명령어를 통해 컨테이너를 하나 만들어주자.
# docker image rm [image id]
명령어를 통해 이미지를 지워보자.
# docker container rm [container id]
명령어를 통해 다시 컨테이너를 지워보자.
이미지 생성과 컨테이너 생성 및 삭제 연습도 해 보았다.
이제 네트워크 명령어를 사용할 수 있는 툴을 설치해보자
# apt install net-tools
명령어를 통해 설치를 해준다.
# ifconfig
명령어를 통해 네트워크를 확인 해준다.
도커 환경에서 작업을 하고 싶다 -> -it
# docker container run -it ubuntu
이 도커 우분투 안에서 우리가 작업할 수 있게 세팅을 해보자.
# apt update && apt upgrade
명령어를 통해 업데이트와 업그레이드를 해주자.
# apt install vim
명령어를 통해 vi를 설치해주자.
# exit
명령어를 통해 나가주자.
# docker container ls -a
명령어를 통해 컨테이너를 확인 해 주자.
# docker container commit [container id] myubuntu(이름 아무거나 해도 상관없음)
명령어를 통해 컨테이너를 이미지로 만들어보자 (커밋을 하면 이미지로 간다)
# docker image ls
명령어를 통해 이미지를 확인해보자.
# docker run -it myubuntu
명령어를 통해 이미지를 실행해보자.
# vi
명령어를 입력하면 실행이 된다.
dockerhub 사이트로 가서 가입해보자.
# exit
명령어를 통해 밖으로 나간다.
# docker login
명령어를 통해 username과 password를 입력해주고 login을 해준다.
# docker image ls
명령어를 통해 이미지 리스트를 확인한다.
# docker tag myubunty:latest lsiron/myubuntu:0.1
명령어를 통해 이름을 바꿔주고
# docker push lsiron/myubunty:0.1
명령어를 통해 push를 해준다.
'배포 > docker' 카테고리의 다른 글
리눅스 환경에서 작업 진행 전 할 것 그리고 git에 올리기 까지!(elice) (0) | 2024.07.02 |
---|