docker-compose 를 이용해 빌드를 진행해 보겠습니다.
파일 구조는 아래와 같습니다.
os
|-- Dockerfile : 빌드 하기 위한 도커 파일
`-- docker-compose.dev.yml : docker-compose 에서 실습할 yml 파일
ubuntu 20.04 버전으로 이미지를 만들도록 하겠습니다.
내용은 없습니다.
Docker File 생성(Dockerfile)
FROM ubuntu:20.04
RUN echo " TEST ubuntu"
docker-compose.yml 파일 생성 (docker-compose.dev.yml)
version: '3.8'
services:
ubuntu: ## Service Name
container_name: ubuntu20 ## Container Name
build:
context: . ## build Docker file location
dockerfile: Dockerfile ## build file name
docker-compose build
docker-compose 수행시 사용되는 default 파일명은 docker-compose.yml 입니다.
운영과 개발 이미지를 분리하고자 한다면 docker-compose.dev.yml (개발) or docker-compose.prod.yml 처럼
파일을 분리해서 컨테이너를 관리하면 됩니다.
만약 default 파일이 없다면 아래와 같은 에러가 발생합니다.
docker-compose build
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml
docker-compose 명령을 통해 Dockerfile 빌드를 진행후 생성된 이미지를 확인 합니다.
이미지명은 현재 디렉토리명_커테이너명(os_ubuntu )으로 생성됩니다.
- docker-compose -f docker-compose.dev.yml build // 이미지 빌드
- docker-image ls // 도커 이미지 확인
Building ubuntu
Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM ubuntu:20.04
---> ff0fea8310f3
Step 2/2 : RUN echo " TEST ubuntu"
---> Using cache
---> 70456ca2c54a
Successfully built 70456ca2c54a
Successfully tagged os_ubuntu:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
os_ubuntu latest 70456ca2c54a 6 hours ago 72.8MB
Docker Container 기동 및 확인
컨테이너 기동 명령어는 docker-compose -f [compose file name ] up or up -d 입니다. -d 일경우 컨테이너가 백그라운드로 실행 되게 됩니다.
docker-compose -f docker-compose.dev.yml up 또는
docker-compose -f docker-compose.dev.yml -up -d (백그라운드 실행)
컨테이너 상태 확인 시 종료 되어있습니다.
Docker 는 Virtual machine 이 아니라 가상화된 공간을 제공해 줄 뿐이다 .
이러한 이유로 docker-compose up 을 수행해도 컨테이너는 기동 후 바로 종료된다.
Creating network "os_default" with the default driver
Creating ubuntu20 ... done
Attaching to ubuntu20
ubuntu20 exited with code 0
[docker_test@centos7:/data1/docker_test/compose/os]$ docker ps -an 1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7a79b9a66fb os_ubuntu "bash" About a minute ago Exited (0) About a minute ago ubuntu20
Docker Container 접속
- docker-compose.dev.yml
version: '3.8'
services:
ubuntu: ## Service Name
container_name: ubuntu20 ## Container Name
build:
context: . ## build Docker file locate
dockerfile: Dockerfile ## build file name
command: tail -f > /dev/null
재기동 및 접속
- docker-compose down : 도커 컨테이너를 중지 시키고 삭제 합니다.
- docker-compose stop : 도커 컨테이너를 중지 시킵니다.
- docker-compose start : 도커 컨테이너를 실행합니다.
- docker-compose ps : 컨테이너 상태를 확인합니다.
- docker-compose exec [servicename] [shell cmd] : 도커 컨테이너 접속
- 접속시 컨테이너 명이 아니고 .yml 파일에 작성한 서비스 명(ubuntu)입니다.
Stopping ubuntu20 ... done
Removing ubuntu20 ... done
Removing network os_default
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53513453d705 os_ubuntu "tail -f > /dev/null" 44 seconds ago Up 4 seconds os_ubuntu "tail -f > /dev/null" 44 seconds ago Up 4 seconds
$ docker-compose -f docker-compose.dev.yml ps -a
Name Command State Ports
----------------------------------------------
ubuntu20 tail -f > /dev/null Up
root@53513453d705:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
'02.Docker > docker-compose' 카테고리의 다른 글
[docker-compose] docker mysql 설치 (0) | 2022.04.01 |
---|---|
docker-compose 를 이용한 Oracle 19c 설치 (0) | 2022.03.22 |
Docker-compose 설치 (0) | 2022.03.21 |