-
Docker 쓰는 이유와 설치 방법, 명령어etc. 2021. 8. 30. 21:55728x90
한 마디로 모든 컴퓨터에서 다 잘 돌아가도록! 컨테이너 기반의 가상화 시스템(Virtualize System)
Cloud 시장의 핵심 기술로써 환영 받고 있음. 물리적인 서버 하나를 빌렸지만 여러 서버처럼 사용할 수 있도록ㅇㅇ
컴퓨터 한 대에서 여러 운영체제 사용할 수 있도록 하고 싶었으나 현실적으로 불가능ㅇㅇ 어차피 많이 쓰는 우분투나 어쩌구 저쩌구 다 똑같이 리눅스 커널 사용하는데 이를 하나로 퉁칠 순 없을까?
+) 일반적으로 애플리케이션을 가상화하는 경우 VirtualBox나 VMWare 등을 활용해 하드웨어부터 가상화를 합니다만, Docker를 사용하면 실행하고자하는 프로세스만 격리된 환경에서 실행하는 것이 가능합니다. 이를 이용해 손쉽게 프로세스를 격리할 수 있을 뿐만아니라, 격리된 환경을 이미지로 만들어서 Docker만 돌아간다면 어디서든 똑같이 동작하는 컨테이너를 만들 수 있습니다.
리눅스 컨테이너라는 이름에서 알 수 있듯이 Docker는 리눅스를 기반으로 동작하는 애플리케이션입니다. 따라서 윈도우에서는 이전부터 Docker를 사용하는 게 비교적 까다로웠습니다만, Docker 사에서는 이러한 불편함을 해소하기 위해 Docker Desktop를 공개해 Windows와 Mac 환경에서 Docker를 손쉽게 사용할 수 있도록 도와주고 있습니다.
한 한 운영체제 위에 Docker를 사용하여 어느 컴퓨터에서나 똑같이 돌아갈 수 있도록 한다.
그래서 모두를 위한 딥러닝에서는 직접 아나콘다, 파이썬 이런 것을 실제로 다 깔 필요 없이 모든 것이 다 세팅되어있는 docker 이미지를 사용한다. container에서 실습하다가 만약 에러가 난다 ? 쓰던 컨테이너 날리고 다시 컨테이너 깐다.
Docker는 리눅스 서버를 생각하고 만들었기 때문에 (Windows랑 MacOS은 커널 자체가 다른 거 알지?) Windows에서 사영할 때는 별도의 가상 머신을 사용해야 하기 때문에 Linux만큼의 성능이 나오지 않을 수 있고, GPU 사용하지 못 하는 단점이 있다.
Windows에 Docker를 설치하기 위해 Virtual box 가상 머신을 포함하는 Docker tool box를 다운 받는다.(Microsoft에서 2020년 5월 리눅스를 윈도우와 통합해서 사용할 수 있는 WSL2를 발표했기 때문에 더 이상 이렇게 설치 안하는 것 같음.)- Windows 10 Home 에디션
- WSL2 기반 Docker Engine 사용 가능
WSL을 통해 Windows에서 Ubuntu 설치 했으면 Docker Desktop 다운 받으면 될 듯하다.
시스템에 WSL2가 활성화되어있다면 Docker는 기본적으로 WSL2를 백엔드로 Docker Engine을 실행한다.
Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend) You are using the WSL 2 backend, so resource limits are managed by Windows.
Docker 설치 확인 및 간단한 nginx 서버 예제 실행해보기
Windows Terminal을 열어서 간단한 테스트를 해보겠습니다. PowerShell 탭을 하나 열고 wsl 명령어로 Docker 전용 머신이 실행중인 것을 확인할 수 있습니다.
$ wsl -l -v NAME STATE VERSION * docker-desktop Running 2 docker-desktop-data Running 2
wsl로 docker-desktop 리눅스에 명령어를 실행해볼 수 있습니다. docker-desktop은 BusyBox 기반의 경량 리눅스인 것을 확인해볼 수 있습니다.
$ wsl -d docker-desktop busybox BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary. ...
docker version 명령으로 Docker 서버와 클라이언트 정보를 확인해봅니다.
$ docker version Client: Cloud integration: 1.0.17 Version: 20.10.7 API version: 1.41 ... Server: Docker Engine - Community Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) ...
docker ps로 실행중인 컨테이너를 확인해봅니다.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
아직 아무것도 실행중이지 않은 것을 확인할 수 있습니다. 여기서부터는 nginx 이미지로 간단한 서버 테스트를 해보겠습니다. 먼저 웹 브라우저를 열어 127.0.0.1:4567에 접속해봅니다. 다음과 같이 사이트에 접속을 할 수 없는 상태인 것을 확인합니다.
4567 포트로 접속해도 아무것도 나타나지 않습니다
docker run 명령어로 nginx 이미지 기반 컨테이너를 하나 실행해봅니다.
$ docker run -p 4567:80 -d nginx:latest Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx b4d181a07f80: Pull complete edb81c9bc1f5: Pull complete b21fed559b9f: Pull complete 03e6a2452751: Pull complete b82f7f888feb: Pull complete 5430e98eba64: Pull complete Digest: sha256:47ae43cdfc7064d28800bc42e79a429540c7c80168e8c8952778c0d5af1c09db Status: Downloaded newer image for nginx:latest 5909b49c4a0e677fae0146846bdf4feca1ef869ece4cc46499f58d00f311e3d1
Docker에서는 이미지를 자동으로 다운로드 받고 실행해줍니다. docker ps로 실행한 컨테이너를 확인합니다.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5909b49c4a0e nginx:latest "/docker-entrypoint.…" 1 second ago Up Less than a second 0.0.0.0:4567->80/tcp, :::4567->80/tcp musing_allen
다시 웹 브라우저에서 127.0.0.1:4567에 접속해보면, 이제 ‘Welcome to nginx!’ 메시지가 나타납니다.
4567 포트로 nginx 서버가 실행중인 것을 확인할 수 있습니다
사용하지 않는 컨테이너는 docker rm 명령어로 삭제해줍니다. 5909b49c4a0e는 docker ps에서 확인할 수 있는 컨테이너 ID입니다.
$ docker rm -f 5909b49c4a0e
이제 즐겁게 Docker를 활용하기만 하면 됩니다! LainyZine에서는 Docker 관련 기능과 팁을 소개하고 있으니 참고해주세요.
https://brunch.co.kr/@hopeless/10
728x90'etc.' 카테고리의 다른 글
Git / Github / Markdown 공부 2 (0) 2021.11.21 pycharm 설치 및 우분투 menu에 아이콘 설정 (0) 2021.09.19 nvidia graphic card 설치 및 Cuda & Cudnn 설치 (0) 2021.09.19 requirements.txt 만들고 설치하기 (0) 2021.09.03 Git / Github 공부 1 (0) 2021.09.03 - Windows 10 Home 에디션