Dockerfile with ssh&zsh in Ubuntu

Hawaii·2022년 1월 31일
0

Tips

목록 보기
2/2
post-thumbnail

우분투에 zsh, ssh를 추가한 도커파일입니다.

반복된 설치 작업이 번거로워, 저도 쓰고 공유도 하려고 만든 파일입니다~!

코드만 간략히 보고싶다면 깃헙 링크 참고해주세요.






About docker

도커가 처음이신 분들은 여기부터 시작하셔야합니다.

How to use?


# 터미널을 열고 아래 코드들을 한 줄 씩 입력한다. 
# 우선 도커를 설치해야하는데, 설치 방법은 구글링하면 많이 나옵니다. 
cd 

git clone https://github.com/Dev-JiwonShin/dockerfile_ubuntu_zsh_ssh.git

# 도커파일을 바탕으로 새 이미지 빌드
docker build -t ubuntu_dockerfile:1.0

# 컨테이너 생성
# -p 22:22 : 호스트의 22번 포트를 우분투의 22번에 대응하여 연결한다.
# -p 3307:3306 : 위와 마찬가지다. 
# mysql의 기본 포트 번호가 3306이라서 호스트에서 3307번으로 접근하도록 세팅했다.
docker create -it -P -p 22:22 -p 3307:3306 --name zsh_ssh_0 devjiwonshin/ubuntu_dockerfile:1.0
# 컨테이너 전원 켜기
docker start zsh_ssh_0

# 컨테이너 실행
# zsh_ssh_0을 zsh로 실행한다. 
# 맨 뒤의 zsh를 적어주지 않으면 bash로 실행된다. 
docker exec -it zsh_ssh_0 zsh





Check your installation

# If it doesn't work, you should do install dockerfile again
service ssh start
service ssh status

service mysql start
service mysql status





mysql에서 한글이 깨지면 아래 명령어를 입력하세요.

vi /etc/mysql/my.cnf
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
:wq










Dockerfile

FROM ubuntu
MAINTAINER Hawaii <dev.jiwonshin@gmail.com>

# DEBIAN_FRONTEND=noninteractive : 
#	tzdata 설치 시 사용자가 직접 timezone 설정을 할 수 있도록 입력할 수 있는 부분이 나오는데, 
# 	도커 이미지를 생성할 때는 입력을 할 수 없으므로 사용자의 입력 없이 넘어가기 위해 설정한다.
# TZ=Asia/Seoul : 
#	tzdata는 시스템 환경변수 TZ 의 값으로 timezone을 설정해준다.
# 	해당 환경 변수를 우리가 원하는 지역으로 설정한다.
# ARG, ENV : 
#	ARG 는 docker build 시에만 적용되는 변수 이며, 
#	ENV는 docker container 내부의 환경변수로 설정된다.

ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul


# RUN 의미 : 여기에 해당되는 코드를 실행하라!
# RUN apt-get ~~~ : apt-get을 실행하라!
# -y를 넣지 않으면 자동 설치가 진행되지 않습니다.
RUN apt-get -y update &&\
 apt-get install -y git wget zsh tzdata vim openssh-server mysql-server mysql-client sudo ufw curl

# 기본 쉘을 bash에서 zsh로 변환
RUN chsh -s /bin/zsh
RUN sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 폰트를 바꿔주는 부분이라 여긴 안해도 됩니다.
RUN apt-get -y install fonts-powerline

# zsh-autosuggestions, zsh-syntax-highlighting을 플러그인에 추가하는 코드
RUN git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
RUN git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

# Perl이란? : https://happygrammer.github.io/guide/perl/
# 펄을 활용하면 vi ~/.zshrc를 해서 직접 수정해야하는 부분이 자동화가 가능하다!! 
RUN perl -pi -w -e 's/ZSH_THEME=.*/ZSH_THEME="agnoster"/g;' ~/.zshrc 
RUN perl -pi -w -e 's/plugins=.*/plugins=(git ssh-agent zsh-autosuggestions zsh-syntax-highlighting)/g;' ~/.zshrc

# ssh에서 id:password를 설정합니다. 디폴트로 id = root, password = root으로 했습니다. 
# 보안을 위해 바꾸는 걸 추천합니다.
# PermitRootLogin : 디폴트값을 yes로 해줘야 ssh 연결에서 문제가 안생깁니다.
RUN echo 'root:root' |chpasswd && \
  sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config && \
  sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config && \
  mkdir /root/.ssh && \
  mkdir /var/run/sshd 

# 경우에 따라 시간대가 안맞는 에러가 발생해서, 이 코드는 웬만하면 넣는게 좋습니다. 
RUN sudo apt-get install -y language-pack-en && sudo update-locale

# 설치로 생성된 캐시 파일들을 삭제해서 용량 줄이기!
RUN apt-get clean && \
    apt-get autoclean && \
    apt-get autoremove -y && \
    rm -rf /var/lib/cache/* && \
    rm -rf /var/lib/log/*


# EXPOSE : 해당 포트 번호를 외부에 노출한다.
# ssh의 기본 포트 번호는 22, mysql은 3306입니다. 
# 이 포트를 열지 않는다면 우분투가 정상적으로 설치되더라도 외부와 통신을 할 수 없습니다.
EXPOSE 22 3306

CMD ["zsh"]







참고한 자료들

전반적인 도커 개념 :
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
https://www.daleseo.com/dockerfile/

ssh 개념 :
https://velog.io/@hyeseong-dev/%EB%A6%AC%EB%88%85%EC%8A%A4-ssh%EB%9E%80
ssh-key 에러 :
https://itzone.tistory.com/694

이외에도 많지만 기억이..

profile
참을 수 없는 괴짜의 가벼움

0개의 댓글