- 도커 이미지 빌드하기
- 도커 이미지를 도커 허브에 올리기
- 도커 네트워크
1. 도커 이미지
도커 파일 공식문서 참조 https://docs.docker.com/build/guide/intro/
- FROM : 베이스 이미지 선정
- WORKDIR : work directory 선정
- COPY : 복사할 파일 선정 (예: 작업한 서비스 파일들)
- RUN : 실행할 명령어
- ENTRYPOINT : 컨테이너가 시작할 때 실행할 명령어 (예: 서버실행)
2. 도커 이미지를 도커 허브에 올리기
✅ 도커 이미지 만들기
- 이미지 태그 설정
- Docker hub에 이미지를 등록하려면 아래와 같은 규칙을 준수해야한다.
[Docker Hub 사용자명]/이미지명:[태그명]
- 태그방법
docker build -t my-httpd .
docker images
// 도커 tag 달기
docker tag my-httpd yudaeon/new-httpd:latest
// 도커 로그인
docker login
// 로그인 완료 후 도커 push
docker push yudaeon/new-httpd
만약 한번에 여러 네트워크를 열어야 할 땐??
docker network create wordpress_net
docker \
run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=root_pass" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=docker_pro" \
-e "MYSQL_PASSWORD=docker_pro_pass" \
--network wordpress_net \
mysql:latest
docker \
run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_USER=docker_pro" \
-e "WORDPRESS_DB_PASSWORD=docker_pro_pass" \
-e "WORDPRESS_DEBUG=1" \
-p 8000:80 \
--network wordpress_net \
wordpress:latest
도커 네트워크
네트워크 드라이버
docker network ls
// 네트워크에 대해서 자세히 보고싶을 때
docker network inspect 92855d066cd8
✅ Network Drivers
- bridge : 기본 네트워크 드라이버, 동일한 도커 호스트에서 컨테이너 간의 통신을 도와줌
- host : 호스트의 네트워크를 직접 사용
- overlay : 서로 다른 도커 호스트의 컨테이너 간 통신을 도와줌
도커 브리지 사용하기
✅ 도커 네트워크 삭제 명령어
docker network rm <네트워크 이름>
2. 도커 컴포즈
// yaml 파일에 있는 db들을 한번에 불어올 수 있음
docker-compose -f(파일) .yaml(yml)
위에 사진처럼 컴포즈 명령어를 사용하면 redis, mariadb, rabbitmq 등과 같은 database 설정들을 한번에 가지고 올 수 있다.
✅ 도커 컴포즈 파일 구성
• version
• services
• network
• volume
• config
• secret
1. version
2. services **
- 실행하려는 컨테이너들을 정의하는 역할
- 이름, 이미지, 포트, 매핑, 환경 변수, 볼륨 등을 포함
- 해당 정보를 가지고 컨테이너를 생성하고 관리
3. 도커 컴포즈 명령어
docker-compose vs docker compose ?
- docker-compose 명령어가 docker compose로 흡수되었음.
- 이전에는 Docker에서는 docker-compose 명령어가 별도로 설치되어야 했지만,
- Docker 1.13 이후로는 docker-compose 명령어가 Docker CLI에 통합됨
✅ 도커 컴포즈 명령어
docker-comopse -f local-infra.yml up -d
- up : 도커 컴포즈 파일로, 컨테이너를 생성하기
- -f : 도커 컴포즈 파일 지정하기
- -d : 백그라운드에서 실행하기
✅ 도커 CLI로 여러개 컨테이너 관리하기
// 도커 네트워크 리스트 조회
docker network ls
- bridge: 도커 엔진에 의해 자동으로 생성되는 가상 네트워크. 컨테이너끼리 연결되는 기본 네트워크
- host: 호스트 컴퓨터의 네트워크 인터페이스를 그대로 사용하는 네트워크
- none: 네트워크를 사용하지 않는 컨테이너
# 도커 네트워크 생성
docker network create wordpress_net
- 도커 네트워크를 생성하는 명령어 (네트워크의 이름을 지정)
# mysql db container 생성
docker \
run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=root_pass" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=docker_pro" \
-e "MYSQL_PASSWORD=docker_pro_pass" \
--network wordpress_net \
mysql:latest
# wordpress container 생성
docker \
run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_USER=docker_pro" \
-e "WORDPRESS_DB_PASSWORD=docker_pro_pass" \
-e "WORDPRESS_DEBUG=1" \
-p 8000:80 \
--network wordpress_net \
wordpress:latest
version: "3.0"
services:
db:
image: mysql:latest
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: wordpress
MYSQL_USER: docker_pro
MYSQL_PASSWORD: docker_pro_pass
app:
depends_on:
- db
image: wordpress:latest
volumes:
- ./app_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: docker_pro
WORDPRESS_DB_PASSWORD: docker_pro_pass
docker compose -f docker-compose.yml up --build
'AWS & Docker' 카테고리의 다른 글
[Docker] 도커 활용 클라우드 서비스 (0) | 2023.08.08 |
---|---|
[Docker] 도커 이미지 (0) | 2023.08.03 |
[Docker] 도커는 무엇인가(1) (0) | 2023.08.01 |
[AWS & Docker] AWS, Docker 실행 하기 (0) | 2023.05.30 |