본문 바로가기
반응형

Docker22

Docker - docker-compose로 다중 컨테이너 관리하기 Docker를 실제 사용하다보면, Database, Web, Memory Cache 등 다중 컨테이너로 사용해야 하는 상황이 종종 발생한다. 이때 만약 기본적인 Docker 명령을 활용한다면, 아래와 같이 여러 단계를 거쳐야 한다. 1. 먼저 함께 사용할 내부 네트워크를 생성하고, 2. 이후 Docker를 Run을 통해 실행할때 마다 네트워크 및 볼륨정보등 각각의 필요한 옵션을 지정해야 줘야 한다. 아래 명령은 myapp이라는 네트워크를 생성하고, Database의 저장을 위해 mariadb-data라는 볼륨용도의 컨테이너를 생성하여 Mysql 5.7버전의 컨테이너를 생성하는 명령이다. $ sudo docker network create myapp $ docker run -d --network my-ap.. 2023. 2. 21.
Docker - Image Alpine, Slim, Stretch, Buster, Jessie, Bullseye Docker 개발을 진행하다보면, 기본 이미지 선택을 하게 되는데, 각 필요한 프로덕션에 추가로 붙는 이녀석이 무엇인지 너무 궁금하다. Alpine, Slim, Stretch, Buster, Jessie, Bullseye 이를 이해하기 위해서는 먼저 Docker Image의 Tag 방식을 이해하는 것이 좋다. Tag는 : 다음부터 작성된 내용이 Tag로 사용되는데, 앞에 메인이 되는 Python, Node와 같은 개발할 환경을 선택하고 이후 Tag를 통해 버전을 지정하게 된다. 가장 기본이 되는 이름은 다음과 같다. : 그 이후로는 추가적으로 세부적 필요에 따라서 타입을 나누어 구분하게 된다. :--.... Alpine, Slim, Stretch, Buster, Jessie, Bullseye는 이러한 타.. 2023. 2. 14.
Docker - alpine Image에 Pandas, Numpy 설치하기 alpine은 가장 기초적인 커널이 존재하는 버전이다. 사용해야 하는 상황에서 Pandas 를 사용해야 하는 경우 라이브러리로 인해 정상적으로 설치가 되지 않는다. 이유는 alpine이 가벼운 OS를 지향하다보니, Pandas에서 필요로 하는 라이브러리 대부분이 구성이 되어 있지 않아서 발생한다. 오류 내용으로보면, Numpy 설치 관련 라이브러리 오류로 확인된다. 가장 손쉽게 해결할 수 있는 방법으로 python alpine 이미지보다는 slim-buster를 사용하기를 추천한다. FROM python:3.10.4-slim-buster 2023. 2. 14.
Docker - detach/attach(백그라운드/포그라운드) 실행 이거를 정리해야 하나 싶다가도, 필자 역시 처음으로 옵션을 찾아보고 이해하는데 도움이 되고자 여기에 정리해본다. 가장 쉽게 본다면, 아래 표와 같이 정리 할 수 있다. Docker 명령(기본) Docker 옵션 Docker Compose 옵션 백그라운드 실행 (Detached mode) start --detach / -d -d 포그라운드 실행 (Attached mode) run --attach / -a (없음) 도커는 기본적으로 detach와 attach 모드로 사용하는 명령마다 기본 실행모드가 정해진다. 이를 무시하고 정해진 모드로 동작하도록 구성할 있는 옵션이 --detach/--attach 옵션이다. 포그라운드 실행(Attached mode), run 포그라운드 실행은 현재 실행하는 터미널(콘솔)에.. 2023. 1. 3.
Docker - Mariadb 실행 요점 정리, 볼륨 구성등 실행할때 마다 웹 검색해서... 어떻게 하면 좋을까 싶어 정리해본다. 가장 기본적으로 Mariadb를 실행하기 위해서는 Password 설정을 해주어야 한다. 아래 입력이 가장 짧게 진행하는 것이다. 여기에 -p 옵션을 이용해서 포트를 호스트에서 연결할 수 있도록 하면 기본적인 환경 구성은 완료되었다고 할 수 있다. docker run --detach --name mariadb -p 3306:3306 --env MARIADB_ROOT_PASSWORD=password! mariadb:latest 실행할 때 필수로 사용해야 하는 옵션에 대해서 알아보도록 하자. --detach: docker run 명령은 기본적으로 백그라운드 실행을 하지 않아 터미널에 실행상황을 출력하게 된다. 따라서 백그라운드 실행을 하고.. 2023. 1. 2.
Docker, Certbot을 이용한 Let's encrypt 인증서 발급 및 관리 Certbot과 Nginx를 이용한 Let's encrypt관리 방안을 기존에 정리하였는데, 이번에는 Docker를 활용하는 방법을 정리해보고자 한다. Ubuntu - Let's Encrypt으로 Nginx에 무료 SSL 적용 (asecurity.dev) Ubuntu - Let's Encrypt으로 Nginx에 무료 SSL 적용 SSL 인증서는 구매하여 사용하기에는 큰 대형 사이트가 아니라면, 일반적인 작은 사이트 혹은 프리랜서용 사이트라면 부담이 클 수 있다. 이를 해결해 주는 것이 바로 Let's Encrypt 에서 제공하는 asecurity.dev 호스트에 Docker를 활용하지 않고 Certbot을 직접 설치해서 진행해도 되지만, Docker를 활용한다면, 설치 없이 진행이 가능하기 때문에, 호스.. 2023. 1. 1.
Docker - Storage path, 저장 위치 변경 Docker의 컨테이너와 이미지들은 파일 기반으로 저장되어 관리된다. 이 기본 위치는 /var/lib/docker/ 에 위치된다. 만약 컨테이너와 이미지 들이 많아진다면, 별도의 스토리지를 이용해서 용량을 관리하는 것이 좋다. 그럼 기본 저장 위치를 변경하는 방법에 대해서 알아보도록 하겠다. 가장 좋은 방법은 data-root 라는 기본 저장 위치 경로를 변경해주는 방법이다. 이를 위해서는 deamon.json(없는 경우 신규로 생성)로 관리하는 방안으로 docker 서비스를 중지한 이후, /etc/docker/ 하위에 아래와 같이 작성해 주면 된다. (필자가 지정할 신규 경로는 /data/docker 이다) $ sudo service docker stop $ sudo nano /etc/docker/da.. 2022. 12. 22.
Docker - Docker Network, 컨테이너 간 통신하기 요즘 마이크로 서비스를 만들면서, 하나의 서버에서 멀티 Docker 컨테이너로 구성하는 경우가 많다. 필자 역시 DB, API, WEB등 기능으로 구분해서 컨테이너간에 통신하도록 구성하게 된다. 이때 가장 문제가 되는 부분이, 바로 컨테이너간 통신에, locahost를 사용할 수 없다는 것이다. 이유는 컨테이너는 개별 호스트처럼 이식되어 개별 컨테이너마다 localhost를 본인으로 지정하게 된다. 이를 쉽게 회피하는 방법은 1. 서버의 IP로 통신을 하면 되지만, 실제로 이렇게 통신을 구성하게 되면, Docker 컨테이너는 실제 Docker 내부의 네트워크를 가지고 있어서 호스트하는 서버로 패킷이 이동한후 다시 컨테이너내 네트워크로 이동하는 패킷 비용 손실과 서버 IP가 고정이 아닌경우 컨테이너를 실행.. 2022. 12. 15.
Docker - 빌드, 업로드, 실행하기 1. Docker 빌드 하기 이제 만들어진 Dockerfile을 통해 Docker Image를 빌드할 차례이다. 아래와 같이 build 명령을 이용해서 손쉽게 빌드를 진행할 수 있다. image tag를 이용해 빌드된 이미지를 구분할 수 있으므로, 적당한 이름을 지어주도록 하자. #docker build -t (image tag) . 2. Docker 업로드 하기 만들어진 이미지는 docker image ls 명령으로 확인이 가능하다. Docker Hub에 로그인한 이후 docker push 명령을 통해서 내가 방금 만든 이미지를 업로드 할 수 있다. Docker Hub는 계정내 디텍토리 유형으로 이미지를 관리할 수 있기 때문에 업로드할 경로를 지정하도록 하자. #docker login #docker i.. 2022. 12. 14.