Docker 29

컨테이너 내부 파일 ⇔ 로컬 PC 파일 복사 (docker cp)

docker cp 컨테이너와 로컬 PC 사이에서 파일 또는 폴더를 복사하는 명령어 사용법 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH 정리하면 docker cp [OPTION] 저장할파일또는폴더 저장위치예시 ex1) 로컬 파일(./some_file_in_loca)을 컨테이너의 work 폴더에 복사 docker cp ./some_file_in_local CONTAINER:/workex2) 컨테이너에 있는 /var/logs 폴더에 있는 모든 파일을 로컬 PC의 /tmp/app_logs 폴더에 복사 docker cp CONTAINER:/var/logs/ /tmp/app_lo..

Docker 2023.10.11

[Docker] Docker References - EXPOSE

EXPORT 명령어 기본 문법 EXPOSE [/...] EXPOSE 명령어(instruction)는 Docker에게 container가 동작하는 동안 특정 포트를 사용한다는 것을 알려준다. 포트의 프로토콜은 TCP 또는 UDP이고 기본값으로는 TCP가 적용된다. EXPOSE 명령어가 실제로 포트 번호를 publish하는 건 아니다. 단지 이미지를 빌드하는 사람과 컨테이너를 동작시키는 사람 사이에 어떤 포트를 publish하도록 의도되었는지를 문서의 형태로 제공된다. 진짜로 container에서 port 번호를 publish하고 싶다면 docker run을 할 때 컨테이너의 -p 옵션값을 설정해줘야 한다. ex) EXPOSE 80/udp # UDP의 80번 포트를 열도록 하고 싶음 EXPOSE 80/tcp..

Docker 2023.09.18

[Docker] Docker References - LABEL

기본적인 LABEL 명령어(instruction) 문법LABEL = = = ... LABEL 명령어는 image에 메타데이터를 추가하는 기능을 갖고 있다. 위와 같이 LABEL은 key-value 쌍이다. 만약 LABEL 값에 공백을 추가하고 싶다면 큰 따옴표와 \를 사용하면 된다. ex) LABEL "com.example.vendor"="ACME Incorporated" # 공백을 포함할 때 큰 따옴표를 사용함 LABEL com.example.label-with-value="foo" LABEL version="1.0" LABEL description="This text illustrates \ that label-values can span multiple lines." # 공백을 포함할 때 백슬래시랑..

Docker 2023.09.18

[Docker] Docker References - CMD

CMD 명령어(instruction) 형식CMD ["executable","param1","param2"] (exec 형식, 이 형식을 더 선호된다) CMD ["param1","param2"] (ENTRYPOINT에 대한 기본 파라미터) CMD command param1 param2 (shell 형식) Dockerfile에는 오직 하나의 `CMD 명령어`만 존재할 수 있다. 만약, 1개 이상의 CMD 가 있다면, 가장 마지막에 있는 CMD가 동작한다. `CMD의 주요 목적`은 실행하고 있는 컨테이너에 기본값을 제공하는 것이다. 이 기본값들은 `executable`을 포함하거나 생략할 수 있다. (물론, 생략하는 경우에는 ENTRYPOINT instruction을 확정해야 한다) 만약에 CMD가 ENTRY..

Docker 2023.09.15

[Docker] Docker References - RUN

RUN 명령어는 2개의 형태를 가진다. RUN ⇒ 여기서의 command는 shell 형식의 명령어다. Linux에서는 /bin/sh -c, Windows 에서는 cmd /S /C가 생략된 거라 보면 된다. RUN ["executable", "param1", "param2"] ⇒ 이를 exec form 이라고 함 RUN 명령어(instruction)는 현재의 이미지 위에 새로운 층(layer)에서 명령을 실행하고 결과를 커밋한다. 커밋된 결과 이미지는 Dockerfile의 다음 단계에서 사용된다. 이렇게 층층이 쌓이는 RUN 명령어와 커밋들은 커밋이 간편하고 컨테이너가 Docker의 핵심적인 개념을 준수한다. exec form을 통해 shell string을 처리해야 하는 작업을 피할 수 있고 shell..

Docker 2023.09.13

[Docker] Dockerfile References - FROM

기본적인 문법 FROM [--platform=] [AS ] 또는 FROM [--platform=] [:] [AS ] 또는 FROM [--platform=] [@] [AS ]FROM 명령어는 새로운 빌드 stage를 초기화하고 뒤이어 나오는 명령어들에 대해 Base Image를 설정한다. 제대로 된 Dockerfile은 반드시 FROM 명령어 부터 시작해야 한다. 공식적으로 배포되는 이미지를 pull하면서 시작해야 편하다. FROM 명령어에서 사용하는 변수들 ARG : Dockerfile에서 FROM보다 앞에 위치하는 유일한 명령어다. 관련 내용은 잠시 후에 살펴본다. 'FROM' : 하나의 Dockerfile에 여러 번 FROM 명렁어를 사용할 수 있다. 그러면 여러 개의 이미지를 만들 수..

Docker 2023.09.05

[Docker] Dockerfile References - .dockerignore file

docker CLI가 docker daemon에게 명령문들(context)을 전달하기 전에 명령문(context)의 root 디렉토리에 있는 .dockerignore 파일을 먼저 살펴본다. 만약에 .dockerignore 파일이 존재한다면, CLI(Command Line Interface)는 .dockerignore 파일에 적혀있는 패턴과 일치하는 파일 또는 디렉토리들을 제외하기 위해서 명령문(context)들을 수정한다. 이를 통해 불필요하게 전송하는 용량이 큰 파일 또는 민감한 파일을 daemon에 전송하는 걸 막을 수 있다. 그런 파일들을 daemon에 전송해야 한다면 ADD 또는 COPY 명령어를 사용해서 이미지에 추가하면 된다. CLI(Command Line Interface)는 .dockeri..

Docker 2023.08.23

[Docker] Dockerfile reference - Environment Replacement

Dockerfile에서 Enviornment 변수(ENV 명령어로 선언됨)를 사용하여 특정 명령에서 변수를 사용할 수 있다. Environment 변수는 Dockerfile에서 $변수이름 또는 ${변수이름}으로 표현할 수 있다. 둘 다 같은 의미를 표현하고 괄호를 사용한 경우 일반적으로 공백이 없는 변수 이름과 관련된 문제를 해결하는 데 사용된다. (ex. ${변수이름}_bar) ${변수이름} 구문은 아래와 같이 표준 bash 수정자(modifier)를 지원한다. ${변수: -word} : 변수가 설정되어 있다면 지정한 변수를 출력한다. 변수가 설정되지 않았다면 word값을 출력한다. ${변수: +word} : 변수가 설정되어 있다면 word를 출력한다. 변수가 설정되지 않았다면 지정한 변수를 출력한다...

Docker 2023.08.23

[Docker] Dockerfile reference - Format, Parser Directives

출처 Docker는 Dockerfile이라는 설명서를 읽어서 이미지를 자동으로 빌드할 수 있다. 즉, 도커는 이미지를 만들기 위한 파일이다. Dockerfile은 이미지를 조립할 수 있는 모든 커맨드들을 갖고 있는 텍스트 문서다. 이번 페이지에서는 Dockerfile에서 사용할 수 있는 커맨드들을 살펴볼 것이다. Format # 주석 명령어 인자 INSTRUCTION arguments 명령어 : 대소문자를 가리지 않지만 인자(argument)와 구분하기 위해 주로 `대문자`를 사용한다. FROM 명령 도커는 Dockerfile에 적혀있는 순서대로 명령(instruction)들을 실행한다. 이때 무조건 FROM 명령을 가장 먼저 실행해야 한다. FROM 명령은 parser, directives, comme..

Docker 2023.08.21

[Docker] 7-4. 도커 컴포즈 실행

도커 컴포즈 커맨드 컴포즈 파일을 작성했으니 도커 컴포즈 커맨드를 실행해야 한다. 도커 컴포즈는 docker-compose 명령을 사용한다. 자주 사용하는 건 up과 down이고 종종 stop도 사용한다. 각 커맨드에 대해 살펴보겠다. docker-compose up 커맨드 : 컨테이너와 주변 환경을 생성 컴포즈 파일의 내용에 따라 컨테이너와 볼륨, 네트워크를 생성하고 실행한다. 컴포즈 파일의 경로는 -f 옵션을 사용해서 지정한다. (-f 옵션이 없다면 현재 작업 디렉토리를 경로로 설정한다) docker-compose -f 정의_파일_경로 up 옵션 ex) docker-compose -f C:/Users/Documents/docker-compose.yml up -d 옵션 항목 : 공식 문서 옵션 내용 -..

Docker 2023.05.31