문제점 network-name이란 네트워크를 생성하는 데 다른 네트워크의 ip주소 범위와 겹쳐 발생하는 에러이다. 본인의 상황을 예시로 설명하겠다. 먼저 생성되어있던 다중 컨테이너 그룹1의 서브넷 네트워크를 172.16.0.0/16으로 생성했었다. 새로 생성하는 다중 컨테이너 그룹2의 서브넷 네트워크를 172.16.2.0/24로 생성하는데 문제가 발생했다. 먼저 생성되어 있던 그룹1의 호스트 주소가 172.16.0.0 ~ 172.16.255.255 까지 있을 수 있다. 근데 새로 생성하려는 그룹2의 서브넷 네트워크가 그룹1의 서브넷 네트워크의 호스트 주소에 포함되어 둘이 겹치게 되어 문제가 발생했다. 해결방법 방법은 여럿 존재한다. 1. 그룹1의 접두어를 /24로 변경 2. 그룹1과 그룹2가 겹치는 네트..
docker-compose 파일 작성 문법 비슷하거나 같은 의미인 것은 주석이 한번만 달려있음 # docker-compose 버전 명시 version: "3.9" # 생성할 서비스(컨테이너) 지정 services: # nginx란 이름의 서비스 생성 nginx: # nginx:latest 이미지로 서비스 생성 # DockerFile기반이 아니라면 아래 image의 주석을 해제하고 build와 그 하위의 context와 dockerfuile을 주석처리해야함 #image: nginx:latest # nginx란 서비스를 실행하는 컨테이너의 이름 지정 container_name: nginx # DockerFile기반으로 서비스를 생성하기 위한 build명령 build: # DockerFile이 있는 경로 ..
docker는 컨테이너들간, 외부 host와의 통신 위해 가상 linux bridge를 이용한다. 컨테이너 생성 시 네트워크를 지정하지 않으면 docker network ls 명령에서 나오는 것 중 bridge를 기본 네트워크로 사용한다. 기본 네트워크는 docker의 호스트 컴퓨터를 재시작하면 컨테이너에 할당했던 ip가 초기화되어 재할당시키므로 웹 서버나 db서버의 ip가 달라져 통신에 문제가 생길 수 있다. 이를 해결하기 위해 새로운 bridge를 만들고 컨테이너들을 기본 bridge가 아닌 새로 만든 bridge에 할당시킨다. docker network create --gateway 172.20.0.1 --subnet 172.20.0.0/16 myBridge 이후에 docker run 할 때 --..
이 글에선 mount, port 설정의 편의를 위해 단일 컨테이너를 생성하더라도 docker-compose를 사용한다. docker-compose.yaml version: "3.9" services: nginx: image: nginx:1.23.2 ports: - "80:80" environment: - TZ=Asia/Seoul # volumes: # - ./nginx.conf:/etc/nginx/nginx.conf ports는 "호스트포트:컨테이너포트" 형식이므로 "80:80"으로 설정한다. nginx에서 기본적으로 설정되어있는 포트가 80이므로 80을 연결한다. 이말은 설정에서 변경시키면 바꿔도 상관없다는 말이다. 호스트도 겹치지 않는 다른 포트로 설정해도 된다. environment는 컨테이너 생성..
현재 설치된 이미지 목록 sudo docker images 이미지 추가 sudo docker pull imageName:tagName image와 tag는 docker hub에서 필요한 것을 검색해서 찾는 걸 추천 이미지 삭제 sudo docker rmi imageName:tagName 현재 실행중인 컨테이너 목록 sudo docker ps 컨테이너 정보 확인 sudo docker inspect containerName 컨테이너의 low level 정보를 반환해주는 명령어 컨테이너 추가 sudo docker run -d --name containerName -p hostPort:containerPort -e TZ=Asia/Seoul \ --restart=always -v hostDirectory:cont..