1.1. 개요
본 프로젝트는 Sigmadesigns 사의 smp86xx 계열 chipset 의 개발환경을 기준으로 하는 Docker image 를 목표로 합니다.
- Docker hub 홈페이지 : https://hub.docker.com/r/hwport/sigmadesigns/
- source repository : https://github.com/minzkn/ubuntu/tree/smp86xx
# git clone https://github.com/minzkn/ubuntu.git hwport-ubuntu # cd hwport-ubuntu # git checkout smp86xx-base # ./build-docker-image.sh
- Ubuntu 12.04 LTS 기반 (FROM hwport/ubuntu:12.04, FROM ubuntu:12.04)
- 기본적으로는 upstart 환경으로 init process 가 구동되고 sshd가 함께 실행됩니다.
- mentor의 mips-4.3 toolchain 포함 (mips 32bits cross compiler) : https://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu/mips-4.3-51-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
- image/container 내에 "/opt/mips-4.3/" 경로에 설치되어 있습니다. 다음과 같은 환경변수 설정을 기준으로 구성합니다.
export SMP86XX_TOOLCHAIN_PATH="/opt/mips-4.3" export PATH="/opt/mips-4.3/bin:${PATH}"
- image/container 내에 "/opt/mips-4.3/" 경로에 설치되어 있습니다. 다음과 같은 환경변수 설정을 기준으로 구성합니다.
1.2. image 설치방법
- Docker hub pull name : "hwport/sigmadesigns:smp86xx" 또는 "hwport/ubuntu:smp86xx"
# docker pull hwport/sigmadesigns:smp86xx smp86xx: Pulling from hwport/sigmadesigns ... Status: Downloaded newer image for hwport/sigmadesigns:smp86xx # docker images REPOSITORY TAG IMAGE ID CREATED SIZE hwport/sigmadesigns smp86xx <image-id> <created-time> <image-size> ...
1.3. container 구동(run) 및 초기 설정방법
- container 구동(run)
# docker run -d -h "<container-hostname>" --name "<container-name>" -p <SSH-host-port>:22 [--privileged] [-v "<local-volume-path>:<container-volume-path>"] "hwport/sigmadesigns:smp86xx" ... # docker container ls --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES <container-id> hwport/sigmadesigns:smp86xx "/sbin/init" <created-time> <status> 0.0.0.0:<SSH-host-port>->22/tcp <container-name> ...
"<container-hostname>"
: container 내에서의 hostname을 의미합니다."<container-name>"
: container 의 이름입니다."<SSH-host-port>"
: container 실행 호스트(외부)로의 SSH 접속 포트를 지정합니다."--privilieged" 옵션
: container 내에서 권한이 필요한 실행을 해야 하는 경우 필요합니다.-v "<local-volume-path>:<container-volume-path>"
: container 실행환경의 directory(local-volume-path)를 container 내부의 directory(container-volume-path)에 투영(공유)하고자 하는 경우 사용할 수 있는 옵션입니다.<container-id>
: container 구동(run)시 자동으로 생성되는 식별자입니다. "<container-name>" 가 지정되지 않아도 이것으로 제어가능합니다.
- container 내에 계정 추가
# docker exec -i -t <container-name> /bin/bash root@<container-hostname>:/# useradd -c "<comment>" -d "/home/<myaccount>" -g users -G users,adm,sudo -m -s /bin/bash <myaccount> root@<container-hostname>:/# passwd <myaccount> Enter new UNIX password: <myaccount's password> Retype new UNIX password: <myaccount's password> passwd: password updated successfully root@<container-hostname>:/# exit
<myaccount>
: container 환경에서 사용하고자 하는 계정이름입니다. SSH 접속시 반드시 필요합니다."<comment>"
: 계정에 대한 간단한 설명등을 의미합니다.<myaccount's password>
: 추가한 사용자 계정의 암호를 입력합니다.
1.4. container SSH 접속 방법
- 기본적으로 container 에 SSH를 기본으로 접속하도록 구성되므로 다음과 같이 SSH 접속하실 수 있습니다.
# ssh -o port=<SSH-host-port> <myaccount>@localhost The authenticity of host '[localhost]:<SSH-host-port> ([::1]:<SSH-host-port>)' can't be established. ECDSA key fingerprint is SHA256:<...>. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:<SSH-host-port>' (ECDSA) to the list of known hosts. <myaccount>@localhost's password: <myaccount's password> <myaccount>@<container-hostname>:~$ <in-container environment now...>
- localhost : 이 부분은 docker 실행환경의 IP 주소로 대체하여 접속하시면 원격에서 접속하실 수 있습니다.
1.5. 참고자료
- 우분투(Ubuntu) 가상머신(Virtual Machine) 서버 환경 구축
- Docker 개발환경 - Ubuntu 개발환경
- 이재홍님의 Docker 원고
- Docker 의 Network 구조에 대한 이해를 위한 내용
- Docker image를 빌드하기 위한 Dockerfile 작성 예