이번 포스팅에선 docker를 학습하면서 많은 기능이 있겠지만 docker 다운로드부터 hub를 활용해서 image들을 다운 받아 직접 사용까지 해보는 실습을 해볼 것 이다.
효율성과 일관성: Docker 컨테이너는 응용 프로그램 및 모든 종속성을 포함하므로 환경이 일관되고, 어디에서나 실행될 수 있습니다. 이것은 "한 번 빌드하고 어디에서나 실행한다(develop once, run anywhere)"는 원칙을 실현할 수 있습니다.
빠른 배포와 확장성: Docker 컨테이너는 가볍고 빠르게 시작되며, 호스트 시스템과 독립적으로 실행될 수 있습니다. 이는 배포 프로세스를 가속화하고, 필요에 따라 컨테이너 인스턴스를 쉽게 확장할 수 있다는 것을 의미합니다.
환경 격리: Docker는 응용 프로그램 및 모든 종속성을 격리된 환경에서 실행할 수 있게 해줍니다. 이는 응용 프로그램 간의 충돌을 방지하고, 시스템 전체의 안정성을 유지하는 데 도움이 됩니다.
리소스 관리: Docker는 호스트 시스템의 자원(CPU, 메모리 등)을 효율적으로 사용할 수 있도록 관리합니다. 여러 컨테이너를 실행하면서도 각 컨테이너가 필요한 만큼의 자원만 사용할 수 있습니다.
마이크로서비스 아키텍처: Docker 컨테이너는 마이크로서비스 아키텍처의 일부로 사용될 수 있습니다. 각 마이크로서비스는 독립적으로 배포되고 확장될 수 있습니다.
간편한 관리: Docker는 커맨드 라인 도구 및 웹 기반 대시보드를 통해 컨테이너를 관리하고 모니터링하는 기능을 제공합니다.
다양한 환경 지원: Docker는 Linux, Windows, macOS 등 다양한 운영 체제에서 동작할 수 있습니다. 또한 대부분의 클라우드 플랫폼에서도 Docker 기반의 컨테이너를 지원합니다.
이러한 이유들로 인해 Docker는 개발, 테스트, 배포 및 확장 가능한 응용 프로그램을 구축하고 관리하는 데 널리 사용된다.
https://www.docker.com/get-started/
mac 에서 학습하고 싶지만 현재는 window이기 때문에 해당하는 버전으로 다운 받아준다..
크기가 조금 있기 때문에 다소 시간이 걸리고 설치가 완료되면 여부를 묻지 않고 바로 재부팅이 되기 때문에 데이터 유실에 신경쓰자..
다운로드가 다 되면 wsl --update
를 하라는 경고문이 뜨는데 cmd 켜준 후 바로 진행 해 준다.
로그인을 하면 아래같은 화면이 나오게 된다.
docker image 란 예시를 들어서 옛날의 CD게임이다. 근데 요새는 본체에 CD드라이브가 없기 때문에 예전의 CD는 지금의 .iso 파일로 변했다.
그 .iso 파일을 다운받는다고 생각하면 된다.
nginx 를 테스트로 한번 사용해보도록 하겠다.
docker run nginx
위의 명령어를 입력하면 먼저 해당하는 image가 있는지 찾고, 없으면 다운받아서 만들어준다
image 에 등록된 모습
container 에서 돌아가고 있는 모습
nginx의 기본 포트는 80이기 때문에 localhost로 접속을 해 보면 nginx default page가 나오는 모습을 볼 수 있다.
이런식으로 이미지를 등록하고 컨테이너에서 실행시키면 바로 해당 모듈을 사용할 수 있음.
또한 예시로 간단하게 nginx 를 테스트 했지만 docker hub 에 들어가서 docs를 보면서 진행하면 여러가지 모듈들을 전부 설치없이 편하게 사용이 가능하다.
하나의 예시만 더 mysql로 docs를 보면서 진행해보자.
https://hub.docker.com/_/mysql
docker run mysql
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
를 실행해보니 image 다운은 받았지만 container에서 실행을 할 때 필요한 옵션을 주지 않아서 에러가 낫었다.
따라서 다음과 같은 명령어로 mysql image를 다운받고 container 에서 실행까지 해볼 것 이다.
-d 옵션은 demon으로 background 에서 실행하려고 사용한 옵션이다.
docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql
기존 local에 mysql 이 설치되어 있기 때문에 포트를 3307로 변경하였다. 또한 많은 명령어가 있겠지만 간단하게 밑의 것 들만 주로 사용하였음.
docker ps 현재 실행중인 프로세스
docker ps -a 모든 프로세스
docker stop mysql(컨테이너id도가능) 정지
docker start mysql 시작
또한 docker 의 mysql 에 data를 저장하면 backup 되는 data들이 담겨있는 공유폴더를 생성해서 연결해보자.
docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=1234 -v C:\tmp\mysql:/var/lib/mysql -d mysql
이런식으로 실행해주면 mysql 에 data 를 생성하고 해당 container 와 image 를 전부 삭제하고, 다시 다운받아서 run 했을 시 data 가 사라지지 않고 복구할 수 있다.
오늘은 간단하게 hub 를 사용해서 image 다운받고 실행시키는 실습만 진행해 보았고 docker 에 대한 자세한 포스팅은 개념공부를 하면서 다시 하도록 하겠다.
유익한 내용 감사합니다.