ITFragile
[Kubernetes] 03. Docker image build하기 본문
web server 구성에 필요한 apache2, php, php-mysql 이 합쳐진 이미지를 Dockerfile로 작성하여 빌드하도록 한다.
먼저, 이미지 빌드를 위해 Docker 설치부터 진행한다.
1. Docker 설치
sudo apt-get install ca-certificates curl gnupg lsb-release
2. gpg키 저장할 디렉토리 생성
$ sudo mkdir -p /etc/apt/keyrings
3. gpg 키 저장
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4. 도커 설치할 repository 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. repository 갱신한 정보 인식
$ sudo apt-get update
6. docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7. 도커 그룹에 유저 등록하기
root 계정과 docker 그룹 계정만이 권한이 있으므로 docker 그룹 계정에 포함해준다.
# 현재 그룹
id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lxd)
# 그룹에 추가
sudo usermod -aG docker user
# 다시 접속시
id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lxd),998(docker)
8. 도커 image 확인
9. Dockerfile 작성
# Dockerfile
FROM ubuntu:20.04
# LABEL MAINTAINER DevOps
# Avoiding user interaction with tzdata
ENV DEBIAN_FRONTEND=noninteractive # 설치시 입력 요구하는 것을 방지
RUN apt-get update
RUN apt-get install -y apache2
RUN apt-get install -y php
RUN apt-get install -y php-mysql
EXPOSE 80/tcp
CMD ["apachectl", "-D", "FOREGROUND"] # 데몬으로 아파치 실행
10. 이미지 빌드
docker image build -t myweb:v1 .
11. 컨테이너 연결 테스트
docker container run -dit --name webserver -p 80:80 myweb:v1
12. 도커 허브 로그인
빌드한 이미지를 도커 허브에 저장해두고 싶어서 진행
docker login
Username: kyungyyyo
password :
13. 이미지 태그 연결
docker image tag myweb:v1 kyungyyyo/mywebphp:v1
14. 이미지 허브에 업로드
docker image push kyungyyyo/mywebphp:v1
15. 이미지 다운
docker image pull kyungyyyo/mywebphp:v1
'Project' 카테고리의 다른 글
[Kubernetes] 05. Web-DB 연결을 위한 컨피그맵 수정 (0) | 2023.03.22 |
---|---|
[Kubernetes] 04. Deployment로 web server 인그레스 구성 (0) | 2023.03.22 |
[Kubernetes] 02. DB StatefulSet으로 이중화 구성 (0) | 2023.03.21 |
[Kubernetes] 01. 작업 환경 구성 (0) | 2023.03.20 |
[Ansible] 08. DB 로드밸런싱 (0) | 2023.03.16 |