docker image에 ssh 서비스 추가 (멀티 서비스 띄우기)

docker 컨테이너는 마지막 CMD 혹은 ENTRYPOINT 명령 하나로 컨테이너를 시작한다.
즉, 아래와 같이 docker file을 생성해도 ssh와 httpd가 모두 실행되지 않는다는 이야기이다.

...전략...
# ssh 시작
CMD ["/usr/sbin/sshd", "-D"]
# httpd 시작
CMD ["/usr/local/apache2/bin/httpd", "-DFOREGROUND"]

하지만 편의상 컨테이너에 ssh로 접속하고, 이를 통해 컨테이너 내부 상황을 확인하거나 하고 싶다면 ssh를 추가해줘야 한다.
이를 위해 실행할 서비스만큼 스크립트를 생성하고 wrapper 스크립트를 만들어서 이들을 실행해줘야 한다. 아래 스크립트와 dockerfile을 참고해서 이미지를 만들면 된다.

## ssh를 실행하기 위한 스크립트 
## ssh_start.sh
#!/bin/bash
/usr/sbin/sshd -D

## apache를 실행하기 위한 스크립트
## httpd_start.sh
#!/bin/bash
/usr/local/apache2/bin/httpd -DFOREGROUND

## wrapper script
## wrapper.sh
#!/bin/bash
set -m
/ssh_start.sh &
/httpd_start.sh &
fg %1
## dockerfile 예시
## httpd 이미지에 ssh를 추가하여 연결하고 싶은 경우에 대한 예시
# base가 될 이미지
FROM httpd

#아래 작업들을 수행할 계정 (apt 등은 root 권한이 필요하다)
USER root

ENV DEBIAN_FRONTEND=noninteractive \
    TZ=Asia/Seoul

# ssh server 설치
### Ubuntu
RUN apt-get update                                            &&\
    apt-get install -y openssh-server                         &&\
    apt-get install -y curl vi vim tcpdump net-tools          &&\  #필요한 경우 설치한다.
    apt-get clean                                             &&\
    rm -rf /var/lib/apt/lists/*    /tmp/*    /var/tmp/*

RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
RUN sed -i 's/#X11Forwarding no/X11Forwarding yes/' /etc/ssh/sshd_config
RUN echo "export VISIBLE=now" >> /etc/profile


# 사용자 추가
RUN useradd haedong -G sudo -m -d /home/haedong -s /bin/bash
RUN echo 'haedong:password'| chpasswd
RUN echo alias "ls='ls --color=auto'" >> ~/.bash_profile
RUN echo alias "ll='ls -lha" >> ~/.bash_profile

RUN mkdir /var/run/sshd

# 외부로 연결할 포트
EXPOSE 22 80

# 서비스 시작을 위한 스크립트
RUN mkdir -p /root/scripts
COPY ssh_start.sh /root/scripts/ssh_start.sh
COPY httpd_start.sh /root/scripts/httpd_start.sh
COPY wrapper.sh /root/scripts/wrapper.sh

CMD /root/scripts/wrapper.sh

컨테이너 빌드 및 시작

# image build
docker build -t httpd:new .

# 컨테이너 시작
docker run -d -p 2222:20 -p 8888:80 httpd:new

불교에서 유래한 다양한 단어들 #1

  • 야단법석(野壇法席 / 惹端法席) – ‘야단’은 진리에 대한 끊임없는 의심을 뜻하는 ‘야기요단’의 줄임말, 불교에서는 진리에 대하여 탐구하는 ‘설법의 장’이라는 것이 열리는데 이때 사람이 많이 모여 ‘법석’을 펴는 것이 현재 ‘야단법석’의 어원이 됨.
  • 주인공(主人公) – 불교에서 득도의 위치에 오른 사람을 뜻함.
  • 아수라(असुर, Asura) – 인도 신화에서 등장하는 종족. 데바족의 숙적인 악신, 악마 혹은 반신족이다. 가끔 락샤사와 동일시되지만 그 기원 때문인지 락샤사보다 더 신에 가깝게 취급된다.
  • 찰나(刹那) – 가늠할 수 없을 정도로 짧은 시간.
  • 순식간(瞬息間) – ‘순’은 눈을 깜빡이는 시간, ‘식’은 숨을 내쉬는데 걸리는 시간. (참고로 1순식간 = 24찰나임)
  • 다반사(茶飯事) – 차를 마시고 밥을 먹는 일. 말 그대로 일상생활에서 하는 일을 뜻함.
  • 아비규환(阿鼻叫喚) 불교에는 팔열지옥(아비지옥:뜨거운 지옥)과 팔한지옥(규환지옥:추운 지옥)이 있는데 이 중 아비지옥과 규환지옥을 묶어 참혹함을 나타내는 말
  • 이판사판(理判事)判 – 조선시대 불교 승려의 두 부류인 이판승과 사판승을 합쳐서 부르는 말. 사판승은 주로 잡역에 종사하여 사찰의 유지에 힘쓰고, 이판승은 승려 본분을 다해 참선을 통한 수행에 힘썼다. 조선의 숭유억불에 의해 천인으로 전락한 승려가 된다는 것은 인생의 막다른 선택으로 여겨진 시대적 배경으로 인해 부정적인 의미의 끝장이라는 뜻으로 사용되었다.
  • 점심(點心) – 선종(禪宗)에서, 배고플 때 조금 먹는 음식. ‘점’을 찍듯이 아주 작게 먹어서 ‘점심’이라고 불림.
  • 늦깎이 – ‘늦게 머리를 깎은 사람’이라는 뜻. 즉 늦게 스님이 된 사람.
  • 무진장(無盡藏) – ‘끝이 없는 창고’ 라는 뜻. 불교에서는 덕이 광대하여 다함이 없음을 나타내는 말로 쓰인다.
  • 장로(長老) – ‘덕망 있는’, ‘두터운’, ‘나이 많은’이라는 뜻의 산스크리트어 ‘스타비라(sthavira)’랑 팔리어 ‘테라(thera)’에서 유래한 말. 아유솔만(阿瑜率滿), 존자(尊者) 또는 구수(具壽)라고도 한다.
  • 불가사의(不可思議) – 사람의 생각으로는 미루어 헤아릴 수도 없다는 뜻. 놀라운, 밝혀지지 않은 오묘한 것. 불교에서 유래한 성어
  • 대중(大衆) – 불교 용어로 많이 모인 스님을 뜻하는 말. 본래는 ‘승려 집단’, ‘많은 사람’을 의미하는 산스크리트어 ‘마하상가’를 한역한 단어였지만, 1920년대 일본의 사회주의 운동권에서 영어 mass를 번역한 단어로 대중이라는 단어를 선택해 mass의 뜻인 ‘집단으로서의 일반민중’이라는 뜻으로 사용되게 되었다.

OPIc(오픽) 레알 실전 후기

OPIc?

OPIc(Oral Proficiency Interview-Computer)는 공인인증 영어 말하기 시험이다. 컴퓨터를 이용해 응시자 개개인의 질문에 대한 대답을 녹음한 후 미국의 평가 서버에 전송하여 공인평가자가 평가한다. 평가 등급은 최저 Novice Low에서 최고 Advanced Low 사이에서 부여된다. 만약 Advanced Medium 이상의 등급을 원한다면 컴퓨터 방식인 OPIc이 아니라 인터뷰 방식인 OPI에 응시해야 한다. 삼성그룹에서 도입을 발표해서 유명해졌다.
라고 한다.

응시방법

OPIc 공식사이트 에서 돈 내고 제 때 시험장 가서 시험 보면 된다.
응시료는 78,100원이다.
여기 나무위키에 잘 설명 돼 있다.

시험 방법

컴퓨터 앞에 앉아서 헤드셋 뒤집어 쓰고 질문(문제) 듣고, 답하면 된다.

어차피 이래 저래 찾아보면 다양한 정보가 나오니 자세한 정보는 여기 말고 다른 곳에서 찾아보자.
단, 이래저래 찾아봐도 찾지 못했던 궁금증을 몇 가지 적어보자면 다음과 같다.

  1. 난이도 : 난이도는 1부터 6까지이다.
    난이도 선택 화면에서 ‘답변의 예’를 들어볼 수 있다. 즉 (실제 시험을 치른 자인지 모르지만)
    난이도는 1부터 6까지 선택할 수 있고, 선택 시 sample을 들어볼 수 있다.
    난이도 1의 예를 들어보면
    ‘I……………………………………. was …………. visited…………………………..umm………….’ 이렇게 대답하는 걸 들을 수 있고
    난이도 5 정도 되면
    ‘I was ……..visited, well, America last month, and………….’ 수준으로 적당히 말을 하는 걸 들을 수 있다.
    즉 내가 어느 정도로 답변을 할 수 있는 지를 예시를 들어 선택하는 거다.
  2. 그럼 4-4, 5-6 이런 난이도는 뭐냐?
    총 16가지의 문제 중 7개인가 8개 쯤 풀면 난이도를 바꿀 것인지 물어본다.
    즉, 7번 문제를 풀고 나머지는 어떤 난이도로 문제를 풀겠습니까? 하고 1부터 6까지의 난이도를 다시 선택하도록 한다.
    그러니까 시작할 때 4를 선택하고 중간에 6을 선택하면 4-6이 되는 거다.
  3. 주의점
    하나, 질문은 총 두 번 들을 수 있다. 간혹 다시 듣기 하면 감점이 된다는 헛소리들이 있는데
    질문 다시 듣기는 평가에 영향을 주지 않는다고 분명히 이야기 해준다.
    , 질문에 대한 대답을 하는 시간은 총 2분이라고 하는데, 이 2분을 알기 쉽지 않다.
    가능하면 스마트하지 않은 손목시계를 하나 가지고 가도록 하자.
    , 아무래도 말하기 이다보니 옆에서 문제 답변을 하는 소기라 엄청 거슬린다.
    신경을 안쓰려고 해도 사람이 어찌 그러한가, 나는 ‘ummm….. well…… I…..ah….’
    이러고 있는데 여러 사람이 한꺼번에 말하면 뭔가 엄청 말 잘하는 것처럼 들린다.
    주변에 사람들의 시험에 신경 쓰지 않도록 정신무장을 해야 한다.
    , 질문 자체는 엄청 어렵거나 하지 않는데 아무래도 영어로 대답을 해야 하다보니
    대답 중 질문의 포인트를 잊는 경우가 있다.
    즉, 공원에 간적 있나요? 누구랑 갔습니까? 가서 뭐했습니까?
    이런 질문이면 뭐 했는 지를 가장 나중에 듣다 보니 뭐했는지 생각하다가 누구와를 잊게 된단 말이다.
    다섯, 생각보다 시간은 부족하지 않다. 시험 시간은 40분, 문제는 16문제, 질문당 대충 2분.
    질문을 듣는 시간을 생각해도 빠듯하지 않다. 20여분만 지나도 하나둘 씩 일어나서 나가기 시작한다.

대충 그러하다.
평소 외국인 친구들과 대화를 자주 나눴다거나, 외국어를 많이 사용한다면 IM 등급 정도는 쉽게 받을 수 있지 않을까 하는 시험이다.


나 같은사람도 IM2 정도는 받는다.
다들 열심히 공부해서 좋은 점수 받을 수 있길 바란다.

사랑스러운 나의 도시 #2-2. 베트남 하노이 – 먹거리

일본식 라면

대충 여기 쯤 있는 가게이다.

진짜 쌀국수 (돼지고기)

도마, 식탁, 가게 모두 정말 지저분하다. 하지만 정말 맛잇다.
대충 우리돈 3000원 정도, 고기가 너무 맛있어서 추가 주문했다. (보통은 그리 안먹는 듯 하지만) 추가로 대충 1000원씩

대략 3개월 하노이에 머물면서 먹었던 쌀국수 중에 가장 맛있었다. 대우호텔 북쪽 골목 어딘가였던 기억이 나는데 정확한 것은 잘 기억이 나지 않는다. 다시 하노이에 간다면 꼭 다시 찾아가고 싶은 곳이다.

또 진짜 쌀국수 (닭고기)

분짜 (분:넓은 쌀국수, 짜:고기)

베트남 음식 중 가장 좋아하는 음식이다. 야채는 무한 리필, 쌀국수(분)도 어마어마하게 많이 준다. 물론, 야채는 손님 상에 여러 번 오르락 내리락 하므로 깨끗하지 않다. 거기에 쌀국수도 재탕한다. 위와 장이 튼튼하지 않거나 물갈이가 심한 사람은 분명 설사로 고생할거다.

치킨(?)

백종원의 스트리트 머시기 하는 프로그램에도 나왔던 음식이다.

꿀 같기도 하고 조청같기도 하고 아무튼 달달한게 맛이 좋다.
절인건지 뭔지 이런 녀석과 함께 먹는데….. 이건 내 취향은 아니었다.

닭이 작은 건지, 아니면 살을 떼어 낸건지, 아니면 이래저래 찢어 놔서 그런 건지는 알 수 없지만 고기가 풍성하게 붙어있는 느낌은 아니다. 거기다 가격도 싸진 않다. 저렇게 두 명이 먹고 2만원 쯤 썼는데, 한국인이나 한국인 수준의 소득이 있는 사람이 크게 부담되지 않겠지만 분명 현지인이 먹기에 쉬운 가격은 아이다.

하지만 구운 반미를 함께 먹으니 양이 부족한 느낌이 들지는 않고, 맛이 참 좋다. 꼭 한번은 들러야 할 곳이다.

BBQ 뷔페 – 셰프 중(?)

대우호텔에서 동쪽으로 조금 가다보면 큰 몰이 하나 있는데 그 근처에 있는 식당이다.

김치도 있고 대충 저런 것들을 구워먹는다.

가격은 1인당 3만원 정도 했던 듯 하다. 돼지고기도 있고 소고기도 있고, 염통 이라던가 이런저런 특수 부위와 해산물도 있고 뭔가 종류는 참 많은데, 그런데…….. 별로다. 두 번은 가지 않았다. 김치도 더럽게 맛 없었다. 추천하지 않는다.

사랑스러운 나의 도시 #2-1. 베트남 하노이

두 번째 해외 여행은 베트남. 한국말로 하면 업무상 출장 이었으니 여행이라 하기 좀 그럴 수 있겠지만 영어로는 Business trip 이므로, trip이 들어가서 여행.
‘비행기 탈 때 신발 벗어야 해요?’ 수준으로 경험이 없던 내게 두 번째 여행이다. 이유야 어찌 됐건 낯선 어딘가로의 발걸음은 늘 즐겁다. 2016년 11월 27일 이번에는 직장 동료들과 함께 비행기에 몸을 실을 수 있었다. 출장비도 넉넉히 들어왔겠다 면세점에서 즐거운(?) 시간을 보내고 별 다섯 개 호텔에서의 3개월은 또 다른 낯섬. 평범하게 뛰던 내 심장을 두근거리게 하는 데 있어 부족함이 전혀 없었다.

이번엔 비싼 렌즈도 하나 더 구매했겠다 두 세트의 카메라와 액션캠으로 내가 보고 듣는 모든 것을 담으리라.

석달 동안 머물 숙소는 하노이 서쪽에 위치한 ‘하노이 대우 호텔’ . 투레 호수를 끼고 있어 기가막힌 풍경을 선사한다. 역시 5성 호텔은 5성. 택시에서 내리니 캐리어를 받아주고 나는 몸만 움직이면 된다. 거기에 호칭은 늘 ‘Sir’. 뭔가 대우 받고 있다는 느낌이 확 와 닿는다.

석달을 머물 예정이었기에 미리 숙박비, 조식, 세탁 서비스 등에 대해 조율을 마쳤다. 100USD /일, 세탁물은 5개/일, 조식 포함. 당연히 수영장과 사우나, 짐 등은 모두 포함.

어쨌거나 설레는 첫 날부터 호텔방에 박혀있어야 할 이유는 없었으니 함께 길을 떠났던 동료들과 길을 나섰다. 대충 점심 쯤 먹어야할 시간이었기에 미리 하노이 경험이 있던 동료의 안내에 따라 길을 나섰다. 목적지는 ‘하노이 성 요셉 성당‘. 위치는 대략 호안끼엠1현지인들은 ‘환콈’에 가깝게 발음한다. 호수의 남쪽 끝자락의 서쪽에 위치한다.

일단 성당이고 뭐고 무작정 거닐며 여기저기 둘러보고 싶은 마음이야 굴뚝 같았지만 이 곳에 온 목적은 끼니의 해결이었기에 나름 베트남의 명물이라는 ‘콩카페의 코코넛 커피’를 하나씩 손에 쥐고 식당가로 향했다.

이후 식사를 했던 식당은 사진이 없다….
아무튼 첫 번 째 마주한 베트남 식당은 ‘위생이 개판’ 이라는 점. 좌석에 앉아 음식을 주문하고, 더운 날씨에 맥주가 빠질 수 없으니 주문한 맥주. 이 곳에서 맥주를 주문하면 주로 미지근한 녀석이 나오고 얼음이 담긴 컵이 함께 나오는데………. 이 컵이 기가 막힌다. 대체 설거지를 하긴 한 것인지, 언제 닦은 것인지 알 수가 없다. 여기저기 얼룩에 음식물이 묻어있기 일수에, 세 번이나 교체를 해도 똑같은 컵. 결국 마지막 교체 요청을 하니 점원이 컵을 구석으로 가지고 가 휴지로 닦아서 내어 오더라….

이 것이 하노이 도착 첫 날의 기억.
딱히 무리하지 않았던 듯 하다. 어차피 석 달이나 이 곳에 머물러야 하고 주말은 온전히 나만의 여행이 될 터였으니까.