728x90
반응형

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 )으로 생성됩니다. 

  1. docker-compose -f docker-compose.dev.yml build  // 이미지 빌드 
  2. docker-image ls // 도커 이미지 확인 
$ docker-compose -f docker-compose.dev.yml build 
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 을 수행해도  컨테이너는 기동 후 바로 종료된다. 

 

[docker_test@centos7:/data1/docker_test/compose/os]$ docker-compose -f docker-compose.dev.yml 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)입니다. 

 

 

$ docker-compose -f docker-compose.dev.yml  down           
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           

$ docker-compose -f docker-compose.dev.yml exec ubuntu /bin/bash 
root@53513453d705:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

 

728x90
반응형

'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

+ Recent posts