목록Sparta Coding Club/Docker (15)
취미가 좋다

사용하지 않는 docker 리소스 정리 사용하지 않는 컨테이너, 이미지, 네트워크, 볼륨을 삭제하면 메모리나 디스크 낭비를 줄일 수 있다. 아래의 명령어로 차례대로 컨테이너, 이미지, 네트워크, 볼륨을 확인한다. docker ps -a docker images docker network ls docker volume ls 아래의 명령어로 불필요한 리소스를 삭제한다. docker rm container_id docker rmi image_id docker network rm network_id docker volume rm volume id docker system prune docker system prune 명령어는 아래의 여러 가지 것들을 삭제한다. -a에 옵션을 붙이면 더 많은 것들을 삭제한다. c..
Docker-compose 란? 여러 컨테이너를 편리하게 실행하기 위해 만들어진 도구이다. yaml 파일을 정의해서 사용한다. (YAML 이란 데이터를 저장하는 파일 포맷으로, XML / JSON 보다 사람이 읽기 더 편하다는 장점이 있다.) docker-compose 로 memo application 실행하기 기존 커맨드는 아래와 같다. docker build . -t wellshs/docker-memo:latest docker run -d -p 5000:5000 wellshs/docker-memo:latest 위의 과정을 docker-compose로 실행하기 위해, 아래의 docker-compose.yaml 파일을 생성한다. version: "3.9" services: flask: build: con..
컨테이너가 호스트의 리소스(disk, memory)를 너무 많이 쓰면 발생하는 문제들이 있다. 메모리가 부족하게 되면, 호스트의 커널에서 잘 안쓰는 듯한 프로세스를 삭제하게 된다. 만약 이 프로세스가 필요한 프로세스였다면 문제가 된다. 특정 컨테이너가 cpu를 과하게 사용하게 되면, 다른 컨테이너가 동작하지 않을 수 있다. 만약 프로세스가 살아있는지 검사하는 외부 프로세스가 있을 때, cpu를 할당받지 못해서 응답을 못하는 프로세스가 죽었다고 판단하는 문제가 발생할 수도 있다. 디스크가 부족하게 되면, 새로운 프로세스를 생성하지 못하는 문제가 발생할 수 있다. docker stats stats 명령어로 각 컨테이너가 사용하고 있는 리소스를 확인할 수 있다. memory 제한하기 docker run -i ..
Docker Network 란? 도커 컨테이너들은 분리된 file system과 네트워크를 가지므로, 도커 네트워크를 통해 컨테이너간 통신을 가능하게 해준다. Docker Network 문법 1. 도커 네트워크 생성 docker network create test 2. 컨테이너 실행할 때 도커 네트워크 연결 docker run -d -p 24017:24017 --network test --network-alias mongo mongo --network 옵션으로 test 네트워크에 연결한다. --network-alias 로 앞으로 이 컨테이너에 연결하고 싶을 때, 이 네트워크 안에서 mongo 라는 이름으로 연결한다. 3. 컨테이너에서 다른 컨테이너 호출하기 docker run -it --network t..
코드를 변경할 때마다 이미지를 새로 만들고 띄우기는 매우 불편하다. 이 글에서는 코드가 변경되었을 때, 이미지를 새로 생성하지 않더라도 바로 적용될 수 있는 법을 알아본다. Docker bind mount docker run -v {host_path}:{container_path} bind mount의 문법은 위와 같고, 이전에 볼륨을 마운트 하는 것과 유사하다. 이를 사용해서 메모 어플리케이션을 실행한다. docker run -v "$(pwd)/templates:/templates" -p 80:5000 wellshsdocker-memo:version2 docker run -v ./templates:/templates -p 80:5000 wellshsdocker-memo:version2 로컬에 있는 $(..

컨테이너의 데이터 일반적으로 도커 컨테이너를 실행한 서버에서 무언가를 작업하고 저장하더라도, 컨테이너가 삭제되면 그 정보도 사라진다. 도커는 다시 실행시켜야 하는 일이 무조건 존재하기 때문에, 컨테이너가 삭제되더라도 정보를 유지시킬 필요가 있다. 컨테이너가 실행되면 매번 비어있는 메모리에서 시작한다. 또한 컨테이너끼리는 같은 이미지이더라도 file system을 공유하지 않는다. named volume & bind mount 두 가지 기능으로 위의 문제를 해결할 수 있다. MongoDB docker로 띄우기 컨테이너에 할당된 메모리에 저장되던 데이터를, mongodb에 저장할 것이다. docker run --name mongo_db -p 27017:27017 -d mongo Robo3T 다운로드 : 편하..