private docker registry 를 사용할 경우 로그인 정보를 넣어줘야한다. docker 라면 docker login 명령으로 해결이 가능하다. 그런데 쿠버네티스 환경에서는 어떻게 로그인 정보를 넣어야 하는지 기억이 안날때가 있다. $ docker login Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Username: 아이디 Password: 암호 Login Succeeded! 해결방법 쿠버네티스에서는 시크릿에 로그인 정보를 등록해서 관리가 가능하다. pod 혹은 deployment 를 생성하고 로그인 정보가 없으면 ImagePullBackOff 가 나올수 있다. 이때는 아래와 같이 시크릿에 도커..
Airflow 에서는 Docker 를 사용하기위한 DockerOperator 가 존재한다. 그리고 도커 이미지가 잘 동작하는지 확인하기위해 docker run 명령어를 이용해서 실행해보고 이를 airflow 의 DAG 로 등록하는 경우가 많을것이라고 생각한다. 그런데 이걸 DockerOperator 로 구성할때 인자값이 헛갈리는데 이를 비교해서 구성하는 예시를 안내하로자 한다. Docker 커맨드로 실행하는 예제 아래와 같은 명령어로 docker run 을 테스트해보았다고 가정하겠다. 볼륨 마운트와 EntryPoint 변경 그리고 CMD 에 환경변수 까지 존재하는 여러 케이스를 나열한 샘플이다. 그럼 이걸 AirflowDAG 로는 어떻게 표현할까? % docker run --entrypoint /keyt..
이미지를 입맛에 맞게 사용할때, 이미지를 새로 빌드하지 않고 실행시점에 ENTRYPOINT 를 엎어써서 사용하는게 유용하다. 이때, ENTRYPOINT 와 CMD 의 특징을 이해하고 작업하면 도움이 되므로 차이를 모른다면 아래글을 읽고 테스트해보자 2022.09.21 - [docker & kube] - [Docker] RUN, ENTRYPOINT, CMD 차이 이해하기 로컬에서 인사말 출력하기 이해를 돕기위해 아래와 같은 동작을 하는 쉘스크립트를 도커에서 어떻게 구성할지에 대해 접근해보자. 아래와 같은 쉘스크립트 동작을 도커에서 동작하게 한다고 가정한다. % cat /home1/user/hello.sh #!/bin/bash for name in $@ do echo "안녕하세요! 님 반갑습니다." done..
도커를 사용하다보면 사용하는 용량이 점점 커지면서 100% 채우면서 서버 로그인도 안되는 상황이 발생되기도 한다. 이럴때 할수 있는 조치는 크게 2가지가 있다. 1. 미사용 리소스 삭제하기 centos 기준 docker 의 기본 경로는 "/var/lib/docker" 인데, 이 하위 폴더에 다양한 임시파일이나 이미지 컨테이너 관련 파일들이 누적되면서 용량이 커지는 문제가 있다. 해당 폴더의 용량을 찾아보면 overlay2 폴더의 용량이 거대해지는 특징이 있는데 이런 경우 아래와 같이 명령어를 입력하면 미사용 리소스를 삭제하면서 용량이 확보된다. overay2 관련 내용이 궁금하면 아래 링크를 좀더 읽어보자. https://tech.kakaoenterprise.com/171 [컨테이너 인터널 #2] 컨테이..
windows 용 도커데스크탑을 설치하고, 명령어 프롬포트로 간단히 docker 프로세스 상태 확인 명령어를 날려보면 아래와 같은 오류가 발생한다. 이 상태는 docker 를 사용하기위한 세팅이 마무리 안되었기 때문이다. C:\Users\gildong>docker ps error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified. 상황파악하기 작업표시줄에 도커아이콘이 보..
회사에서 private-docker-registry 를 구성해서, 딴 서버에서 컨테이너 이미지를 땡겨오려고 했는데 다음과 같은 오류가 발생했다. 신기한건 도메인을 써도 아이피를 써도 동일하게 안되는 현상이 있었다. $ docker pull docker-registry.myinfra.com:5000/sample:0.1 Error response from daemon: Get "https://docker-registry.myinfra.com:5000/v2/": http: server gave HTTP response to HTTPS client 해결방법 /etc/docker/daemon.json 파일을 추가해서 private docker registry 의 ip, domain 정보를 추가후 재기동하면 해결되..
docker 를 사용하다보면 내가 필요한 이미지를 만들어야 하는 경우가 생기고, 이 컨테이너 이미지를 업로드해서 사용해야할 상황이 발생된다. 여기서는 간단히 빌드를 하고, 이걸 private docker registry 에 업로드 하는 간단한 흐름을 정리해보겠다. (인터넷에서는 너무 조각내용으로 있어서 큰그림을 이해하기 어려운듯 하여 정리) 1. Dockerfile 우리가 개발할때 maven 은 pom.xml 에 빌드가 정의되고, gradle은 build.gradle 에 정의 되는것처럼 docker 컨테이너 이미지를 빌드할때 구성하는 파일은 Dockerfile 이라는 이름으로 구성을 한다. 아래내용은 로컬에 있는 readme.txt 파일을 컨테이너안에 복사하고, wget 모듈을 설치하는 간단한 샘플이다...
DockerRegistry 란? 도커이미지를 업로드하고 다운로드 할수 있는 저장소로 생각하면 쉽다. 우리가 maven 을 통해 deploy 하고 가져올수 있는것과 비슷하다. 기본적으로는 오픈된 https://hub.docker.com 을 이용해서 사용하는데, ip당 가져오는 횟수가 제한되어있기도 하고, 회사에서 별도로 이미지를 관리해야 하는 상황이 오면 결국 사내 DockerRegistry 를 운영할 수 밖에 없다. 여기서는 가장 쉽게 설치 가능한 방법을 알려주도록 하겠다. 1. 도커설치 초간단 설치가 가능한 이유는 Private Docker Registry 자체도 도커이미지로 존재하기 때문에 그걸 사용하기 때문이다. 물론 도커가 설치된 이후가 기본이겠지만 안되어있다면 도커부터 설치하도록 한다. 편의상 ..