Dockerfile
- 이미지를 어셈블하기 위해 호출할 수 있는 명령이 포함된 텍스트 파일
- Dockerfile 에 빌드 관련 내용이 다 기재되어 있기 때문에 docker-compose.yml 에서 빌드 관련 내용을 기재할 필요 없이 dockerfile의 경로를 지정하기만 하면 된다.
- FROM: Base Image를 지정할 수 있다. easy to start by pulling an image from the Public Repo.
- RUN: 새로운 레이어에서 명령어 실행 하고 결과를 commit한다. 결과적으로 commit된 이미지는 그 다음스텝에서 사용된다.
- RUN command 형태나 RUN ["executable", "param1", "param2"] 이런식으로 실행할 수 있다.
- EXPOSE: EXPOSE는 Docker에게 container가 runtime에 어떤 특정 network ports 으로 listen할 지 알려주는 역할을 한다. TCP, UDP로 listen할 것인지를 선택할 수 있고, default는 TCP이다. host machine과 container port mapping시에 사용된다. container 생성 시 container port값으로 EXPOSE 값을 적어야한다.
- WORKDIR: 작업 디렉토리 지정
- COPY: 파일이나 directory를 <src>에서 container의 filesystem으로 복사해오는 것.
- CMD와 ENTRYPOINT
- CMD: docker container가 실행될 떄 실행되는 명령어를 정의합니다. 빌드할 때는 실행되지 않으며, 여러개의 CMD가 존재하면 가장 마지막 CMD만 실행됨.
- ENTRYPOINT: 컨테이너가 수행될 때 반드시 entrypoint에 지정한 명령을 수행하게 된다. 컨테이너 실행할 때 인자값을 주면 CMD에서는 그것을 실행하고, ENTRYPOINT에서는 그것을 실행 명령의 parameter로 알고 실행하게 된다.
docker-compose.yml (TBU)
다중 컨테이너 docker 어플리케이션을 정의하고 실행하는 도구. 앱을 구성하는 서비스를 docker-compose.yml에 정의하여 docker-compose up 명령어로 앱을 실행한다.
docker-compose파일에서 build 아래에 dockerfile을 지정해 놓을 때, dockerfile아래의 CMD 는 실행되지 않으므로 command field 에 따로 컨테이너가 실행되었을 때 실행 될 명령을 지정해 놓을 수 있다.
docker-compose.yml이 있는 곳에서
- docker-compose down으로 현재 실행되고 있는 container를 종료시킬 수 있다.
- docker-compose up
궁금한 field:
docker run -it 옵션의 의미: docker 컨테이너에 표준 입력(stdin)을 열어두고(-i), 가상 터미널을 열어(-t) 키보드의 입력을 표준 입력으로 전달할 수 있도록 하는 옵션이다. 아래는 docker run의 옵션을 docker-compose.yml에서 어떻게 쓸 수 있는지에 대한 것이다.
- stdin_open: true -> docker run -i의 -i와 같다. Keep STDIN open even if not attached
- tty: true -> docker run -t의 -t와 같다. Allocate a pseudo-tty
Reference
https://pyrasis.com/jHLsAlwaysUpToDateDocker/Unit08/02
https://docs.docker.com/compose/compose-file/#service-configuration-reference
'Backend with Golang' 카테고리의 다른 글
[Concurrency-1] Concurrency가 왜 어려운가? (1) | 2023.05.28 |
---|---|
MySQL - Transaction (0) | 2023.05.09 |
Go: JSON (0) | 2023.05.03 |
Goroutine (0) | 2023.05.01 |
Go's Syntax (0) | 2023.04.27 |