본문 바로가기
학부연구생/학부연구생 실습

도커 설치 및 컨테이너 이미지 생성 후 배포

by ㅇㅏ도 2024. 3. 12.

1. 도커 설치하기

도커란, 

컨테이너 응용프로그램의 배포를 자동화하는 오픈 소스 엔진이다. 

 

우선 sudo apt-get install 을 통해 서버에 모든 패키지를 최신버전으로 업데이트 해준다. 

 

이후 아래 명령어를 통해 도커 설치 전에 필요한 기본 패키지들을 설치한다. 

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

 

이 과정에서 오류가 꽤나 발생해 lock되어 있던 파일들을 삭제하고 dpkg도 다시 설치했다.

 

위의 명령어서 나온 기본 패키지들을 정리하면 아래와 같다

apt-transport-https : https 프로토콜을 통해 repository에 접근 지원 패키지

ca-certificates : CA에서 발행되는 디지털 서명, SSL 인증서 기반의 인증 지원 패키지

cURL : 다양한 통신 프로토콜을 통해 서버와 데이터 송수신을 지원하는 명령어 도구

gnupg : 데이터를 암호화하고 전자 서명을 만들 수 있는 암호화/복호화 도구(GPG라고도 함)

lsb-release : 리눅스 배포판 식별 및 버전 확인하기 위한 도구

 

이제 도커 저장소에 접근하기 위해 GPG로 서명된 도커 공식 key를 추가해준다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

'x86_64', 'amd64' CPU 아키텍처 서버를 지원하는 Docker 저장소를 추가한다. 

 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

 

마지막으로 도커 설치 단계를 밟으면 된다.

 

sudo apt-get update

를 해주고

sudo apt-get install docker-ce docker-ce-cli containerd.io

위의 명령어를 통해 총 세 개의 패키지를 설치해 준다.

(만약 오류가 난다면 각각 따로 설치해 주기!!)

 

패키지에 대한 설명을 적어보자면

docker-ce : 컨테이너 런타임 환경을 제공하는 도커 엔진

docker-ce-cli : 도커 엔진을 지원하는 커멘드 라인 툴 

containerd.io : 로컬 시스템의 컨테이너 입출력을 위한 데몬

 

도커 버전 확인을 통해 설치가 완료 되었음을 알 수 있다. 

 

 

2. 도커 파일 생성

우선 Dockerfile을 만들어준다

vi server_info.php

Apache 웹서버가 올라가는 컨테이너 정보를 JSON 포멧으로 출력하는 PHP 예제 파일이다. 

여기서 들어가는 컨테이너 정보는 OS 종류, OS 버전 정보, 호스트네임, IP 주소, 시간정보등이다. 

<?php
$arr = array('OS' => php_uname('s'), 'Ver' => php_uname('v'), 'HostName' => php_uname('n), 'IP' => $_SERVER['SERVER_ADDR"], 'Date' => date("Y-m-d H:i:s"));
print_r(json_encode($arr,JSON_UNESCAPED_UNICODE));
?>

 

vi Dockerfile

FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y apache2
RUN apt-get install -y php
COPY server_info.php /var/www/html
ENTRYPOINT apachectl -D FOREGROUND
EXPOSE 80/tcp

 

이후 server_info_php를 /var/www/html 디렉토리로 복사하는 도커파일을 설치해 준다. 

 

3. 도커 컨테이너 이미지 생성

위의 과정들을 다 따라했다면 도커파일과 서버 php 파일이 생성되어 있을 것이다. 

sudo docker build -t linarena/image:0.1 .

위의 명령어로 도커 컨테이너 이미지를 만들어준다. 

sudo docker images

라고 명령어를 쳐보면 개별 IMAGE ID가 부여된 컨테이너 이미지를 확인할 수 있다. 

 

4. 컨테이너 이미지 배포하기

sudo docker login -u <id> -p <pw>
sudo docker push linarena/image:0.1

 

docker에 id와 pw를 입력해 접속한 후에

docker을 push 해주었다. 

 

업로드 완료!!