openshift cli sample

configmap 생성

configmap을 파일 형태로 마운트 할 경우 등록된 key 이름이 파일명으로 마운트 됨

bash-3.2$ ls -alh
total 8
drwxr-xr-x   3 seoungwon  wheel    96B  9  4 00:40 .
drwxr-xr-x  14 seoungwon  wheel   448B  9  4 00:40 ..
-rw-r--r--   1 seoungwon  wheel    43B  9  4 00:40 test-application.yml

### 파일명을 키로 해서 파일이 등록됨
bash-3.2$ oc create cm test-app-yaml --from-file=./test-application.yml

### 파일명을 변경해서 마운트 할 경우는 key 까지 설정해서 생성함.
### test-application.yml 파일을 application.yml 파일명으로 사용
bash-3.2$ oc create cm test-app-yaml --from-file=application.yml=./test-application.yml

### /tmp/src/src/main/resources 하위에 test-application.yml이 application.yml 파일명으로 마운트됨
bash-3.2$ oc set volumes dc/sample-app \
> --add \
> --overwrite \
> --name=app-yaml \
> --configmap-name=test-app-yaml \
> --mount-path='/tmp/src/src/main/resources'

deploymentconfig.apps.openshift.io/sample-app volume updated
# definitions.json 파일을 rabbitmq-definitions-json 이름으로 configmap 생성
$ oc create configmap rabbitmq-definitions-json --from-file=./definitions.json

# rabbitmq-definitions-json명의 configmap을 /etc/rabbitmq/definitions.json 로 볼륨 마운트
$ oc set volumes statefulsets rabbitmq \
--add \
--name=rabbitmq-definitions-json \
--configmap-name=rabbitmq-definitions-json \
--mount-path='/etc/rabbitmq/definitions.json' \
--sub-path=definitions.json
Posted by dewnine
,

Docker Machine

Docker 2015. 7. 21. 15:30

Docker Machine


로컬에서 개발 환경을 구축할때 여러대의 가상머신에 Docker를 올리고픈 마음이 생겼는데 boot2docker를 통해서는 하나의 가상머신만을 바라보고 있기때문에 어쩔 수 없이 별도의 독립된 여려개의 VM을 만들어야 했습니다.
물론 Vagrant를 사용하여 불편함을 해소 할 수 는 있습니다만 Docker Machine이 나와서 좀더 수월하게 Docker를 사용할 수 있게 되었습니다. Vagrant와 많은 부분이 유사합니다.

아직은 베타 버전이기 때문에 실제 운영환경에서의 사용은 추천되지 않습니다만 docker의 개발 추이가 상당이 빠르니 머지않아 정식 버전이 나오리라 기대해 봅니다.

Docker Machine은 로컬 서버나 클라우드, 데이터센터 내부에서 Docker 호스트를 생성할 수 있습니다. 로컬이나 원격지의 서버에 Docker 가 설치되며 Docker 클라이언트가 원격지의 Docker와 통신합니다.

Docker 호스트가 생성후 Docker 호스트 재시작, 중지, Docker 업그레이드, Docker 클리이언트 통한 설정 등의 작업이 가능합니다.

설치

해당 파일을 다운받아 docker-machine 으로 파일명을 변경하고 실행 옵션을 주는 것으로 설치는 간단하게 끝납니다.
좀더 자세한 설명은 Docker Machine 문서를 참고해 주세요.

OS X and Linux

OS X나 Linux에서 설치 방법은 바이너리 파일을 PATH(/usr/local/bin)상에 다운로드 하여 실행 가능하도록 변경해 줍니다.
https://github.com/docker/machine/releases/에서 사용하는 OS의 바이너리 파일명을 확인해 주세요.

OSX에서의 다운로드 실행 명령은 아래와 같습니다. Linux의 경우는 darwinlinux로 변경하면 됩니다.

$ curl -L https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_darwin-amd64 > /usr/local/bin/docker-machine
$ chmod +x /usr/local/bin/docker-machine

설치후 버전을 확인합니다.

$ docker-machine -v
machine version 0.3.0

ssh를 사용하지 않고 원격서버의 Docker를 핸들링하기 위해서는 로컬에 Docker 클라이언트를 설치 해야 됩니다.
이미 boot2docker가 설치되어 있다면 설치 하지 않아도 무방할 듯 합니다.

$ curl -L https://get.docker.com/builds/Darwin/x86_64/docker-latest > /usr/local/bin/docker
Windows

Windows에서 Docker Machine을 사용할 경우 ssh등의 의존하는 일부 프로그램과 기능 쉘을 제공하는 msysgit을 사용하는 것이 좋습니다.
mssysgit를 설치하고 터미널 프롬프트에서 다음 명령을 실행합니다. 64비트 Windows라고 가정합니다. 32비트의 경우는 x86_64 대신에 i386으로 변경합니다.
https://github.com/docker/machine/releases/에서 사용하는 OS의 바이너리 파일명을 확인해 주세요.

Docker 클라이언트 설치
$ curl -L https://get.docker.com/builds/Windows/x86_64/docker-latest.exe > /bin/docker
Docker Machine 설치
$ curl -L https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_windows-amd64.exe > /bin/docker-machine

Docker Machine 버전 확인

$ docker-machine -v
machine version 0.3.0

로컬 호스트상의 VirtualBox에 docker-machine 생성, 사용 및 관리

먼저 안전하게 VirtualBox 4.3.28 버전을 설치합니다.

docker-machine ls

사용 가능한 서버를 표시합니다.

$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL
docker-machine create —driver [드라이버] [서버 이름]

하나의 가상 서버를 생성합니다.
아래 명령 예제에서는 드라이버에 virtualbox를 지정하여 로컬의 ViertualBox에 dev라는 이름으로 가상 서버를 생성하였습니다. vertualbox 이외의 amazonec2, azure, digitalocean, google 등의 클라우드 환경의 드라이버를 지정 할 수도 있습니다. 드라이버의 자세한 코드는 Docker Machine GitHub drivers 를 참고하세요.

$ docker-machine create --driver virtualbox dev

Creating CA: /home/username/.docker/machine/certs/ca.pem
Creating client certificate: /home/username/.docker/machine/certs/cert.pem
Image cache does not exist, creating it at /home/username/.docker/machine/cache...
No default boot2docker iso found locally, downloading the latest release...
Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.6.2/boot2docker.iso to /home/username/.docker/machine/cache/boot2docker.iso...
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env dev

생성이 완료되면 docker-machine ls로 서버를 확인해 주세요.

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev             virtualbox   Running   tcp://192.168.99.100:2376

4코어/4GB의 digitalocean의 경우 아래와 같이 드라이버와 옵션을 지정해서 생성 가능합니다.

$ docker-machine create --driver digitalocean --digitalocean-access-token {토큰 지정} --digitalocean-region sgp1 --digitalocean-size 4gb dev
대상 Docker 호스트에 docker 클라이언드 지정
$ eval "$(docker-machine env dev)"

docker 호스트 dev 서버에 docker 클라이언트가 지정되어 docker 명령어가 dev 호스트 서버에서 실행 되어집니다. Docker 호스트를 재기동 하거나 새로운 터미널창을 열었을 경우에는 매번 위의 명령을 실행하여야 합니다.

현재 Docker 클라이언트에 연결된 서버 확인

docker-machine active 로 클라이언트에 연결된 활성화된 호스트명을 확인 할 수 있습니다.

$ docker-machine active
dev
Docker 호스트 서버 정보 확인

$ docker-machine env devdev 서버의 정보를 확인 할 수 있습니다.

$ docker-machine env dev
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://172.16.62.130:2376"
export DOCKER_CERT_PATH="/Users/<your username>/.docker/machine/machines/dev"
export DOCKER_MACHINE_NAME="dev"
# Run this command to configure your shell:
# eval "$(docker-machine env dev)"
Docker 호스트에서 docker 명령 실행

eval "$(docker-machine env dev) 로 Docker 클라이언트를 dev서버에 연결한 뒤에 평소처럼 로컬에서 docker 명령을 실행 하면 됩니다.
현재 열어둔 터미널창에서 eval "$(docker-machine env dev)을 실행했으니 바로 docker 명령어를 실행 합니다.

$ docker run busybox echo hello world
Unable to find image 'busybox' locally
Pulling repository busybox
e72ac664f4f0: Download complete
511136ea3c5a: Download complete
df7546f9f060: Download complete
e433a6c5b276: Download complete
hello world
Docker 호스트의 ip 확인
$ docker-machine ip dev
192.168.99.100
Docker 호스트 컨테이너 실행

호스트에 nginx 웹서버를 실행하고 8000포트를 컨테이너의 80포트로 포워딩 합니다.

$ docker run -d -p 8000:80 nginx

docker-machine ip로 Docker 호스트의 ip를 받아온뒤 8000 포트로 접속하여 웹페이지가 정상적으로 보여지는지 확인 합니다.

$ curl $(docker-machine ip dev):8000

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
Docker 호스트의 정지, 시작

docker-machine start로 호스트를 시작하고, docker-machine stop으로 정지가 가능합니다. 아래 예제는 dev 호스트를 정지 후 다시 시작합니다.

$ docker-machine stop dev
$ docker-machine start dev
Posted by dewnine
,

맥 OSX에서 boot2docker의 Docker 컨테이너와의 공유 폴더(볼륨) 사용

맥 에서 Docker를 운영할 경우 boot2docker를 설치하여 운영하게 됩니다. 그런데 boot2docker가 VirtualBox의 가상 머신위에 docker 컨테이너를 사용 하는 방식이여서 docker의 볼륨 공유를 설정 하였을 경우라도 간혹 권한 문제가 발생하기도 합니다.
아래는 Mysql을 설치할 경우 데이터 볼륨을 공유 볼륨으로 지정하여 설치할 경우 아래와 같이 아예 권한을 맥의 호스트 계정의 uid로 생성을 하니 권한 문제가 없이 설치가 되었습니다.

1. Docker의 Mysql의 공식 레포지토리에서 Docker파일을 내려 받습니다.

2. Docker Mysql공식 링크

https://github.com/docker-library/mysql/tree/b4a2bba171214eadf25aff14a13953b64237f5d8/5.6

3. Mysql의 Docker 빌드 파일 다운로드

Dockerfiledocker-entrypoint.sh 파일 2개를 모두 다운 받습니다.

4. Dockerfile 수정

Dockerfile의 4번째 라인의 mysql 유저 생성 부분에서

RUN groupadd -r mysql && useradd -r -g mysql mysql

다음과 같이 boot2docker 의 docker 유저의 uid 와 동일하게 생성하도록 수정합니다.

RUN groupadd -r mysql && useradd -u 1000 -r -g mysql mysql

5. 빌드합니다.

수정한 Dockerfiledocker-entrypoint.sh이 있는 위치에서 빌드하여 이미지를 생성합니다.
아래 예제는 mysql/5.6.osx 라는 이름으로 빌드하고 있습니다.

# docker build -t mysql/5.6.osx .

6. 실행

test-mysql 이름으로 맥 호스트의 /Users/Guest/docker_work/mysql 디렉토리가 Docker의 Mysql 컨테이너를 실행하는 예제입니다. 정상적으로 디비가 생성이 되며 포트 포워드도 하고 있어 맥에서 boot2docker의 아이피로 3316 포트로 Mysql에 연결이 가능합니다.

docker run  --name test-mysql  -p 3316:3306  -v /Users/Guest/docker_work/mysql:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=testpwd  -d mysql/5.6.osx

참고

맥에서 boot2docker를 통해 Docker를 사용할 경우 Mysql뿐만 아니라 httd와 같이 apache 유저를 생성하여 컨테이너를 실행시 컨테이너 실행시 유저 생성부분에서 boot2docker의 docker 유저의 uid로 생성을 하도록 하면 호스트 OS인 맥과 boot2docker의 VM과 VM의 docker 컨테이너에서 공유 폴더를 사용할 수 있습니다.

'Docker' 카테고리의 다른 글

Docker Machine  (0) 2015.07.21
도커 Docker 설치 하기 - CentOS-6.6  (0) 2015.06.02
Mac 일반 터미널에서 Docker 사용하기기  (0) 2015.05.13
Docker  (0) 2015.05.13
Posted by dewnine
,

VirtualBox CentOS와 OSX 공유폴더 설정

리눅스계열의 게스트 OS와 호스트 OS와의 공유폴더 설정입니다.
게스트OS가 Windows라면 Virtualbox의 게스트확장 설치 메뉴에서 간단하게 설정이 가능하지만 OSX 맥 에서는 VirtualBoxGuestAdditionsois.iso를 마운트 하여 게스트확장을 설치해야 합니다.

설정 순서

  1. VirtualBoxGuestAdditionsois.iso 를 가상CD로 지정해 줍니다.
  2. 게스트 OS에서 CD를 마운트합니다.
  3. 게스트확장을 설치합니다.
  4. VirtualBox의 게스트 OS에서 호스트 OS 와의 공유폴더를 지정합니다.
  5. 재부팅 합니다.
  6. 지정한 공유폴더가 자동으로 마운트 된 것을 확인합니다.

명령어 일람

[root@vm ~]# yum install gcc kernel-devel kernel-headers dkms make bzip2
[root@vm ~]# mkdir /media/VirtualBoxGuestAdditions
[root@vm ~]# mount -r /dev/cdrom /media/VirtualBoxGuestAdditions
[root@vm ~]# cd /media/VirtualBoxGuestAdditions/
[root@vm ~]# ./VBoxLinuxAdditions.run
[root@vm ~]# reboot
[root@vm ~]#
[root@vm ~]#

1. 게스트확장에 필요한 라이브러리를 먼저 설치합니다.

yum install gcc kernel-devel kernel-headers dkms make bzip2

2. 게스트확장 설치 CD(iso 이미지)를 찾아서 준비합니다.

게스트확장 설치 iso 이미지 파일은 /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso 의 위치에 있습니다.

  1. OSX에서 게스트확장 설치 iso이미지는 Finder를 실행합니다.
  2. Finder에서 응용프로그램 > VirtualBox.app 를 선택 후 마우스 오른쪽 버튼을 클릭하여 팝업 메뉴를 표시합니다.
  3. 팝업 메뉴에서 패키지 내용 보기를 선택합니다.
  4. 나중에 가상 머신에서 cd 이미지로 마운트 하기 위해 새로 표시된 Finder에서 Contents/MacOS/VBoxGuestAdditions.iso 파일을 적당한 위치에 복사해 둡니다.

3. 게스트확장 설치 CD(iso 이미지) 마운트

가상 머신을 부팅한 후 설정 메뉴의 저장소 부분에 CD를 선택하고 CD 아이콘 버튼을 클릭하여 가상 CD/DVD 디스크 파일 선택 메뉴를 클릭하여 위에서 복사해둔 VBoxGuestAdditions.iso 파일을 선택합니다.

4. CD를 마운트하여 게스트확장을 설치합니다.

터미널에서 가상머신에 접속하거나 Virtualbox터미널 창에서 cd를 마운트 할 디렉토리를 만들어 마운트한후에 VBoxLinuxAdditions.run를 실행하여 게스트 확장을 설치 하고 재부팅합니다.

[root@vm ~]# mkdir /media/VirtualBoxGuestAdditions
[root@vm ~]# mount -r /dev/cdrom /media/VirtualBoxGuestAdditions

5. 공유 폴더 마운트

가상머신의 설정메뉴에서 공유폴더 설정창에서 공유할 폴더를 지정하고 가상머신에서 보여질 폴더 이름을 지정합니다.
자동 마운트를 선택하면 매번 커맨드 명령으로 마운트할 필요 없이 재부팅시 자동으로 마운트가 됩니다.
다음 마운트 명령으로 mount -t vboxsf {설정에서 지정한 공유 폴더 이름} {마운트할 가상 머신의 위치} 설정한 공유 폴더를 마운트 가능합니다.
아래 예제는 공유폴더 설정에서 설정한 virtualbox_share 폴더 이름을 가상 머신의 /work 에 마운트 하는 예제입니다.

[root@vm ~]# mkdir /work
[root@vm ~]# mount -t vboxsf virtualbox_share /work

### 마운트 되었는지 확인 ####
[root@vm ~]# mount    
/dev/mapper/vg_avatar-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
work on /work type vboxsf (rw)`

설정에서 자동 마운트에 체크하여 재부팅 하였을 경우는 /media/sf_{설정한 폴더 이름}으로 자동적으로 마운트 됩니다.

Posted by dewnine
,

CentOS, Red Hat 에서 EPEL 저장소 설치

공식 CentOS와 Red Hat Enterprise Linux의 저장소에 포함되지 않은 패키지를 설치하기 위해 Fedora Extra Packages for Enterprise Linux (EPEL) repository를 설치합니다.

EPEL 저장소 설치

레드햇 계열은 호환성에서 거의 문제가 없습니다.현재 사용하고 있는 해당 OS버전에 맞는 RPM을 다운로드하고 설치합니다. 64비트 패키지를 기준으로 설명합니다.
64비트이외의 OS에서는 wget으로 다운 받고 있는 url에서 OS 버전, 비트, rpm파일 이름 부분을 삭제, 변경해 가며 브라우저에서 확인하여 설치된 OS에 맞는 RPM을 다운로드 하여 설치합니다.
RPM이 다운로드 되지 않을 경우 브라우저에서 해당 페이지를 방문하여 최신 버전을 확인 해 주세요.

CentOS에 Extras 저장소

CentOS에 엑스트라 저장소는 EPEL을 설치하는 패키지를 포함하고 있으며 기본적으로 활성화 되어 있습니다. EPEL 패키지를 설치하기 위해서는 yum으로 간단하게 설치 할 수 있습니다.

sudo yum install epel-release

가장 간단한 방법입니다만 제대로 설치되지 않는다면 CentOS에서 엑스트라 저장소를 사용할 수 없는 경우일 수있으니 다음의 RPM 버전을 다운 받아 수동으로 설치하도록 합니다.

CentOS, Red Hat Enterprise Linux 5.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
sudo rpm -Uvh epel-release-5*.rpm

CentOS, Red Hat Enterprise Linux 6.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6*.rpm

CentOS, Red Hat Enterprise Linux 7.x

cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo rpm -Uvh epel-release-7*.rpm

IUS 저장소 설치

IUS 저장소는 엔터프라이즈 환경을 위한 몇몇 패키지(Php, Python, Mysql 등)의 최신 버전을 제공하고 있습니다.
패키지 이름은 다른 공식 저장소에서 사용되는 패키지 이름과 달리 하여 충돌이나 소프트웨어 버전 업데이트를 방지하고 있습니다.

CentOS 5.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/5/x86_64/ius-release-1.0-13.ius.centos5.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

CentOS 6.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-13.ius.centos6.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

CentOS 7.x

wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-13.ius.centos7.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 5.x

wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-13.ius.el5.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 6.x

wget http://dl.iuscommunity.org/pub/ius/stable/RedHat/6/x86_64/ius-release-1.0-13.ius.el6.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

Red Hat 7.x

wget http://dl.iuscommunity.org/pub/ius/stable/RedHat/7/x86_64/ius-release-1.0-13.ius.el7.noarch.rpm
sudo rpm -Uvh ius-release*.rpm

RPM이 다운로드 되지 않을 경우는 IUS Release Packages Page를 방문하여 릴즈된 최신 버전을 확인해 주세요.

기존 패키지 IUS 버전으로 업데이트

이미 설치되어 있는 패키지를 IUS 저장소의 최신 버전으로 업데이트 할 수 있는 간단한 방법(plugin)도 제공하고 있습니다.

sudo yum install yum-plugin-replace

이 플러그인은 yum에 지정된 패키지를 대체하고 필요한 종속성 설치 명령을 교체합니다. 예를 들어 PHP 패키지를 IUS 저장소의 PHP5.3 패키지로 교체할 경우는 아래와 같이 실행 가능합니다.

sudo yum replace php --replace-with php53

좀더 자세한 내용은 IUS Client Usage Guide.를 참고하세요.


Remi 저장소 설치

core CentOS와 Red Hat Enterprise Linux의 최신 버전의 소프트웨어를 제공하고있습니다.
LAMP(오픈소스 기반의 기업용 SW개발 플랫폼)기반의 최신 패키지를 제공하고 있는 저장소입니다.

Remi 저장소의 패키지 이름은 공식 저장소에서 사용되는 패키지명과 동일 합니다. 이로 인해 yum 업데이트시에 의도하지 않게 패키지의 버전 업데이트가 이루어 질 수 있으니 주의 해야 합니다.

CentOS 와 Red Hat Enterprise Linux 5.x

wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm

CentOS 와 Red Hat Enterprise Linux 6.x

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm

CentOS 와 Red Hat Enterprise Linux 7.x

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7*.rpm

Remi 저장소의 활성화

Remi저장소는 기본적으로 비활성화 되어 있습니다. 패키지를 설치할때 다음과 같이 필요에 의해 --enablerepo=remi 옵션을 사용 하여 활성화 할수 있습니다.

sudo yum --enablerepo=remi install php-tcpdf

매번 사용 할 때만다 옵션을 지정하지 않고 평상시에 Remi 저장소가 사용되도록 하기 위해서는 yum 설정 파일을 수정하면 됩니다.

sudo vi /etc/yum.repos.d/remi.repo

Edit the [remi] portion of the file to set the enabled option to 1. This action enables the Remi repository by default.
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

사용 가능한 저장소 확인

필요한 저장소를 설치하고 아래 명령으로 설치된 저장소가 어떤 것이 있는지 확인 할 수 있습니다.

yum repolist
[root@3b5d0e97178d /]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.oasis.onnetcorp.com
 * epel: mirror.premi.st
 * extras: mirror.oasis.onnetcorp.com
 * updates: mirror.oasis.onnetcorp.com
repo id                                                            repo name                                                                                                  status
base                                                               CentOS-6 - Base                                                                                             6,518
epel                                                               Extra Packages for Enterprise Linux 6 - x86_64                                                             11,588
extras                                                             CentOS-6 - Extras                                                                                              38
updates                                                            CentOS-6 - Updates                                                                                          1,147
repolist: 19,291

제 테스트용 vm에는 epel 저장소가 설치되어 있네요.

Remi와 같은 일부 저장소는 기본적으로 비활성화 되어 있습니다. 비활성화된 저장소를 확인 하기위해서는 disabled를 추가하면 비활성화된 저장소도 확인 가능합니다.

yum repolist disabled
Posted by dewnine
,

도커 Docker 설치 하기 - CentOS-6.6

CentOS 6.6 에 Docker를 설치하는 방법에 대해 알아봅니다.
로컬 PC라면 boot2docker를 설치해도 무방 하지만 테스트및 개발 전용 머신이나 전용 PC상의 CentOS 리눅스 서버에 docker를 설치하는 것을 가정합니다.

설치 명령어 정리

yum install epel-release
yum -y remove docker
yum install docker-io
docker pull centos:6
docker images

설치

먼저 EPEL 레포지터리를 활성화 시킵니다. 아직 EPEL Repository가 설치되어 있지 않다면 EPEL installation instructions 를 참고해 주세요.

간단하게 아래 명령어로 EPEL을 사용 할 수 있습니다. epel-release는 CentOS Extras repository에 포함되어 있습니다.

[root@vm ~]$ yum install epel-release

CentOS-6의 경우 시스템 트레이 응용프로그램 과 실행파일의 패키지 이름이 충돌 할 수 있으니 docker-io를 설치하기 위해 docker 패키지를 먼저 삭제해 줍니다.

[root@vm ~]$ yum -y remove docker

그다음 docker-io 패키지를 설치합니다.

[root@vm ~]$ yum install docker-io

docker 동작 확인

docker의 CentOS 6버전을 다운로드 합니다.

[root@vm ~]$ docker pull centos:6
Pulling repository centos
b9aeeaeb5e17: Download complete
f1b10cd84249: Download complete
Status: Downloaded newer image for centos:6

다운 받은 CentOS 이미지가 있는지 확인합니다.

[root@vm ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              6                   b9aeeaeb5e17        5 weeks ago         202.6 MB
centos              centos6             b9aeeaeb5e17        5 weeks ago         202.6 MB

'Docker' 카테고리의 다른 글

Docker Machine  (0) 2015.07.21
맥 OSX에서 boot2docker의 Docker 컨테이너와의 공유 폴더(볼륨) 사용  (0) 2015.07.20
Mac 일반 터미널에서 Docker 사용하기기  (0) 2015.05.13
Docker  (0) 2015.05.13
Posted by dewnine
,

OS 확인

[root@vm ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@vm ~]# yum install ppp

pptpd 패키지 설치

http://poptop.sourceforge.net/yum/beta/packages/ 를 방문하여 최신 버전을 확인 하여 사용하세요.

[root@vm ~]# cd /usr/local/src
[root@vm ~]# 
[root@vm ~]# wget http://poptop.sourceforge.net/yum/beta/packages/ppp-2.4.5-33.0.rhel6.x86_64.rpm
[root@vm ~]# rpm -Uvh ppp-2.4.5-33.0.rhel6.x86_64.rpm
[root@vm ~]# 
[root@vm ~]# wget http://poptop.sourceforge.net/yum/beta/packages/pptpd-1.4.0-1.rhel5.1.x86_64.rpm
[root@vm ~]# rpm -Uvh pptpd-1.4.0-1.rhel5.1.x86_64.rpm

설정

  • /etc/pptpd.conf
  • /etc/ppp/options.pptpd
  • /etc/ppp/chap-secrets
  • /etc/sysctl.conf

/etc/pptpd.conf 설정

/etc/pptpd.conf 설정 파일에 파일에서 아이피 정보를 설정합니다.

connections 10
localip 192.168.99.1
remoteip 192.168.99.100-200
  • connections : 접속할 클라이언트 수를 지정합니다.
  • localip : pptp vpn상에서의 현재 서버에 할당하고 싶은 아이피를 설정합니다.
  • remoteip : 접속한 클라이언트에 할당할 아이피의 범위를 설정합니다. 위 예제에서는 192.168.99.100 에서부터 200번 사이의 아이피를 순차적으로 접속 클라이언트에 할당합니다.

etc/ppp/options.pptpd 설정

etc/ppp/options.pptpd 설정 파일에 DNS와 mtu(패킷을 한번에 보낼 수 있는 최대크기)등을 설정합니다. 아래의 설정을 추가하지 않고 디폴트 설정 그대로 운영하도 무방합니다.

ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1400

/etc/ppp/chap-secrets 설정

/etc/ppp/chap-secrets 파일에 접속 클라이언트의 인증 계정에 대해 설정합니다.
아래 예제에서는 접속 클라이언트의 인증 아이디로는 user1로 비밀번호로는 password1를 설정하였습니다. 실제 서버에서는 로그인 아이디와 복잡한 비밀번호로 설정할 필요가 있습니다.

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user1  *  password1 *

/etc/sysctl.conf 설정

/etc/sysctl.conf 에서 ipv4의 포워딩을 허용하도록 설정합니다.

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

설정을 변경한 후에서 sysctl -p 커맨드를 실행하여 설정을 리로드합니다.

[root@docker-vm ~]# sysctl -p
net.ipv4.ip_forward = 1

pptpd 프로세스 기동

[root@vm ~]# /etc/init.d/pptpd restart
Shutting down pptpd:                                       [  OK  ]
Starting pptpd:                                            [  OK  ]
Warning: a pptpd restart does not terminate existing
connections, so new connections may be assigned the same IP
address and cause unexpected results.  Use restart-kill to
destroy existing connections during a restart.

기타 사항

SELinux의 무효화

/etc/selinux/config 파일을 열어 SELINUX=disabled 로 설정을 변경합니다. /etc/selinux/config 파일에는 SELINUXSELINUXTYPE가 기술되어 있으니 SELINUXTYPE에 disabled 설정 하지 않도록 주의 합니다.

[root@vm ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

설정을 변경한 후에는 재부팅이 필요합니다. 혹여 잘못하여 SELINUXTYPE에 disabled 로 설정하여 재부팅하게되면 커널 패닉으로 재부팅 되지 않아 패닉상태가 될 수도 있습니다. 혹여 SELINUXTYPE에 disabled 설정하여 커널 패닉 화면을 보게 되신다면 SELinux 무효화 설정 후 kernel panic 복구 을 참고하여 복구하세요.

로그 출력

로그를 출력하여 접속을 확인할 경우 /etc/pptpd.conf 의 debug를 활성화 하여 로그를 출력할 수 있습니다.

[root@vm ~]# vi /etc/pptpd.conf

# TAG: debug
#       Turns on (more) debugging to syslog
#
debug

debug설정후 아래와 같이 rsyslog.conf(syslog.conf)에 debug를 추가하여 /var/log/pptpd에 로그를 출력하도록 합니다.

[root@vm ~]# vi /etc/rsyslog.conf

 *.=debug;\
        news.none;mail.none     -/var/log/pptpd

iptable 설정

혹시 iptable를 설정하였을 경우는 아래를 참조해 주세요.
pptp vpn에서 사용하는 포트인 1723 포트 개방과 위에서 ppp0에서 사용할 192.168.99.0/24에 포워딩 설정한 내용입니다.아래 예제에서는 sshd의 기본 포트 22번도 열어 놓고 있습니다.

[root@vm ~]# cat /etc/sysconfig/iptalbes
# Generated by iptables-save v1.4.7 on Fri May 29 16:53:48 2015
*nat
:PREROUTING ACCEPT [17:1691]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [4:289]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri May 29 16:53:48 2015
# Generated by iptables-save v1.4.7 on Fri May 29 16:53:48 2015
*filter
:INPUT ACCEPT [39:4272]
:FORWARD ACCEPT [6:466]
:OUTPUT ACCEPT [45:5831]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A FORWARD -s 192.168.99.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Fri May 29 16:53:48 2015

Windows 에서 VPN 클라이언트 접속

윈도우 8.1 에서 위에서 설정한 VPN서버에 접속하는 방법입니다.

새연결 네트워크 설정 을 클릭하여 새로운 네트워크 연결을 생성합니다.


회사에 연결(VPN)을 선택합니다.


내 인터넷 연결 사용(VPN) 을 선택합니다.


인터넷 주소에 위 서버의 아이피를 입력하고 대상 이름 부분에서 알아보기 쉬운 별칭 이름을 입력하고 만들기 버튼을 클릭하면 대상 이름에 설정한 이름으로 네트워크 연결이 생성됩니다.


제어판\네트워크 및 인터넷\네트워크 연결에서 확인 하면 위에서 생성한 네트워크 연결이 생성 되어 있는 것을 확인 할 수 있습니다.

그림


새로 생성한 내트워크 연결을 선택하고 마우스 오른쪽 버튼을 클릭하면 속성을 클릭합니다.

그림


Internet Protocol Version 4(TCP/IPv4) 를 선택하고 속성 버튼을 클릭하여 세부 설정 창을 표시합니다.


(TCP/IPv4)의 세부 설청 창에서 고급 버튼을 클릭합니다.


IP설정 탭에서 원격 네트워크에 기본 게이트웨이 사용이 선택되어 있는지 확인하고 확인 버튼을 클릭합니다.



새로 생성된 네트워크 연결에서 마우스 오른쪽 클릭으로 연결/연결 끊기 를 선택합니다.


윈도우 8 버전에서는 오른쪽에 연결 창이 포시되면 윈도우 7이나 다른 버전에서는 연결 창이 표시됩니다. 생성한 연결을 선택하면 연결 이라는 버튼이 표시되면 클릭하여 서버에 연결 합니다.

그림


VPN서버 접속에 필요한 인증 창이 표시 되면 위 서버에서 설정한 아이디와 비빌번호를 입력합니다.


VPN 서버에 연결 되었습니다.


정상적으로 연결되었을 경우 PC의 아이피가 외부에서는 VPN서버의 아이피로 표시되게 됩니다. 네이버나 다음에서 아이피 확인 이라고 검색하면 PC의 아이피를 확인 할 수 있습니다. VPN서버의 아이피가 표시되면 정상 적으로 작동하고 있는 것입니다.


Posted by dewnine
,

SELinux 무효화 설정 후 kernel panic

로컬에 설치한 VM에서 어이 없게도 SELinux를 무효화 설정 하고 재기동을 했더니 kernel panic 으로 재기동이 안되었다. 실서버나 실제 상황이라면 정말 패닉상태로 손에 땀좀 나겠지만 테스트용 로컬 PC에서의 가상화 서버인 관계로 나의 부주의에 대해 살짝 짜증이 … ^^

kernel panic - not syncing: Attempted to kill inint !
PId: 1, comm: init not tainted 2.6.32.-279-5.2.e16.x86_64 #1

몰려드는 짜증에 VM을 확 지워버리고 싶은 충동이 물리왔지만 마음을 진정시키고 복구.

SELinux 무효 설정시 있을법한 실수

SELinux 무효화 설정시 /etc/selinux/config 파일을 설정합니다만 이 파일에는 SELINUX, SELINUXTYPE 설정 파라메터가 2개있습니다.

1
2  # This file controls the state of SELinux on the system.
3  # SELINUX= can take one of these three values:
4  #     enforcing - SELinux security policy is enforced.
5  #     permissive - SELinux prints warnings instead of enforcing.
6  #     disabled - No SELinux policy is loaded.
7  SELINUX=enforcing
8  # SELINUXTYPE= can take one of these two values:
9  #     targeted - Targeted processes are protected,
10 #     mls - Multi Level Security protection.
11 SELINUXTYPE=targeted

7번째 라인의 SELINUX를 disabled 변경하려다가 잘못하여 11번째 라인의 SELINUXTYPE에 disabled 를 설정한 후 재기동 하게 되면 재기동이 되지 않고 커널 패닉 에러를 보게 됩니다. 중요한 실서버라면 잠깐동안 지옥을 보게 되겠지요. ^^

복구 방법

  1. 재기동시 OS부팅시 가운트다운 화면에서 아무 키를 누릅니다.
  2. GRUB 메뉴에서 기동 OS를 위, 아래 방향키로 선택하여 키보드의e 키를 누릅니다.
  3. 위, 아래 방향키로 조정하여kernel 행을 선택하여 키보드의 e키를 누릅니다.
  4. 편집 모드가 표시되면 마지막 부분에 한칸 띄우고 enforcing=0 라고 입력하여 추가합니다. enforcing앞에 공백을 넣어야 합니다. = 가 입력이 안될 경우 ^키를 누르면 =가 입력됩니다.
  5. 편집후 엔터키를 누르면 설정이 저장 되고 이전의 kernel을 선택했던 화면으로 되돌아 가게됩니다.
  6. b키를 눌러 OS를 부팅합니다.
  7. 부팅후 /etc/selinux/config파일을 이번에는 제대로 확인하여 7번째 라인 SELINUX을 desabled로 설정 하고 재부팅합니다.
Posted by dewnine
,

Mac OS X 스크린샷 캡쳐 파일 JPG, PDF, GIF 포멧 변경

모든 버전의 Mac OS X 의 화면 캡쳐시 저장 되는 파일 포멧은 PNG입니다. 이 기본 설정을 간단하게 JPG, TIFF, PDF, GIF로 변경 할 수 있습니다.물론 기본 설정인 PNG로 되돌릴 수도 있습니다.

화면 캡쳐 파일 포멧 변경 방법

기본 설정을 변경하기 위해서는 응용프로그램/유틸리티 폴더의 터미널.app의 커맨드라인을 이용해야 합니다.
터미널.app이외의 iTerm과 같은 다른 앱을 이용해도 됩니다.

스크린샷을 JPG 포멧으로 변경

커맨드라인에서 아래의 명령을 실행 하고 Enter키를 누릅니다.

defaults write com.apple.screencapture type jpg

위 명령만으로도 화면 캡쳐시 저장 되는 파일 포멧이 변경되지만 변경 사항이 적용되지 않거나 변경사항이 적용되도록 SystemUIServer를 재 시작합니다.

killall SystemUIServer

화면 캡쳐를 하여 저장되는 파일 포멧이 변경 되었는지 확인합니다.
화면 캡쳐는 전체 화면을 캡쳐 할 경우는 Command+Shift+3, 캡쳐 영역을 지정하여 캡쳐 할 경우는 Command+Shift+4 로 단축키를 이용하여 스크린샷을 저장 할 수 있습니다.

PDF 포멧으로 설정

위의 두번의 명령을 실행하여 타입 부분을 PDF로 변경하면 됩니다.
아래와 같이 ;로 구분하여 한 줄의 명령으로도 합쳐서 실행하는 것도 가능합니다.

defaults write com.apple.screencapture type pdf; killall SystemUIServer

위의 명령을 입력(복사해서 붙여넣기) 후 엔터키를 입력하면 됩니다.

GIF 포멧으로 설정

GIF 포멧은 일반적으로 적은 색을 사용하여 품질이 좋지 않습니다만, 필요할 경우 아래 커맨드로 GIF포멧으로 변경이 가능합니다.

defaults write com.apple.screencapture type pdf; killall SystemUIServer

TIFF 포멧으로 설정

TIFF 포멧은 가장 좋은 품질로 압축되지 않은 이미지 형식입니다. TIFF는 일반적으로 인쇄목적을 위해 사용되며, 압축되지않아 스크린 샷의 파일 크기가 매우 큽니다. 20메가 바이트 이상이 될 수도 있습니다.

defaults write com.apple.screencapture type tiff; killall SystemUIServer

기본 설정인 PNG로 되돌리기

기본 설정인 스크린 샷 저장 파일 포멧인 PNG으로 변경하는 것도 가능합니다.
변경 방법은 위의 명령들과 동일하게 타입을 PNG로 지정 하면 됩니다.

defaults write com.apple.screencapture type png;

SystemUIServer도 재시작 해줍니다.

killall SystemUIServer

'Mac OS X' 카테고리의 다른 글

Customize Terminal Prompt. 터미널 프롬프트 변경  (0) 2015.05.18
Posted by dewnine
,

Unity에서 VSCode(Visual Studio Code) 사용하기

  1. Unity의 설정에서 외부 스크립트 에디터에서 VSCode로 지정해 줍니다.
  2. C# 스크립트 파일을 더블클릭하게 되변 VSCode가 실행되어 해당 파일이 보여지게 됩니다. 여기에서 파일 구조를 볼수 있도록 Explor 아이콘을 클릭하여 파일 구조가 표시되도록합니다.
  3. 파일구조가 보여지게 되면 Open Folder 버튼을 클릭하여 Unity 프로젝트의 폴더를 워크 폴더로 지정합니다.
  4. Unity 프로젝트의 폴더를 워크 폴더로 지정
  5. 폴더가 지정되고 폴더 안에 Unity의 C# 프로젝트 파일 .sln 파일이 존재하면 상태바에 pick a project 버튼이 표시됩니다. pick a project 버튼이 표시되지 않을 경우는 해당 폴더 안에 .sln파일이 없는 상태이니 유니티 설정에서 1번의 외부 스크립트를 디폴트 monodevelop으로 재 설정한 뒤 C#파일을 열어 저장하게 되면 .sln파일이 생성 됩니다.
  6. 상태바의 pick a project버튼을 클릭하면 상탄에 .sln파일을 선택할 수 있게 표시됩니다. 두개가 표시되는데 둘중 하나를 선택 합니다.
  7. C# 프로젝트로 인식되어 지원 기능을 사용할 수 있게됩니다.

Posted by dewnine
,