1. Ubuntu 22.04 에서 Docker 사용하기 (APM 기본 설치)
[ Docker 설치 ]
1. 패키지 목록 최신화 및 업그레이드
# apt -y update
# apt -y upgrade
# apt -y install apt-transport-https ca-certificates curl gnupg lsb-release
2. Docker 공식 GPG 설치
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg |gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3. Docker 공식 저장소 추가
# echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" |tee /etc/apt/sources.list.d/docker.list > /dev/null
4. Docker 설치 및 확인
# apt -y update
# apt -y install docker-ce docker-ce-cli containerd.io
# docker --version
5. Compose 설치 및 확인
도커 컨테이너 구동 명령시 옵션으로 환경 값을 줄 수 있는데, 이경우 명령 라인이 길어지는 불편함이 있습니다.
docker-compose 는 이런 불편함을 없애고, 미리 준비한 환경을 파일(.yml) 을 사용하며 여러 컨테이너를 한 번에 관리할 수 있습니다.
1) Plugin 형태로 사용할 경우 (매뉴얼 진행 형태)
# apt -y install docker-compose-plugin
# docker compose version
2) Standalone 형태로 사용할 경우
# curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
[ Docker 삭제 ]
1. Docker 관련 패키지를 제거
# apt purge docker-ce docker-ce-cli containerd.io
2. 호스트의 이미지, 컨테이너, 볼륨 또는 사용자 지정 구성파일 제거 (모든 이미지, 컨테이너 및 볼륨 수동 삭제)
# rm -rf /var/lib/docker
# rm -rf /var/lib/containerd
[ APM 설치 ]
1. 설치 및 확인
특정 버전을 명시하지 않으면 최신 버전의 이미지가 다운로드 됩니다.
사용 예) docker pull {이미지}:{버전}
# docker pull httpd:2.4.54
# docker pull php:8.2.0-fpm
# docker pull mysql:8.0.31
다운로드 된 이미지 리스트를 출력합니다.
# docker images
(기타 명령 - 설치)
# docker search mysql // 다운로드 가능한 이미지 출력
# docker pull mysql // mysql:8.0.31 와 같이 특정 버전을 지정하지 않으면 최신 버전이 설치됩니다.
(mysql 또는 mysql:latest)
아래 URL 에서 제공하는 버전을 확인 할 수 있습니다.
https://hub.docker.com/_/mysql
https://hub.docker.com/_/php
https://hub.docker.com/_/httpd
(기타 명령 - 삭제)
이미지 삭제는 컨테이너 우선 삭제 후 가능합니다.
# docker ps // 컨테이너 리스트 출력
# docker rm cea0f7b8d47f // 출력된 컨테이너 ID 로 컨테이너 삭제
# docker images // 이미지 리스트 출력
# docker rmi httpd // 이미지 삭제
* 참고
이미지 삭제시 아래와 같은 메세지가 출력되는 경우는 REPOSITORY 가 같고 버전의 차이가 없는 경우입니다.
(예 : httpd:2.4.54 와 httpd:latest 가 같은 버전일 경우)
Error response from daemon: conflict: unable to delete 157dcdf23d6c (must be forced) - image is referenced in multiple repositories
아래와 같이 -f 옵션으로 강제 삭제를 하게 되면 두개의 이미지가 동시 삭제 됩니다.
# docker rmi -f 157dcdf23d6c
2. 가동
APM 환경 파일을 컨테이너와 연결하여 생성합니다.
# vi docker-compose.yml
version: '3.9' services: httpd: image: httpd:2.4.54 container_name: httpd restart: unless-stopped # 서버 부팅시 컨테이너 가동 ports: - "80:80" volumes: - /home/sysdocu/httpd/html/:/usr/local/apache2/htdocs/ # 웹 소스 파일 경로 mysql: image: mysql:8.0.31 container_name: mysql restart: unless-stopped tty: true ports: - "3306:3306" environment: MYSQL_HOST: localhost MYSQL_ROOT_PASSWORD: 12345678 # 초기 mysql root 비밀번호 SERVICE_TAGS: dev SERVICE_NAME: mysql TZ: Asia/Seoul php: image: php:8.2.0-fpm container_name: php restart: unless-stopped ports: - "9000:9000" volumes: - /home/sysdocu/httpd/html/:/var/www/html/ # php 소스 코드를 사용하기 위해 필수 설정 command: - /bin/sh - -c - | echo "security.limit_extensions = .html .htm .php" >> /usr/local/etc/php-fpm.d/www.conf # 특정 확장자만 php 소스 코드 사용 php-fpm |
파일 맨 위에 compose version 은 docker 버전에 맞추어 사용해야 합니다. 아래 URL 에서 확인이 가능합니다.
https://docs.docker.com/compose/compose-file/compose-versioning/#compatibility-matrix
이제 컨테이너를 가동합니다.
# docker compose up -d // 백그라운드로 전체 서비스 (컨테이너) 올리기
* 이 작업이 선행 되어야 컨테이너 별로 제어 (시작/중지) 가 가능함
index.html 를 만들고 브라우저로 접속하면 아래 내용 (New index) 이 출력되는것을 확인할 수 있습니다.
# echo "New index" > /home/sysdocu/httpd/html/index.html
그리고 변경된 내용이 httpd 컨테이너 내에도 확인됩니다.
( 실 데이터 저장 위치 : /home/sysdocu/httpd/html/ )
# docker exec -it httpd /bin/bash
root@771473b9edc0:/usr/local/apache2# cd htdocs
root@771473b9edc0:/usr/local/apache2/htdocs# cat index.html
New index
현재 컨테이너 구동 상태입니다.
# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
httpd "httpd-foreground" httpd running 0.0.0.0:80->80/tcp, :::80->80/tcp
mysql "docker-entrypoint.s…" mysql running 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
php "docker-php-entrypoi…" php running 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp
(기타 명령)
# docker compose images // 올려진 서비스 (컨테이너) 가 사용중인 이미지 리스트 출력. (모든 이미지 출력 : docker images)
# docker compose ps // 올려진 서비스 (컨테이너) 출력
# docker compose stop php // 올려진 서비스 (컨테이너) 선택 중지
# docker compose start php // 올려진 서비스 (컨테이너) 선택 시작
# docker rm -v php // 올려진 서비스 (컨테이너) 삭제
# docker compose up -d php // 하나의 서비스 (컨테이너) 만 구동
모든 컨테이너를 더이상 사용하지 않을때 아래와 같이 내립니다.
# docker compose down // 컨테이너 중지 및 삭제
'리눅스 > Containers & Kubernetes' 카테고리의 다른 글
6. Docker PHPMyAdmin 설치 (0) | 2022.12.23 |
---|---|
5. Docker 이미지 생성 (컨테이너 현재 상태 저장) (0) | 2022.12.22 |
4. Docker PHP 환경 설정 및 MySQL 연동, 기타 라이브러리 활성화 (0) | 2022.12.22 |
3. Docker MySQL 환경 설정 및 DB, 사용자 계정 생성 (0) | 2022.12.20 |
2. Docker httpd 환경 설정하기 (PHP 연동, Virtualhost 및 SSL 적용) (0) | 2022.12.20 |