개발 등/DOCKER 12

Failure to install and run Docker in WSL Ubuntu 22.04 (works in 20.04): "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?..

WSL 로 설치한 Ubuntu에서 Docker를 설치해서 실행할 경우 다음과 같은 에러가 발생할 수 있다. $ sudo docker run hello-world $ docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. docker version 등으로 확인하면 잘 나온다. 다만 문제가 있어 데몬이 실행이 안되어 발생하는 오류다. 도커 실행 후 cat /var/log/docker.log를 확인하면 마지막 라인에 iptables 설정에 문제가 있어 데몬 실행이 되지 않은 것을 확인할 수 있다. sudo update-alternatives --config iptables 명..

개발 등/DOCKER 2023.09.04

root 계정으로 도커 컨테이너 실행하기

docker exec 명령어로 도커 컨테이너에 접속하면 컨테이너 사용자 계정으로 로그인이 된다. 컨테이너 리눅스에 프로그램을 설치할 경우 root 퍼미션이 없어서 안되는 경우가 있다. 이 경우에는 컨테이너 접속할 때 root 계정으로 접속할 수 있는 방법이 있다. linux 의 root uid 가 0이므로 docker exec 명령어 다음 -u 옵션 뒤에 0의 값을 주면 된다. $ docker exec -u 0 예를 들어 다음과 같이 실행하면 된다. $ docker exec -u 0 94fca2f2d5f4 whoami root

개발 등/DOCKER 2023.08.22

Docker Swarm 모드의 Round-Robin 방식에 대해

Round-Robin 방식이란 시분할 시스템을 위해 설계된 컴퓨터, 네트워크 스케쥴링 알고리즘의 하나이다. 도커 스웜모드는 라운드-로빈 방식을 사용하는데, 각 프로세스에 할당한 일정시간 지나면 스웜 클러스터 내의 다른 프로세스들에게 돌아가며 기회를 부여하는 운영방식이다. 보통 시간 단위는 10 ms ~ 100 ms 정도로, 시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 되고, 전환의 오버헤드가 큰 반면에 응답시간이 짧은 장점이 있어 실시간 시스템에 유리합니다.

개발 등/DOCKER 2023.03.10

도커 호스트 모니터링

CAdvisor 사용 구글이 만튼 도커 컨테이너 모니터링 도구 docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ > --volume=/var/lib/docker/:/var/lib/docker:ro \ > --volume=/dev/disk/:/dev/disk:ro \ > --publish=8080:8080 \ > --detach=true \ > --name=cadvisor \ > google/cadvisor:latest * volume으로 마운트되는 디렉토리는 도커 데몬의 정보를 담고 있다. * 실행 후 포트된 localhost:8080으로 접속하면 웹 모니터링 화면으로 접속해서 확인할 수 ..

개발 등/DOCKER 2023.03.07

Dockerfile 로 빌드할 때 주의 사항

RUN 으로 실행하면 해당 레이어가 이미지에 포함되므로 의도치 않은 결과를 가져올 수 있다 # vi Dockerfile FROM ubuntu RUN mkdir /test RUN fallocate -l 100mb /test/dummy RUN rm /test/dummy 빌드해보면 아래의 결과를 볼 수 있다. 원래 ubuntu:77MB 빌드된 이미지: 200MB 이유는 마지막 RUN rm /test/dummy하기 전 RUN fallocate -l 100mb /test/dummy로 생성된 레이어가 이미 이미지에 포함이 되었기 때문이다. 이를 해결하기 위해서는 레이어를 따로 생성하지 않고 최종 명령어가 반영된 최종 레이어만 이미지에 포함하면 된다. 그러기 위해서는 RUN 명령어에 && 연산자를 사용해서 하나의 명..

개발 등/DOCKER 2023.03.07

DOCKER HUB에 이미지 배포

이미지 생성 # docker run -it --name first_container ubuntu 이미지 커밋 # docker commit first_container [이미지명]:태그 도커 계정 생성 도커 허브 리포지토리 생성 이미지명 및 태그명을 리포지토리에 맞춰서 변경 도커 계정 로그인 # docker login 이미지 푸시 # docker push [저장소이름]/[이미지명]:태그 혹 docker.io/v2/: net/http: TLS handshake timeout 에러가 발생할 경우, ubuntu:sudo service docker restart centos: sudo systemctl restart docker

개발 등/DOCKER 2023.03.04

unable to start container process: exec: "mongo":

docker run --name mongoDB -d \ -p 27017:27017 \ mongo위 명령어로 mongoDB 컨테이너를 실행한 후 docker exec -it mongoDB mongo로 실행해서 위의 에러가 발생하는 경우가 생길 수도 있다. Using MongoDB: 6.0.4 Using Mongosh: 1.8.0이 버전에서 에러가 발생하는데 쉘 커맨드의 명령어가 mongo나 bash 가 아닌 mongosh로 변경되었다고 한다. 아래의 명령어를 실행하면 된다. docker exec -it mongoDB mongosh

개발 등/DOCKER 2023.03.04

도커 ubuntu 컨테이너에서 ifconfig: command not found

ubuntu 이미지가 기본으로 생성하는 모듈로 인해 ifconfig 명령어가 실행되지 않는다. 이를 해결하기 위해서는 아래 단계를 거치면 된다. apt-get 업데트 sudo 설치 sudo로 net-tools 설치 # apt-get update # apt-get install -y sudo # sudo apt-get install -y net-tools위의 과정을 거친 뒤 ifconfig 명령어를 실행하면 네트워크 정보가 조회될 것이다.

개발 등/DOCKER 2023.03.03