Develop/Docker

[Docker] zsh테마가 설정된 이미지 만들기 (feat. commit/Dockerfile)

Gr00t 2021. 2. 3. 19:10

목적

열심히 WSL위에 Docker를 설치하고 Docker로 Ubuntu컨테이너를 만들어 zsh과 oh-my-zsh을 통해 꾸며주었다. 이 과정을 다시 반복하지 않기 위해서이미지로 저장해두는 작업을 하려고 한다.

이미지 저장은 commit을 통해서 쉽게 할 수 있으나 dockerfile을 만들어보고 제대로 동작하는지 확인하는 과정을 거쳐보려고 한다.


방법

  1. docker commit을 이용한 이미지 저장 ⇒ 변경하려면 앞의 모든 작업을 다시 수행
  1. dockerfile을 이용한 이미지 저장

commit으로 저장하기

이미지 생성

docker commit Ubuntu-20.04 ubuntu:zsh

Ubuntu-20.04라는 컨테이너를 ubuntu라는 이미지베이스에 zsh이라는 태그를 달아서 저장한다.

생성된 이미지 확인

docker images

컨테이너 동작 확인

docker run -it ubuntu:zsh

새로운 컨테이너를 생성해서 zsh이 내부테마까지 제대로 동작하는지 확인한다.

💡
docker container의 기본 쉘을 설정 하려면? docker run -it ubuntu /usr/bin/zsh 처럼 컨테이너가 시작될 때 정의해줘야 한다.

dockerfile로 저장하기

Dockerfile 만들기

touch Dockerfile

# ubuntu install FROM ubuntu MAINTAINER 9r00t RUN apt-get -y update && \ apt-get install -y git\ wget # zsh install & change shell RUN apt-get -y install zsh RUN chsh -s /usr/bin/zsh # oh-my-zsh install RUN sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # powerline install RUN apt-get -y install fonts-powerline # hack font install COPY ttf /ttf ENV TERM xterm-256color # bullet-train theme install RUN git clone https://github.com/caiogondim/bullet-train.zsh.git ~/.oh-my-zsh/custom/theme/bullet-train ENV ZSH_THEME bullet-train/bullet-train COPY .zshrc /root/.zshrc CMD ["zsh"]

Hack font 다운로드

wget https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.zip

bullet-train 테마는 뭐가 많이 깨져서 다양한 방법을 시도하다 이 폰트를 설치하고 많은 부분이 정상적으로 동작하는 것을 보고 해당 폰트를 받아 적용해주도록 한다.

압축해제

unzip Hack-v3.003-ttf.zip

.zshrc파일 복사

cp ~/.zshrc .

테마가 적용된 파일을 옮겨주도록 한다.

내부 로직에 맞게 수정

vim .zshrc

zsh 테마가 적용될 수 있도록 .zshrc파일을 수정한다.

원래대로라면 이 파일이 아닌 다른 파일을 수정해야하지만 적용되지 않는 오류가 생겨 해당 파일을 수정했다.

 export ZSH=$HOME/.oh-my-zsh ZSH_THEME="bullet-train/bullet-train" ... ZSH_CUSTOM=$ZSH/custom/theme plugins=(git) source $ZSH/oh-my-zsh.sh ...

dockerfile 빌드

docker build -t ubuntu_zsh .

작성한 Dockerfile을 빌드해 이미지로 만든다 .

빌드된 이미지 확인

docker images

실행

docker run -it --name zsh8 ubuntu_zsh

무려 8번 만에 성공했다.... 😭

 


에필로그..?

긴 여정의 발자취들...