본문 바로가기

docker6

[Docker] Dind (Docker in docker) / Dood(Docker out of docker) Jenkins와 같이 CI/CD 툴을 Docker 컨테이너로 이용할 때, 타 WAS의 이미지를 빌드하고 컨테이너로 사용하려고 하면 아래와 같은 고민사항이 있을 것이다. Jenkins 컨테이너 내부에서는 로컬호스트와 격리된 환경이기 때문에 이미지를 빌드할 때 이용될 때에는 어떤 도커를 기반으로 이미지를 생성할지, 컨테이너의 각 환경은 어떻게 외부와 통신을 할 것인지 등의 의문이 들 것이다. 그렇기 때문에 다음과 같은 개념이 생기게 되었다. 1. Dind(Docker in docker) Dind(Docker in docker)는 문자의 의미 그대로 도커 내부에서 로컬 호스트에서 이용하는 도커와는 다른 별도의 도커를 사용한다는 의미이다. 그 예시로 Jenkins 컨테이너에서 도커 이미지를 빌드하려면 도커가 필.. 2023. 6. 24.
[Docker] 볼륨 마운트 / 바인드 마운트 도커에서 이미지를 이용하여 컨테이너를 생성할 때, 기본적으로 컨테이너를 생성하고 난 뒤의 데이터들은 컨테이너가 삭제되면서 같이 삭제된다. 이를 컨테이너와 함께 삭제되지 않도록 로컬 호스트에 위치하도록 하고 싶거나, 컨테이너에 내부에서 사용되는 디렉토리 또는 파일을 로컬 호스트 또는 다른 컨테이너와 동시에 참조할 필요성이 있을 때, 도커에서 제공하는 볼륨 마운트와 바인드 마운트 기능을 이용하면 된다. 1. 볼륨 마운트 볼륨 마운트는 도커 컨테이너에서 사용할 특정 볼륨을 생성한 후 컨테이너를 이용할 때 해당 볼륨과 마운트 하여 이용한다는 것으로 아래 순서를 통해 이용이 가능하다. 1) 볼륨 생성 # 볼륨 생성 $ docker volume create my-volume 1-1) 볼륨 확인 # 볼륨 상세 확인 .. 2023. 6. 21.
[Docker] 컨테이너의 Resource 사용 확인 도커에서는 다양한 기능을 제공하고 있고, 각 컨테이너가 사용하고 있는 컴퓨터 자원을 확인하는 명령어 또한 존재한다. $ docker stats 위 명령어를 통해 Running 중인 컨테이너의 컴퓨터 자원의 사용량을 알 수 있다. 컨테이너의 CPU 또는 메모리를 과도하게 점유로 인하여 API 제공에 장애가 생길 수 있기 때문에, 서버에서 갑작스러운 속도저하 발생 시 해당 명령어를 통해 체크해 볼 수 있다. 명령어 입력 시 아래의 사진처럼 출력이 되며 실시간 사용량을 볼 수 있다. 2023. 4. 17.
[ELK] Logstash - Postgresql 연결 실패 (Docker Network) 도커를 이용하여 PostgreSQL을 Build 후 해당 DB의 데이터를Logstash를 이용하여 Elasticsearch와 연동하는 과정에서 생긴 에러이다. [ERROR][logstash.inputs.jdbc ][main][01b8fcd4a63cf0b14c82113572d5c31371649609a57c0007cc38eb353a2e434e] Unable to connect to database. Tried 1 times {:error_message=>"Java::OrgPostgresqlUtil::PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the pos.. 2023. 2. 24.
[Docker] docker 명령어 시 Linux(Ubuntu) 권한 문제 해결 # docker 명령어 실행 $ docker compose up Got permission denied while trying to connect to the Dockerdaemonsocket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied EC2 상에서 docker를 설치 후 권한이 없어서 실행이 불가할 때 아래의 방법을 통해 해결을 할 수 있다. 1. 그룹 확인 : $ groups - 그룹 확인 후 docker가 없을 때 그룹에 추가 $ sudo groupadd docker 2. .. 2023. 2. 21.
[Docker] Docker / Virtual Machine 과거에는 VM(가상머신)과 Container(컨테이너)라는 개념이 존재하지 않았고, 그에 따라 필요한 만큼 물리적으로 서버를 새로 구축하여 연결하는 작업을 했었다. 각 서비스가 요구하는 환경설정이 있고, 특정 서비스가 다른 서비스가 필요로 하는 환경과 충돌이 일어날 수 있기 때문에 물리적으로 분리를 시켜 구축을 했었던 것이다. 이로 인해 나온 것들이 Virtual Machine(가상머신)과 Containerization(컨테이너화)이다. 위 두 가지를 통하여 서로 격리된 환경에서 애플리케이션을 구동할 수 있는 것이다. 가상머신과 컨테이너의 가장 큰 차이점은 OS의 공유하는 데 있어 차별점을 둔다. 1. Virtual machine (가상머신) 가상머신은 생성할 때마다 Guest OS를 새로 설치해야 하기.. 2023. 2. 10.