도커가 처음이신 분들은 여기부터 시작하셔야합니다.
# 터미널을 열고 아래 코드들을 한 줄 씩 입력한다.
# 우선 도커를 설치해야하는데, 설치 방법은 구글링하면 많이 나옵니다.
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
# If it doesn't work, you should do install dockerfile again
service ssh start
service ssh status
service mysql start
service mysql status
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
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
이외에도 많지만 기억이..