Docker로 Linux 개발환경 구축하기 (1) Dockerfile Ubuntu 기본설정

Byeongmin·2021년 4월 28일

개요

Why?

살다보면 노트북이나 컴퓨터를 바꿔야 할 때나, 낯선 환경에서 새로운 컴퓨터로 개발을 해야하는 등의 문제가 생길 때가 있다.
이 때마다 필요한 package들을 새로 다운받거나 dotfiles를 새로 만드는 것은 힘들고, 다시 새로운 환경에 적응하려면 시간이 걸리기 때문에 내 입맛에 맞는 개발환경을 Docker를 이용해 만들어두기로 했다.

왜 Docker를 사용하는가?

현재, 그리고 앞으로도 여러 방면에서 편하다는 이유로 Windows OS를 사용할 것이고, Linux환경은 VM으로 사용할 것 같아 Dockerfile로 만들고자 한다.

그럼... 바로 dockerfile을 만들기 시작하겠다


Dockerfile

Dockerfile 명령어들 - 1

  • FROM
FROM image:tag
FROM ubuntu:latest

FROM은 베이스가 될 이미지를 지정하는 명령어이다.
기본이 될 OS를 선택하는 것으로, 꼭 있어야 한다.

  • LABEL
LABEL maintainer="Mario"
LABEL version="1.0"

LABEL은 이미지의 정보를 저장하기 위한 명령어다.
docker 명령어로 해당 이미지의 label을 확인할 수 있다.

  • RUN
RUN command -option
RUN apt update

RUN은 명령을 실행한다.
command line에서 입력하는 것과 같이 "/bin/sh -c " 로 명령어를 실행하는 것과 같다.

  • ENV
ENV key value

ENV는 환경변수를 지정해준다. Linux에서 환경변수 설정하는 것과 같다.

Ubuntu 기본 설정

base image & label

FROM ubuntu:latest
LABEL maintainer="Byeongmin Ryoo <bmryu0501@gmail.com>"

최신버전의 ubuntu를 base image로 설정하고
mantainer라는 label을 넣어주었다.

패키지 업데이트

# update & upgrade
RUN set -xe \
    && apt -y -qq update \
    && apt -y -qq upgrade 

위처럼 명령어를 길게 쓰거나 나눌 수 있는 경우 가독성을 위해 백슬래쉬(\)를 이용해 분절할 수 있다.
&&는 명령을 실행한 이후 다음 명령을 실행하도록 한다.

apt 명령어로 update 및 upgrade를 실행해주었다.
-y 옵션을 주어 따로 Y를 입력하지 않아도 설치가 진행되도록 했고,
-qq 옵션을 주어 메시지를 출력하지 않도록 했다.

set -xe는 명령 실행시의 옵션을 설정해주는 것으로, 의미는 다음과 같다.
x는 수행하는 명령어를 출력 후 실행
e는 오류 발생시 스크립트를 종료
이를 넣어주는 정확한 이유는 잘 모르겠지만 디버깅 또는 오류 방지를 위한 것 같다.

time zone setting

# set time zone
RUN set -xe \
    && apt -y -qq install tzdata
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

time zone을 설정하기 위해 tzdata를 설치해주고,
환경변수 TZ를 Asia/Seoul로 설정해 시간대를 서울 기준으로 설정해주었다.
ln 명령어는 link해주는 명령어로, timezone을 위와 같이 link해주어야 한다고 한다.

locale 설정

# set locale UTF-8
RUN apt -y -qq install locales \
    && locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

영어권에서는 문제가 없겠지만, 한글을 쓰면 문자가 깨지기 때문에, UTF-8로 설정해주었다.

unminimize

도커에 제공되는 ubuntu는 기본적으로 필수적인 요소들만 포함하여 배포하기 때문에, 모든 기능을 사용하려면 unminimize 명령을 통해 minimize된 상태를 해제해주어야 한다.
참고: https://wiki.ubuntu.com/Minimal

# ubuntu unminimize
RUN yes | unminimize

이렇게 dockerfile에 기본적인 세팅하는 부분까지 작성을 완료했다.

코드

FROM ubuntu:latest
LABEL maintainer="Byeongmin Ryoo <bmryu0501@gmail.com>"

# update & upgrade
RUN set -xe \
    && apt -y -qq update \
    && apt -y -qq upgrade

## set time zone
RUN set -xe \
    && apt -y -qq install tzdata
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

# set locale UTF-8
RUN apt -y -qq install locales \
    && locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# ubuntu unminimize
RUN yes | unminimize

도커 허브

https://hub.docker.com/repository/docker/bmryu0501/myubuntu

profile
Handong Global Univ.

0개의 댓글