Docker
-
[Docker] Dockerfile user 권한 변경 설정Docker 2023. 1. 2. 22:15
Dockerfile에서 base 이미지를 사용하고 필요한 패키치를 설치하려고 할 때, 이미지를 빌드 시 다음과 같은 permission 에러가 발생한다. => ERROR [2/4] RUN apt-get update 0.3s ------ > [2/4] RUN apt-get update: #5 0.263 Reading package lists... #5 0.272 E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied) base image에 따라 user권한이 바뀌어 있을 수 있으므로, FROM 코드 밑에 USER root를 추가하여 root 유저로 권한 변경 후 패키지 설치 코드를 작성하면 된다. FR..
-
[Docker] Ubuntu 도커 우분투 설치 (feat. docker 이미지 pull하기)Docker 2021. 7. 16. 08:50
시스템 최신 업데이트 $ sudo apt update 사전 설치 진행 $ sudo apt install apt-transport-https ca-certificates curl software-properties-common Docker repository key 추가하기 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" $ sudo apt update Docker 설치 $ sudo apt install docker-ce Docker d..
-
[Docker] RUN vs CMD vs ENTRYPOINT 실행 명령어 차이점 비교Docker 2021. 6. 26. 10:07
RUN Shell command 실행과 같이 이미지 빌드 과정에서 필요한 커맨드 실행하기 위해 사용 보통 이미지 위에 패키지를 설치하고, 새로운 레이어 생성(RUN 명령어 실행할 때 마다)할 때 사용 CMD default 명령어나 파라미터 설정에 사용 docker run 실행 시 별도의 command 주지 않으면, CMD 명령어가 default로 실행됨 docker run 실행 시 command 명령어(ex. echo)가 있다면, CMD 명령어는 무시됨(덮어쓰기) 즉, docker container 실행할 때 사용할 default 명령어를 설정함 여러개의 CMD 중 가장 마지막 CMD 1개만 실행 됨 ENTRYPOINT docker run 실행 시 수행하는 명령어로 container를 실행할 수 있게 설..
-
[Docker] Dockerfile $ 환경 변수 활용 방법Docker 2021. 6. 25. 23:02
변수 사용 $ 변수 사용시에는 "=" 앞 뒤로 공백 없이 입력해야 한다. 선언한 변수를 사용하기 위해서는 ${변수이름} 또는 $변수이름 으로 표기 ENV MODEL_NAME="GS" ENV MODEL_VERSION="${MODEL_NAME}_${TIMESTAMP}" `(백틱) Template literals $(변수)와 같은 기능 JavaScript에서 문자열을 입력하는 방식 내장된 표현식을 허용하는 문자열 리터럴 런타임 시점에 일반 javascript 문자열로 처리 및 변환 백틱(`)은 내부 명령어의 실행 결과를 스트링으로 반환 TIMESTAMP=`date +%y%m%d%H%M` # TIMESTAMP=2106251525 - 이상 오늘의 삽질일기 끝! 여기저기 삽질도 해보고 날려도 먹으면서 배우는 게 결..
-
[Docker] EXPORT vs ARG vs ENV 환경변수 생성 명령어 비교Docker 2021. 6. 23. 23:32
ARG AKA "build-time variables" Docker 이미지를 build할 때(RUN) 환경 변수 생성 Dockerfile에서 ARG로 정의된 순간부터 이미지 빌드되는 시점까지 사용됨. 컨테이너 실행 시에는 ARG 변수 접근 불가 Dockerfile에서 ARG 값을 default로 주지 않고, build 명령어에 값을 지정하지 않으면 에러 발생함 해당 default 값이 있다면, build 명령 시 ARG 값으로 대체됨 ENV Build 단계에서 참조 가능(ARG를 ENV에 pass하는 경우 등) Docker 컨테이너를 실행할 때(ENTRYPOINT, CMD) 환경 변수 전달 및 덮어쓰기 가능 # expect a build-time variable(이미지 빌드 시 --build-arg 파라..
-
[Docker] Image build 자동화를 위한 Shell Script 작성하기Docker 2021. 6. 11. 22:05
👉 이미지 빌드를 위한 파일 압축 및 빌드 명령어를 자동화하기 위해 Shell Script에 작성하기 👉 해당 스크립트를 실행하기 위한 Task를 Airflow DAG에 추가하기 3-1) Shell Script 작성 👉 Docker 이미지 빌드를 위한 cmd 명령어 등 관련 명령어들 자동화 하기 위해 shell script에 작성 buildargs={"TIMESTAMP":"${TIMESTAMP}"} # Image Build 시 필요한 파일들 압축 tar -cvf Dockerfile.tar.gz Dockerfile requirements.txt app.py ... # CLI 명령어 첫번째 전달 파라미터 -> $1 # Image TAG Name from Airflow DAG(current_dag_run_ti..
-
[Docker] Docker API를 활용한 도커 이미지 빌드하기Docker 2021. 6. 3. 23:37
배경상황: AWS EC2 인스턴스에서 docker 컨테이너 실행 후 bash로 들어가서 Dockerfile을 작성함. 이 Dockerfile을 가지고 도커 이미지를 빌드하고 ECR에 올린 다음 ECS로 컨테이너를 실행하는 것이 최종 목표. docker 컨테이너 안에서 이미지 빌드/컨테이너 실행은 docker-in-docker 형태로 가능함. 몇 가지 방법이 있는데 1. docker socket을 활용한 bind mount 2. docker in docker인 dind 또는 3. docker 컨테이너 안에서 docker 수동 설치하기 4. docker 컨테이너를 실행한 이미지 빌드용 Dockerfile에 도커 설치 명령어 추가하기 그러나 1,2,4번의 경우 기존에 작성된 Dockerfile이 없기 때문에 ..
-
[Docker] Dockerfile 도커파일 이미지 빌드 시 환경변수 전달 방법(Feat. ARG, ENV)Docker 2021. 5. 19. 21:49
docker image 빌드 1. 이미지 빌드 명령어 입력 시 ARG로 TIMESTAMP 환경변수 전달 2. docker 이미지 빌드 과정에서 Dockerfile ARG 변수 정의(기존 값 대체=재정의) 3. Dockerfile ENV 변수 NAME 생성 4. TIMESTAMP와 NAME 변수로 이루어진 ENV 변수 VISITOR 생성(CMD 실행 목적, ARG는 불가) docker container 실행 5. 빌드한 이미지로 docker 컨테이너 실행 시 CMD 명령어로 ENV 환경변수 VISITOR 출력 Dockerfile 코드 # 도커 이미지 빌드 시 사용 환경변수(ARG) ARG TIMESTAMP # 도커 컨테이너 실행 시 CMD에서 사용 환경변수(ENV) ENV NAME="MyName" ENV ..