728x90

이 포스팅 분류는 Docker를 정확히 어떻게 사용할지를 다루지 않는다.

대신 Docker로 특정 상황에 어떻게 환경을 구축해야하는지의 예제를 담고 있다.

만약 이 Docker에 대해서 어떻게 관리하는 지를 알고싶다면 인터넷을 검색을 활용하거나

필자의 블로그에서 Software-Docker를 확인해주기를 바란다.

현재 여기 업로드 되어있는 모든 예제들은 필자의 github repository에 올라와있다.

그 주소는 아래와 같다.


https://github.com/kukaro/Eris-DockerExampleTemplate

예제를 직접 확인하고 싶다면 해당 repository를 참조하라.


도커는 사람의 삶의 질을 확 바꾸어 놓았다.

하지만 도커를 사용하는건 생각 보다 쉽지 않은데

도커가 어렵다기 보다는 리눅스에 대한 제반지식이 필요하기 때문이다.

이번에 우리가 해보려는 것은 우분투 컨테이너를 실행하고 원격접속을 하는것, 즉 vm처럼 쓰기 위해서이다.


https://hub.docker.com/r/rastasheep/ubuntu-sshd/


사실 이미 있어서 이거 그대로 쓰면되긴 하는데

약간 커스터 마이징, 그리고 Docker run보다는 docker-compose를 사용해서 실행하는게 좋기 때문에 쓰게 되었다.



프로젝트 구조는 위와 같다.

init.sh와 clean.sh는 각각 도커 명령어가 들어있다.

이는 레포지터리를 직접 열어서 확인해보도록 하시고...


FROM ubuntu:latest
MAINTAINER kukaro <justkukaro@naver.com>
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

#set password
RUN echo 'root:root' |chpasswd

#replace sshd_config
RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

#make .ssh
RUN mkdir /root/.ssh

RUN apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

먼저 Dockerfile부터 보도록하자.

사실 별거 없는데 ssh-server설치해주고 실행하고가 끝이다.

근데 중간 과정들이 필요한데 중요한건 config부분이다.


RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

이 설정이 없으면 외부에서 원격접속이 안된다.

sed는 replace시켜주는 구문인데 PermitRootLogin과 yes로, UsePAM을 주석처리하는 것이다.

사실 아래부분은 왜 굳이 해야하는지는 모르겠는데 위는 반드시 필요하다.


이제 docker-compose를 보도록하자.

version: '3.3'

services:
myubuntu:
image: myubuntu
container_name: myubuntu
command: /usr/sbin/sshd -D
ports:
- '11111:22'
expose:
- '11111'

너무 간단하다. 외부 포트 11111로 지정해주고 ssh실행시키고 끝이다.


이제 init.sh를 실행하자.



ssh -p <포트번호> <아이디>@<IP주소>


위처럼 하면 이제 접속이 되는걸 확인할 수 있다.

비밀번호는 우리가 위해서 root로 정했는데 바꿨다면 그 바뀐걸로 접속하면된다.



정상적으로 리눅스를 사용할 수 있다.



로그아웃했다가 들어가도 정상적이게 남아있다.

이렇게 사용해주면된다.

+ Recent posts