[VMWare Fusion] Photon OS 로 docker 테스트 용 VM 만들기

전에 [ESXi 6.5] Photon OS 설치하여 Docker Host로 운영하기 라는 글을 올린 적이 있습니다.
ESXi 서버에서 Docker Host로 가장 적은 크기로 docker를 운영하는데 무엇이 좋을까
하는 주제였었는데, 이번에 같은 문제로 의문을 가져 보았습니다.

현재 주 개발 장비로 이용하는 맥북프로에서 유사하게 Photon OS 를 기동시킬 수 있을까 말이지요.
패러렐즈에서는 테스트해 보지 않았지만 VMWare Fusion에서는 잘 동작하였기에 공유해 봅니다.
(언제 시간되면 패러렐즈에서도 테스트 해 보겠습니다)

우선 다음 사이트에서 
Minimal ISO x86_64 이미지를 다운받습니다. (와우! 281M 밖에 하지 않네요.. VM이 거의 컨테이너 이미지 느낌입니다)

최근에 거의 패러렐즈만 사용하고 있었는데 드디어 오랫만에 VMWare Fusion을 띄워 상단의 +를 눌러 새로운 가상머신 만들기를 합니다.

새로운 가상머신 만들기를 한 후,

이어서 선택하는 가상머신 형태에 "VMWare Photon OS 64-bit" 를 선택합니다.
(패러렐즈에는 이 항목이 없을 거여요..)

그 다음으로 boot 펌웨어로 디폴트 "Legacy BIOS"를 선택하고,

디폴트로 프로세스1개 메모리도 작고, 하드로 8기가만 할당하게 되어 있습니다.
최소 하드웨어 사양인데 저는 차후 조금 더 늘리겠습니다.

"Finish" 하기 전 "Customize Settings" 를 눌러,

상단 네번 째, "Processors & Memory" 를 눌러,

프로세서도 3개를 주고 메모리도 2기가를 주었습니다.

하드 용량은 64기가를 주었습니다. (동작으로 늘어나도록 되어 있습니다. 이후에 다시 한번 만든 것에는 32G로..) 

CD에는 아까 받아 놓았던 ISO 이미지를 넣고,

사운드 카드는 필요없으므로 "Remove Sound Card"를 해 줍니다.
이후, 프린터와 카메라도 지웠습니다.

이제 가상머신을 시작하면, 몇초 후,

위와 같이 나오는 창에서 "엔터"를 눌렀습니다.

다음에 Accept 하고,

만들어 놓은 디스크에 설치하고, (Photon OS 용으로 가상머신을 지정하지 않으니 sda~saf 가 여러개 보이고 말더군요)

우선 DHCP로 받아오게 설정하고 나서 처음에 소개해 드린 링크에 설명된 것처럼 네트워크를 수동으로 변경할 수 있습니다.

아무래도 내부에서 다시 docker를 돌려야 하므로.. 위와 같이 선택하고,

호스트 이름을 지정해 줍니다.

Photon은 Debian/Ubuntu 계열과 달리 root 계정을 직접 다루는 형식인데 로컬 테스트 환경에서는 이게 더 편합니다.
(나중에 Root 터미널에서 직접 적은 암호로 수정가능합니다)

설정 후 설치를 시작하고,

설치를 마쳤더니.. 이럴 수가.. 우분투 20.04 서버에 비해서도 1/4 정도 덩치군요. 물론 tdnf update 를 시키고 낫더니 1G 정도로 불었습니다.

수동 Network 설정을 위하여,

# cd /etc/systemd/network/
# mv 99* 99-static-en.network
# vi 99-static-en.network

[Match]
Name=eth0

[Network]
DHCP=no
Gateway=192.168.67.2
Address=192.168.67.198/24
DNS=192.168.67.2 8.8.8.8

[DHCP]
UseDNS=false

위와 같이 설정했습니다. (192.168.67.0 대역이 잡혀 있네요)

systemctl restart systemd-networkd
라고 네트워크를 설정합니다.

다른 설치는 기본과 거의 동일한데, ssh 연결을 위해서
/etc/ssh/sshd_config 에서 "PermitRootLogin"을 yes 로 변경해 주고 접속하면 잘 되었습니다.

systemctl restart sshd

라고 하여 sshd를 재 기동시킵니다.


Docker 를 돌리려면,

systemctl enable docker
systemctl start docker

라고 해 줍니다.

Docker 컨테이너에 DNS 문제가 있어서, 
문제가 있었는데 다음과 같이 정상 동작하는지 확인 가능합니다.

우선 Photon OS에서 확인하는 방법은,

tdnf install -y bindutils
라고 하여 nslookup 유틸을 설치 후,

# nslookup google.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: google.com
Address: 216.58.197.110
Name: google.com
Address: 2404:6800:4005:801::200e

와 같이 확인 가능합니다.

docker 안에서 DNS를 확인하는 초간단 방법입니다.

# docker run --rm busybox nslookup google.com
Server: 8.8.8.8
Address: 8.8.8.8:53

Non-authoritative answer:
Name: google.com
Address: 172.217.161.78

*** Can't find google.com: No answer

timeout 등의 오류가 나오면, 에러가 나왔습니다.

다음 tmux 설정을 위하여,

# tdnf install -y tmux

로 설치 후,

vi /root/.tmux.conf 
라고 파일을 열어

set-option -g mouse on
set-option -g history-limit 10000
bind split-window -h -c '#{pane_current_path}'  # Split panes horizontal
bind - split-window -v -c '#{pane_current_path}'  # Split panes vertically

라는 내용을 넣어 줍니다.

그리고 /root/.bash_profile 에는 다음의 내용을 넣어줍니다.

#!/usr/bin/bash
alias tm='tmux new-session -d && tmux split-window -h && tmux select-pane -L && tmux attach-session -d'
alias ll='ls -l'

다음, ~/stm.sh 를 만들어,

#!/bin/bash
tmux ls
if [ $? -ne 0 ];then
        tmux new-session -d && tmux split-window -h && tmux split-window -v && tmux select-pane -L && tmux split-window -v && tmux select-pane -U && tmux attach-session -d
else
        tmux a -dt 0
fi

의 내용을 넣어주고,

chmod +x ~/stm.sh
라고 해 준 다음, 외부에서 ssh로 연동할 때,

ssh -t root@my-photon-os /root/stm.sh
라고 연결하면 편합니다.

TMUX 창 중에 하나에 top 으로 모니터링을 하려면,

top
을 기동시킨 후, i 를 눌러 CPU 많이 사용하는 일부만 표시 합니다.

컨테이너 모니터링을 위하여 ctop을 설치하면 되는데,

tdnf install -y wget
wget https://github.com/bcicen/ctop/releases/download/v0.7.3/ctop-0.7.3-linux-amd64 -O ctop
chmod +x ctop
sudo mv ctop /usr/local/bin

라고 하면 됩니다.

또 맥의 특정 폴더를 공유하기 위하여 VMWare Fusion 의 공유 폴더 기능을 이용해도 되지만,
연결이 되었다 안되었다 하는 현상이 발생하여,
맥에서 SMB로 파일공유를 하고,

/etc/fstab 에 다음과 같이 공유하면 됩니다.

# for samba
//192.168.67.1/shfolder /root/shfolder    cifs    username=Jerry\040Chae,password=mypasswd,vers=3.0,uid=0,gid=0,iocharset=utf8,sec=ntlmv2,rw    0    0

또 docker-compose 는 다음과 같이 설치합니다.

curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

docker-compose 로 돌리면 특정 포트를 열어야 하는데,

echo "iptables -I INPUT 1 -p tcp --dport 2376 -j ACCEPT" >> /etc/systemd/scripts/iptables
라고 추가해주고,

systemctl restart iptables
라고 하여 적용시킵니다.

그리고 운영하다보니 TimeZone이 UTC로 되어 있어 이를 KST로 변경하는 방법입니다.

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
라고 해 주면 바로 반영됩니다.


이로써 맥북프로에서도 아주 간단하게 Photon OS로 docker 배포 및 테스트 등을 할 수 있겠네요.
(AWS Linux와 제일 유사하면서 가장 근접한 테스트가 가능한 것 같다는 느낌입니다)


어느 분께는 도움이 되셨기를 ..




[Python] pypicloud 로 사설 모듈 저장소 이용하기

일전에 pypiserver 를 docker에서 돌리는 것을 해 본 적이 있습니다.사설 파이썬 모듈을 관리하는데 이용하는 것은 문제 없지만,UI 가 없기 때문에 관리 등을 하는 것에는 어려움이 있었습니다.다행히 이런 것을 위해서 UI를 제공하는 pypicloud 라는 것이 있어서 이를 소개해 봅니다.그런데 왜 이름이 cloud 가 붙었을까 하고 살펴보니,... » 내용보기

[Windows] 레지스트리에서 설치된 언어 확인하기

이번에는 윈도우 (10에서 테스트) 에 보면,설치된 OS 언어와 무관하게 여러 언어를 설치할 수 있고 이것의 우선 순위 및 화면에 출력되는 언어도비교적 자유롭게 설치할 수 있는데요, 이것을 구해오는 법을 알아보겠습니다.역시 API도 있겠으나 레지스터리에서 구해보았습니다.HKEY_CURRENT_USER 에서 \software\Microsoft\CTF\So... » 내용보기

[Windows] 디스플레이 배율에 관한 고찰

다른 리눅스나 맥도 마찬가지 이지만,화면(디스플레이)의 두 가지 보여주는 인자가 존재하는데 하나는 해상도이고 다른 하나는 배율(스케일)에관한 것입니다.해상도야 그래픽카드와 모니터에 따라 지원되는 최대 해상도에서더 작은 것으로 선택을 하면 됩니다만, 요즘처럼 FHD 보다 큰해상도에서는 맥에서 이야기하는 레티나처럼 지원되기 위해서는윈도우에서는 배율... » 내용보기

[Python] requirements.txt 또는 setup.py에서 조건 정보에 따른 모듈 설치

오랫만에 파이썬 관련 정보를 올립니다.다름이 아니라, 어떤 파이썬 모듈을 작성하는데,보통은 Windows, Linux, Mac 등에 모두 동작하는 파이썬 모듈을 작성합니다.(파이썬 인터프리터가 시스템 의존적인 정보를 모두 은닉하고 있기 때문에 가능한 일이지요)그런데 때로는 이러한 정보가 특정 파이썬 버전 혹은, 시스템 플랫폼에 따라&n... » 내용보기

구글애드텍스트