[Docker] compose 기본 사용법

Docker 컨테이너가 많아지고 각각의 컨테이너별 실행 옵션들을 모두 관리할 수 없기 때문에 YAML 파일을 사용하여 다중 컨테이너를 관리합니다. 컨테이너 실행 관리뿐만 아니라 개발 및 테스트 등 여러 환경에서의 작업을 구성할 수 있습니다.

 

docker compose 설치

docker를 설치해도 docker compose는 같이 설치되지 않기 때문에 docker compose를 설치합니다.

# apt install docker-compose

설치 완료 확인

# docker-compose --version
docker-compose version 1.29.2, build unknown

 

docker-compose.yml 파일 생성

docker compose 명령어로 컨테이너 실행 시 docker-compose.yml 파일 이름을 기본으로 실행합니다. 옵션으로 다른 이름의 YAML 파일을 지정하여 사용할 수도 있지만 기본 이름을 많이 사용합니다.

간단히 httpd 컨테이너 이미지를 사용하여 docker-compose.yml 파일을 작성해보겠습니다.

# vi docker-compose.yml
services:
  httpd1:
    image: httpd:latest
    container_name: my-web-server1
    ports:
      - "8080:80"

가장 먼저 최상위에 services를 선언한 이후에 서비스 관련 내용을 작성해줍니다.
httpd1 이름의 서비스를 생성해주고 컨테이너 관련 설정을 넣어줍니다.
간단히 httpd:latest 이미지를 사용해서 my-web-server1 이름의 컨테이너를 생성하고 외부에서 8080번 포트로 접속 시 80번 포트로 포트포워딩하도록 설정하였습니다.

 

docker-compose 실행 및 종료

docker-compose.yml 파일을 생성한 위치에서 up 명령어로 컨테이너를 실행합니다.

  • -d 옵션은 백그라운드에서 실행하는 옵션입니다.
# docker-compose up -d
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

docker-compose.yml 파일에 정의한 내용으로 컨테이너가 실행되었는지 확인합니다.

# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS                                   NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   my-web-server1

컨테이너 실행 후 8080번 포트로 접속 시 웹 접속을 확인하실 수 있습니다.

 

stop 명령어로 컨테이너를 종료합니다

# docker-compose stop
Stopping my-web-server1 ... done
# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED      STATUS                     PORTS     NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   2 days ago   Exited (0) 2 minutes ago             my-web-server1

 

down 명령어를 사용 시에는 컨테이너를 종료할 뿐만 아니라 제거합니다.

# docker-compose down
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

docker-compose.yml 파일이나 기타 설정을 변경한 후 컨테이너를 재시작하는 것만으로 적용이 안되는 경우가 있어 설정 변경 후에는 downup 을 같이 진행하는 것이 좋습니다.

# docker-compose down && docker-compose up -d
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

간단히 docker-compose.yml 파일을 작성해보고 실행하는 것을 알아보았습니다.

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15
[Docker] 간단 설치 방법  (0) 2022.09.07

[Docker] 기본 명령어

Docker 에서 사용하는 명령어에서 많이 사용하는 명령어를 위주로 정리해보았습니다.

 

# docker ps

docker 컨테이너 상태를 출력해주는 명령어입니다.

docker ps -a

 

docker ps 명령어에 여러 옵션이 있지만 -a 옵션을 사용하지 않으면 실행중인 컨테이너만 출력됩니다.

docker ps

# docker run

컨테이너를 생성하고 시작하는 명령어입니다.
docker run 명령어로 컨테이너를 실행할 수 있지만 컨테이너가 많아지고 옵션이 많아지면 관리하기 힘들기 때문에 보통은 docker-compose를 작성하여 컨테이너를 관리합니다.

docker run {option} {image}:{tag}

docker run -dit --name my-web-server3 -p 8070:80 httpd:latest

 

# docker start, stop

컨테이너를 시작, 종료하는 명령어입니다.

docker start {Name or ID}

 

docker stop {Name or ID}

 

# docker rm

컨테이너를 삭제하는 명령어입니다.

docker rm {Name or ID}

 

구동중인 컨테이너를 삭제 시 아래와 같이 에러가 나옵니다.

 

옵션( -f )을 추가하여 강제로 구동중인 컨테이너를 삭제할 수 있지만 수동으로 컨테이너 종료 후 삭제하는 것을 추천해드립니다.

docker rm -f {Name or ID}

 

# docker images

저장되어있는 컨테이너 이미지를 출력하는 명령어입니다.

docker images

 

# docker pull

컨테이너 이미지를 가져오는 명령어입니다.

docker pull {image}:{tag}

docker pull mariadb:10.4.25

 

# docker tag

컨테이너 이미지의 테그를 생성하는 명령어입니다.
컨테이너 이미지를 백업하거나 구분하기 위해 주로 사용합니다.

docker tag {source_image} {target_image}

docker tag tomcat:latest tomcat:test_v1.0.0

 

# docker save

컨테이너 이미지를 파일로 저장하는 명령어입니다.

docker save -o {image_file_name} {image}:{tag}

docker save -o tomcat-web-server.gz tomcat:test_v1.0.0

 

# docker load

컨테이너 이미지 파일을 로딩하는 명령어입니다.

docker load -i {image_file_name}

docker load -i tomcat-web-server.gz

 

# docker rmi

컨테이너 이미지를 삭제하는 명령어입니다.

docker rmi {image}:{tag}

docker rmi mariadb:10.4.25

 

# docker logs

컨테이너의 로그를 확인하는 명령어입니다.

docker logs {Name or ID}

docker logs my-web-server2

 

# docker exec

실행중인 컨테이너에 커맨드를 실행하는 명령어입니다.

docker exec {option} {Name or ID} {command}

docker exec -it my-web-server2 /bin/bash

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 간단 설치 방법  (0) 2022.09.07

[Docker] 간단 설치 방법

Docker란 리눅스 컨테이너 기반으로 빠르게 서비스 구축, 개발, 테스트 등을 할 수 있는 오픈소스 가상화 플랫폼입니다.

 

컨테이너라는 개념이 없을 때에는 가상 머신(Virtual machine) 환경에서 서비스 구축, 개발, 테스트 등을 진행하였는데요. 각각의 가상 머신을 구성하기 위해서는 디스크 설정 및 OS 설치를 반복적으로 해야되고, 각각의 OS 위에 동작하기 때문에 서버 리소스를 많이 사용한다는 단점이 있습니다.Docker에서는 컨테이너를 실행하는 것만으로 간단히 환경 구성이 가능하고 별도 OS 위에 동작하는 것이 아니기 때문에 속도가 빠릅니다.

 

개인적인 생각이지만 가상 머신 환경을 많이 사용하신 분이라면 Docker를 사용해보시면 속도와 편리함으로 신세계를 경험하실 수 있을거라 생각됩니다.

 

Docker 설치

curl 명령어를 사용하여 docker 설치 스크립트를 다운받습니다.

curl -fsSL https://get.docker.com -o get-docker.sh

 

다운받은 docker 설치 스크립트(get-docker.sh)를 실행합니다.

sh get-docker.sh

 

스크립트 실행 후 설치가 완료되면 docker 설치를 확인합니다.

docker --version

 

이제 docker 서비스를 시작하면 docker를 바로 사용하실 수 있습니다.

service docker start

 

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15

+ Recent posts