Docker 개발환경 - Ubuntu 개발환경

대문 / 공개프로젝트, 설치 및 구축 / Docker 개발환경 - Ubuntu 개발환경

Docker 개발환경 - Ubuntu 개발환경

1.1. 개요

본 프로젝트는 Ubuntu 기반에서의 기초 개발환경을 제공하는 Docker image 를 목표로 합니다.

  • Docker hub 홈페이지 : [https]https://hub.docker.com/r/hwport/ubuntu/[]
  • source repository : [https]https://github.com/minzkn/ubuntu/[]
    # git clone https://github.com/minzkn/ubuntu.git hwport-ubuntu
    # cd hwport-ubuntu
    # git checkout <tag 또는 branch 이름>
    # ./build-docker-image.sh
    
  • Ubuntu 12.04, 14.04, 16.04, 18.04, 20.04, ... LTS 기반 (FROM ubuntu:<tag 이름>)
    • 기본적으로는 upstart / systemd 또는 sshd 환경으로 실행됩니다.
  • [https]Synology NAS[](https://www.synology.com/) 의 Docker 기능을 통한 실행화면
    synology-docker-image-view.jpg
    [JPG image (37.98 KB)]

1.2. image 설치방법

  • Docker hub pull name : "hwport/ubuntu:<tag 이름>"
    # docker pull hwport/ubuntu:<tag 이름>
    <tag 이름>: Pulling from hwport/ubuntu
    ...
    Status: Downloaded newer image for hwport/ubuntu:<tag 이름>
    
    # docker images
    REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
    hwport/ubuntu         <tag 이름>          <image-id>          <created-time>      <image-size>
    ...
    
    • "<tag 이름>" : ubuntu 배포판 및 용도에 따른 tag 이름입니다. ([https]https://hub.docker.com/r/hwport/ubuntu/tags[])
      • "latest" : Ubuntu 기반의 개발환경을 지칭하는 master tag/branch 이름 (현재 만들고 있는 개발환경)
      • "20.04" : Ubuntu 20.04 LTS 기반의 개발환경을 지칭하는 tag 이름
      • "20.04-systemd" : Ubuntu 20.04 LTS 기반의 systemd 기준 기초 tag 이름
      • "18.04" : Ubuntu 18.04 LTS 기반의 개발환경을 지칭하는 tag 이름
      • "16.04" : Ubuntu 16.04 LTS 기반의 개발환경을 지칭하는 tag 이름
      • "14.04" : Ubuntu 14.04 LTS 기반의 개발환경을 지칭하는 tag 이름
      • "12.04" : Ubuntu 12.04 LTS 기반의 개발환경을 지칭하는 tag 이름
      • "www" : apache + php 웹 서버 기본 구동 환경을 지칭하는 tag 이름
        • 현재 보고 계신 이 사이트는 이 이미지를 사용하여 구축한 것입니다.
      • "kvm" : KVM+QEMU (libvirt) 환경을 지칭하는 tag 이름
        kvm-docker-image-view.jpg
        [JPG image (117.84 KB)]
      • "strongswan" : strongSwan을 이용한 IPSecVPN 환경 tag 이름
      • "smp86xx" : Ubuntu 12.04 LTS 기반의 Sigmadesigns의 smp86xx chipset 개발환경을 지칭하는 tag 이름

1.3. container 구동(run) 및 초기 설정방법

보다 자세한 구동 방법은 위에 명시한 github source repository 에서 clone 받으셔서 docker-compose 설정을 참고하시면 좀더 자세한 구동을 이해하실 수 있습니다.

  • 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/ubuntu:<tag 이름>"
    ...
    
    # docker container ls --all
    CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                             NAMES
    <container-id>      hwport/ubuntu:<tag 이름>      "/usr/sbin/sshd -D" <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. 참고자료

Retrieved from https://www.minzkn.com:443/moniwiki/wiki.php/hwport/ubuntu
last modified 2022-11-11 13:01:00