Docker 기초(3) docker network, yaml 파일 분석

Docker와 Docker Compose를 활용하여 docker network로 묶은 WordPress와 MySQL 서비스를 구축하는 방법을 단계별로 설명합니다. Docker를 이용한 수동 설정 방법과 Docker Compose를 이용한 자동화된 설정 방법 두 가지를 다룹니다.

1. docker network

Bash
# docker network list 확인
$docker network ls

# 생성
$docker network create 네트워크명

# 삭제
$docker network rm 네트워크명

# 네트워크 상세 정보 확인
$docker inspect 네트워크명
  • MySQL 컨테이너 생성 및 실행: docker run 명령으로 MySQL 컨테이너(mysql000ex11)를 네트워크에 연결하고 초기 설정(루트 패스워드, 데이터베이스, 사용자 등)을 지정합니다.
    • docker network create wordpress000net1
  • MySQL 컨테이너 생성 및 실행: docker run 명령으로 MySQL 컨테이너(mysql000ex11)를 네트워크에 연결하고 초기 설정(루트 패스워드, 데이터베이스, 사용자 등)을 지정합니다.
    • docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
  • WordPress 컨테이너 생성 및 실행: docker run 명령으로 WordPress 컨테이너(wordpress000ex12)를 동일 네트워크에 연결하고 MySQL 컨테이너와의 연동 설정을 지정합니다.
    • docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 85:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress

2. 도커 컴포즈

YAML
version: "1"
services:
  mysql000ex11:
    image: mysql:8
    networks:
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: wkunpass

  wordpress000ex12:
    depends_on:
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol12:/var/www/html
    ports:
      - 85:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:
  • docker-compose up 명령을 사용하면 YAML 파일에 작성한 명령어에 따라 서비스가 동시에 실행됩니다.
  • docker-compose build: Docker 이미지를 빌드합니다.
  • docker-compose start: 중지된 서비스를 시작합니다.
  • docker-compose stop: 실행 중인 서비스를 중지합니다.
  • docker-compose down: 서비스를 중지하고 관련된 Docker 컨테이너와 네트워크, 볼륨 등을 제거합니다.
  • docker-compose logs: 로그를 출력합니다

3. yaml 파일 분석

버전 (Version)

version: “1”

  • Docker Compose 파일의 버전을 지정한다.

서비스 (Services)

services: mysql000ex11: image: mysql:8

  • Docker Compose 파일에서 services 섹션은 실행하려는 컨테이너를 정의한다.
  • mysql000ex11: MySQL 서비스의 이름이다.
  • image: 사용할 Docker 이미지를 지정한다. 여기서는 MySQL의 8번 버전을 사용한다.

네트워크 (Networks)

networks: – wordpress000net1

  • networks: 이 서비스가 연결될 네트워크를 지정한다.
  • wordpress000net1 네트워크를 사용하여 WordPress 서비스와 통신한다.

볼륨 (Volumes)

volumes: – mysql000vol11:/var/lib/mysql

  • volumes: 데이터 지속성을 위해 사용됩니다.
  • mysql000vol11 볼륨을 MySQL 데이터 디렉토리(/var/lib/mysql)에 마운트합니다.

환경 변수 (Environment)

environment: MYSQL_ROOT_PASSWORD: myrootpass

  • environment: 서비스에 필요한 환경 변수를 정의한다.
  • 여기서는 MySQL의 루트 패스워드, 데이터베이스 이름, 사용자 이름 및 패스워드를 설정

WordPress 서비스

wordpress000ex12: image: wordpress

  • wordpress000ex12: WordPress 서비스의 이름이다.
  • image: 여기서는 최신 WordPress 이미지를 사용한다.

포트 (Ports)

ports: – 85:80

  • ports: 호스트와 컨테이너 간의 포트 매핑을 정의한다.
  • 호스트의 85번 포트를 컨테이너의 80번 포트에 연결한다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top