만쥬의 개발일기
[docker] - dockerfile 문법과 작성법 : CMD vs ENTRYPOINT
🛠️TOOL/🐳Docker 2024. 5. 31. 15:54

도커파일은 도커로 이미지를 생성하기 위한 용도로 작성하는 스크립트 파일이다.도커 이미지를 빌드할 때는 전적으로 도커 파일에 의존해 빌드를 실시한다.도커 스크립트는 크게 어렵지 않지만 헷갈리는 것들이 있어 한 번 정리해두면 좋다.예시로 알아보는 명령어들도커파일 예시와 함께 각 명령어 사용법을 알아보자.# 베이스 이미지로부터 시작FROM python:3.9-slim# 작업 디렉토리 설정WORKDIR /app# 환경 변수 설정ENV FLASK_APP=app.pyENV FLASK_RUN_HOST=0.0.0.0# 라벨 설정LABEL maintainer="example@example.com"LABEL version="1.0"LABEL description="This is a sample Dockerfile."# 로..

[Docker] - 빈 도커 이미지 기본 세팅 (Ubuntu용)
🛠️TOOL/🐳Docker 2024. 3. 26. 17:45

도커 이미지를 받으면 보통 안에 아무런 툴도 깔려있지 않아 굉장히 불편하다. 할 때마다 찾기가 귀찮아서 한 번에 정리해놓겠다. 우선 관리자 모드로 들어가기 위해 다음 옵션으로 bash에 접속해준다. docker exec -u 0 -it {컨테이너명} /bin/bash 그리고 다음 입력으로 sudo, vim, net-tools(ifconfig 등) , iputils-ping(ping 용) 을 설치해준다. 이 명령어는 도커가 아닌 데비안 계열 리눅스 VM을 처음 설치할 때도 유용하게 쓰일 수 있다. apt-get update && apt-get install -y sudo && sudo apt-get install vim && sudo apt install net-tools && sudo apt-get in..

[Docker / Trouble Shooting] - 도커 설치 또는 apt-get update 중 gpg error : NO_PUBKEY XXXXXXXXXXX 해결법 총 정리
🛠️TOOL/🐳Docker 2024. 2. 14. 16:09

본 포스팅에서는 원격 서버에 도커 설치 중 발생한 에러에 대해 다룬다. 도커를 설치하려고 하면, 우선 apt-get update를 실행하게 되는데 이 때 gpg error가 발생할 때가 있다. 에러상황: $ sudo apt-get update Hit:1 bionic InRelease Get:2 bionic InRelease [4,595 B] Get:3 stable InRelease [1,825 B] Err:3 stable InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4EB27DB2A3B88B8B 그 에러를 해결하던 중 내가 겪은 모든 에러에 대해 다뤄보겠다. ..

[Docker] - 도커가 active 상태이나 빌드에 실패할 때 : ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
🛠️TOOL/🐳Docker 2024. 1. 23. 14:12

상태를 보면 다음과 같이 도커는 문제없이 active 상태이지만, 빌드에 실패할 때가 있다. $ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-01-23 11:51:01 KST; 1min 6s ago Docs: https://docs.docker.com Main PID: 25391 (dockerd) Tasks: 10 CGroup: /system.slice/docker.service ..

article thumbnail
[Docker] - Docker 개념 정리 및 예제로 보는 작동 원리
🛠️TOOL/🐳Docker 2024. 1. 22. 13:44

본 포스트는 Docker에 대해 더 이해하기 위한 글입니다. 개요 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 서비스 관리자는 도커라이징(Dockerizing) 된 컨테이너가 어떤 런타임을 필요로 하는지, 어떤 라이브러리와 코드를 필요로 하는지 전혀 알 필요가 없다. 다시 말해, 도커를 사용하면 OS 환경설정, 언어, 라이브러리, 시스템 도구 등이 설치된 환경을 그대로 이미지로 빌드할 수 있다. 그저 컨테이너를 어딘가에서 가져와서 서비스를 운영할 컴퓨팅 환경에서 실행하기만 하면 된다. 실행된 서비스는 컴퓨팅 환경과 독립된 가상의 환경에서 실행되며, 일관된 결과를 보장한다. Docker는 VS Virtual machine 혼동하기 쉽지만, Docker는 virtual machine과는 아예 다른 개..

[Docker] - 컨테이너 종료 안될 때 : Error response from daemon: cannot stop container: 8b25ecab3b40: tried to kill container, but did not receive an exit event
🛠️TOOL/🐳Docker 2024. 1. 17. 17:58

가끔가다 docker rm이나 docker stop 같은 명령어들이 먹통이 될때가 있다. rm 같은 경우는 docker rm -f 등의 명령어로 해결될 때가 있으나, docker stop같은 경우는 그냥 docker service를 재시작하는 것이 건강에 이롭다. systemctl restart docker 단, 재시작 시 실행 중인 컨테이너들이 종료되어 docker ps -a에서 확인할 수 있다. 그 중 항시 실행시켜줘야 하는 컨테이너들은 다시 docker start로 실행 시켜주자. reference https://stackoverflow.com/questions/70434777/cannot-kill-container-container-id-tried-to-kill-container-but-did-n..

article thumbnail
[Docker] - Docker Volume이 필요한 이유와 로컬 저장 위치
🛠️TOOL/🐳Docker 2024. 1. 17. 17:44

Docker Volume을 설정하는 이유는 여러가지가 있다. host disk의 일정 부분을 Docker에 할당하여 컨테이너가 종료될때 데이터가 손실되지 않도록 로컬에 백업하려고 하는 목적, Docker의 log나 outputfile 등의 결과물을 컨테이너로 접속하지 않고 확인하는 등등 여러 필요성이 있다. |그렇다면 host disk가 할당한 Volume의 실제 위치는 어디있을까? 리눅스의 경우 다음 명령어를 통해 확인 가능하다. docker volume inspect (volume 명) 위와 같이 Mountpoint가 바로 실제 볼륨의 위치인데, 바로 해당 위치로 이동하려고 하면 권한 문제가 생긴다. 이는 docker 경로와 볼륨에 대한 권한을 주어야 하는데, 다음 명령어들로 권한을 준 뒤, 접속해보..

article thumbnail
[Docker] - 배포 서버와 개발 환경의 Platform이 다를때 : The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) ...
🛠️TOOL/🐳Docker 2024. 1. 17. 16:14

문제 상황 개발환경에서 DockerHub에 Docker 이미지를 푸시하고, 배포서버에서 pull해서 사용하려고 하자 실행시 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 와 같은 에러가 발생했다. 이는 개발환경은 WSl2 Ubuntu (linux/amd64) 이고, 배포 서버는 linux/arm64 아키텍처이기 때문이다. 따라서 로컬에서 docker image를 빌드 시, 해당 아키텍처용 이미지를 만들어주어야 한다. 이를 위해선 docker buildx가 필요한데, buildx란 다..