CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·방탄소년당 ·MaClien ·일본산당 ·개발한당 ·자전거당 ·AI당 ·이륜차당 ·안드로메당 ·소시당 ·콘솔한당 ·바다건너당 ·소셜게임한당 ·PC튜닝한당 ·키보드당 ·테니스친당 ·물고기당 ·VR당 ·창업한당 ·ADHD당 ·나혼자산당 ·갖고다닌당 ·육아당 ·노젓는당 ·골프당 ·클다방 ·나스당 ·냐옹이당 ·IoT당 ·어학당 ·레고당 ·방송한당 ·라즈베리파이당 ·달린당 ·여행을떠난당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·가죽당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·가상화폐당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

사용기

서비스/SW 내가 리눅스를 써야만 하는 이유 #2 - Docker 40

15
2019-06-16 17:27:51 122.♡.180.60
All인

두번째 이유

블로그를 Hugo로 개편한 뒤, 그동안 작성했던 노트들을 정리하면서 포스팅하고 있는데, 그 중 하나가 리눅스에 대한 글들이다. 사실 그 글들의 제목이, 약간은 윈도우나 osx 사용자들을 자극하는 것 또한 의도적이다. 업무용으로, 개인적으로, 최근 몇년동안 리눅스를 꽤 사용한 사용했고, 개인적으로 osx를 최근 10년 동안 사용해봤으며, 최초 컴퓨터를 접한 후 윈도우를 15년 동안 사용했다. 지나고 보니, 어떤 os도 완벽하지 못했고, 완벽하지 않으며, 완벽하지 못할 것이라는 생각이 든다.

그 중 왜 리눅스인가? 그것은, 거의 모든 것이 무료로 제공되는 os인 리눅스를 사용하면서, 그것을 제공하고 있는 커뮤니티에 뭔가를 돌려주고 싶다는, 약간의 부채의식 때문이다. 뭔가를 꽤 오랜 시간 좋아했고 도움도 많이 얻었다면, 그 제품을 사용하는 커뮤니터에 뭔가를 돌려주고 싶다. 개발로 참여하는 방법이 제일 좋겠지만, 일개 사용자로서 자신의 경험을 인터넷에 올려서 더 많은 사용자가 사용해 볼 수 있도록 경험을 공유하는 것도 그 중의 하나라고 생각된다. 놀라운 사용자 경험이, 지구 어느 편에서 열심히 공헌하고 있는 누군가의 손끝에서 만들어진다고 생각해보자. 그 누군가에게, 뭔가를 돌려주고 싶다는 생각, 그것이다.

Docker

Docker

두번째로 써보는 이번 글은 Docker에 대한 글이다. 구글링을 해보면, container와 VM의 차이를 알 수 있을 것이다. 일반 사용자 혹은 개발자 관점에서, docker를 어떻게 사용하고 있는지를 적어보려고 한다.

Dockerization

어떤 어플을 docker image로 만드는 것을 의미한다. 최종 사용자 관점으로만 보면, windows용 portable version 어플리케이션을 만드는 것과 많이 유사하다. 어플리케이션 설치나 사용시에, 요구되거나 생성되는 os에 대한 의존성을 최대한 줄임으로써, 설치과정을 단순화하거나, 유지보수를 단순화 할 수 있게 하기 위함이다.

사용할 os를 정하고, 거기에 설치 과정도 기술하고, 어떤 디렉토리를 마운트해서 어떤 용도로 사용할 지, 어떤 설정 파일을 필요로 할지, 어떤 포트를 개방해서 사용할 지 등등, 어플리케이션 설치, 실행과 운영에 필요한 모든 사항을 스크립트화 해서 docker image로 만든다. 즉, docker image를 만드는 과정 속에서, sw가 실행하는 환경에 대한 모든 것을 정의하게 된다. 일개 application이 아니라, 실행 환경 전체를 제공함으로써, 최종 사용자의 실행 환경과 동일한 환경을 가지고 개발도 진행할 수 있게 되어, sw의 안정적 deploy가 가능할 수 있게 되는 큰 잇점이 있다.

한 가지 예를 들어보면, GitLab이 있다. Community Edition의 경우, 직접 서버나 pc에 설치해서 사용할 수 있는데, Omnibus라는 방식으로 설치를 최대한 간소화하기는 했지만, 그럼에도 불구하고, 쉽지가 않다. 그래서인지, 몇 년 전부터, GitLab에서는 공식 docker image를 제공하기 시작했다. 그 docker image를 가지고 설치하면, docker와 docker-compose가 이미 설치되어 있다는 가정하에, 몇 분이면 자신만의 gitlab을 설치하고 운영하기 시작할 수 있다.

이제 다음의 docker-compose.yml을 살펴보자. docker와 docker-compose에 조금 익숙한 사람이라면, 무엇을 바꿔야 하고, 무엇을 내가 만들어둬야 하는 지, 별 다른 설명이 필요없을 정도라고 생각된다. 잘 모르는 경우는, 일단 그대로 실행해보고, 자신이 원하는 대로 동작하는 지 살펴본 후, 조금씩 고쳐가보면 된다. 실행한다고 하더라도, host pc에는 거의 영향이 없기 때문이다. 그저 디렉토리가 생성되어 있거나, docker container가 돌아가고 있거나 하는 것 뿐이므로, 그런 것들을 삭제하고, 똑같은 시도를 다시 하고, 다시 하고, 하고 싶은 만큼 반복해도 된다. 바로 이것이, docker image로 제공되는 어플리케이션의 강력한 장점이다. 원한다면, 서로 다른 설정(겹치는 설정이 없다고 가정)으로, 동시에 여러개를 띄울 수도 있으므로(pc의 성능이 받쳐준다면), 본격적인 설치/운영전에 테스트하는 데에도 최적이다.

# Please note that GitLab password must be >= 8 characters.
version: '2'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:11.11.3-ce.0'
    container_name: 'gitlab-ce'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://mygitlab.local:9080'
        gitlab_rails['gitlab_shell_ssh_port'] = 9022
        gitlab_rails['lfs_enabled'] = true
        registry_external_url 'http://mygitlab.local:9005'
      GITLAB_ROOT_PASSWORD: 'root_git'
      GITLAB_TIMEZONE: 'Pacific/Auckland'
    ports:
      - '9080:9080'
      - '9022:22'
      - '9005:9005'
    volumes:
      - '~/gitlab-ce/config:/etc/gitlab'
      - '~/gitlab-ce/logs:/var/log/gitlab'
      - '~/gitlab-ce/data:/var/opt/gitlab'

만약 dockerized application으로 운영하는 중에, 백업하고 싶다고 가정하자. 위의 docker-compose.yml을 보면 딱 3가지 디렉토리가 지정되어 있다. 백업? 그냥 위의 설정파일과 함께 3개의 디렉토리만 복사해두면 끝이다.

이번에는 잘 운영하다가, 업그레이드를 해야 한다고 가정하자. 운영하고 있는 gitlab을 중단시킬 필요도 없다. docker-compose.yml을 기존에 운영하고 있는 설정과 겹치지 않게(디렉토리나 포트 등) 잘 수정하고, 기존에 운영중인 gitlab의 3개 디렉토리도 copy해서 volumes에 지정한 후, 원하는 새로운 버전으로 바꿔서 테스트해보면 된다.

Dockerized applications

개인적으로는 사용중인 dockerized application으로는 Caddy와 Commento가 있다. 업무용으로는, 고객사 서버에 vpn 접속하기 위한 커스텀 docker image(Cisco old/new, OpenVPN, PPTP, SSTP, F5 등 다수), Docker registry를 위한 GitLab server docker image, 이슈 분석 및 테스트를 쉽게 하기 위한 dockerized된 회사 sw의 docker 이미지, IntelliJ나 Maven 등 빌드 환경이 모두 담겨 있는 개발용 docker image를 만들어서 사용하고 있다.

Caddy

라이센스 문제(쇼핑몰 운영에 사용할 웹서버)를 피하기 위해 찾다가 dockerized된 Caddy 이미지를 찾아서 사용중이다. 오픈소스인 Caddy를, 소스를 가지고 빌드하기 때문에, Caddy 다운로드 페이지에서 제공되는 바이너리들의 라이센스 제약을 피할 수 있다. Docker image를 기반으로 운영하기 때문에, 필요시에는 서로 다른 환경 파일을 가지고, 여러 개의 Caddy 서버를 운영하는 것 또한 가능하다.

Commento

개발자가 제공하는 docker image가 있다. 블로그에 Comment를 운영하기 위해 찾은 녀석이다.

VPN 접속

업무의 40% 정도는 고객사 이슈를 분석하고, 해결하는 업무이다. 수백개 서버를 접속하려다 보니, 제공되는 windows vm에 접속해서, vpn sw를 설치하거나 실행하고, 접속 profile을 import하거나 생성해서 접속하고, putty로 다시 고객사 서버에 접속해야 한다. 그러다가 파일이라도 다운로드 하거나 업로드 하려면, Windows VM에 받은 후 다시 개인 업무 pc로 재전송해야 했다.

그러다가 docker를 알게 되었고, VPN 접속용 docker image를 만들기 시작했다. 많이 사용되는 Cisco VPN부터 시작해서, 리눅스에서 접속 가능한 여러 vpn들을 docker image안에 설치하고 설정한 후, command line에서 vpn open customer1하는 식으로, 고객사 이름만 지정하면 vpn 연결이 docker container안에서 이뤄지게 shell script를 만들어서 docker image와 함께 사용했다. 결국은 근무 중인 팀 내에서는 거의 공식 툴이 되었다.

GitLab server docker image

회사내에서 업무용으로 만들어진 Dockerized application을 제공하기 위해 Docker registry가 필요해서, GitLab CE docker image를 가지고, 개인 업무용 pc에서 충분히 테스트한 후, 제공받은 전용 서버에 바로 이전한 후 운영중이다.

회사 SW 테스트용 docker image

회사 업무를 위해 만든 docker image + shell script이다. 테스트 환경을 수동으로, 업무용 개인 pc에 구성하려면, 능숙한 사람도 몇 일이 걸리고, 경험이 없는 사람은, 몇일이 소요되기도 할 정도로, 복잡한 구성이 문제였다. 개인적으로는 꽤나 익숙했지만, 그럼에도 불구하고 매번 할 때마다 새로운 문제가 나와서, 항상 골머리를 썩고 있다가, docker image로 만들어 버렸다. 시간이 꽤나 소요되었지만, 이제는 대략 30분 이내로, 바로 테스트 가능한 환경을 만들 수 있게 되었다.

개발 환경용 docker image

최근에 시작한 프로젝트에는 IntelliJ를 사용중인데, 개인적으로 하는 업무 관련 dockerized application과 병행하다보니 여러 개의 IntelliJ를 사용해야 하게 되었다. 간단하게 IntelliJ를 설치하고, git, svn, maven과 여러 JDK 버전을 설치해두고, 스크립트로 불러서 사용할 수 있게 만들어서 사용중이다. 전혀 다른 환경의 여러개의 IntelliJ를 사용하거나, 프로젝트별로 따로 IntelliJ를 구성해서 필요시마다 불러서 쓰기 때문에 매우 효율적이다.

Docker 덕분에

VM이라면 불가능했을 많은 것들을 docker를 가지고 효율적으로 해낼 수 있었다. 물론, 이 정도 활용할 수 있기 까지에는 많은 시행착오 또한 있었다. 하지만, 그러한 시행착오가 Dockerfile에 고스란히 차곡차곡 담기게 되었다. 이후 내가 아닌 다른 사람이 사용할 때에는 내가 겪은 시행착오없이, 같은 사용환경을 그대로 가질 수 있게 됨으로써, 효율적인 업무에도 도움이 되었다. 개인적으로도, 회사 업무로도, docker를 native로 즐길 수 있는 리눅스는 정말 좋은 os라고 말할 수 있을 것이다.

출처 : https://madforfamily.com/post/%EB%82%B4%EA%B0%80-%EB%A6%AC%EB%88%85%EC%8A%A4%EB%A5%BC-%EC%8D%A8%EC%95%BC%EB%A7%8C-%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0-2-docker.html
All인 님의 게시글 댓글
SIGNATURE
https://madforfamily.com
서명 더 보기 서명 가리기
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [40]
조미운
IP 39.♡.172.76
06-16 2019-06-16 17:35:42
·
저도 도커 예찬론자이긴한데... 윈도우즈나 맥도 도커 환경 구성은 가능해서ㅎㅎ 윈도우즈는 앞으로 정식판에 WSL2까지 배포되면 리눅스 터미널 시스템과 거의 차이가 없어질꺼 같더라구요.
연유
IP 211.♡.169.202
06-16 2019-06-16 17:40:47
·
아무래도 글의 마지막처럼 네이티브가 아니다 보니 아쉬운 점이 있긴하죠.
WSL2에서 도커 돌리는 건 빨라서 꽤 좋아보이긴 하더라구요.
All인
IP 122.♡.180.60
06-16 2019-06-16 17:41:23
·
아직까지, 윈도우용 docker(윈도우 어플리케이션???), 윈도우의 WSL내에서 docker(WSL네에서 dockerized된 리눅스 어플리케이션???) OSX에서의 docker(docker machine말고)에 대한 경험이 없습니다. 사용해보셨다면, 간단하게라도 알려주시면 감사하겠습니다.
밀리
IP 121.♡.192.232
06-16 2019-06-16 18:00:35 / 수정일: 2019-06-16 18:00:43
·
WSL2이 결국 Hyper-V를 쓰고있어서 그냥 VM웨어 돌리는거라 별차이가 없어보이더라구요
Hyper-V를 통해서 GPU pass through 가 가능해지면 딥러닝 쪽에선 쓸만 하긴 하겟습니다만..
All인
IP 122.♡.180.60
06-16 2019-06-16 18:25:44
·
그렇다면, 아직까지는, 별도 vm(docker machine)으로 하느냐, 윈도우에서 지원되는 Hyper-V로 하느냐 정도의 차이겠네요.
조미운
IP 39.♡.172.76
06-16 2019-06-16 19:18:25
·
저는 개인적으로 업무는 회사 서버에서 하고, 집컴에서 간단한 터미널 작업용 혹은 취미 개발하는 입장인데요. 윈도우즈 WSL2 환경에서 서버를 구동하거나 데이터 프로세싱 배치 작업 돌리거나 할일은 거의 없다고 보고, 엔터테인먼트용 개인컴으로도 훌륭한 리눅스 개발 환경을 그대로 쓸 수 있다는점에서는 WSL2 정도면 아주 만족스러워요. posix 개발 환경이 필요해서 맥 쓰는것 정도는 대체가능해 보입니다.
한가한날
IP 182.♡.192.51
06-16 2019-06-16 18:08:12
·
제가 읽어봐도 잘 이해가 안가서 그러는데요
docker가 어떤 개념인가요?
머찐경호
IP 125.♡.6.37
06-16 2019-06-16 18:13:43
·
docker는 윈도우로 가정하면 윈도우 OS 환경+원하는 프로그램(서비스등등) 이 셋팅된 이미지를 만들고 그 이미지를 구동할수 있도록 해주는 환경이라고 생각하시면 됩니다.
지저분한게 없고 문제가 생기면 그 이미지 베이스로 다시 구동만 하면 되니 항상 클린빌드를 손쉽게 만들고 관리할수 있는 장점이 있죠.
All인
IP 122.♡.180.60
06-16 2019-06-16 18:27:21
·
https://medium.com/@darkrasid/docker%EC%99%80-vm-d95d60e56fdd

한글로 잘 설명한 글입니다.

건설노무자
IP 27.♡.20.157
06-16 2019-06-16 19:03:44
·
저도 docker에 관심은 많은데 개념을 정확히 이해는 못하고 있습니다.관련 글들을 읽어봐도 너무 어려워서 뭐랄까 개발자들 위주의 '그들만의 리그' 느낌입니다일반사용자 관점에서 좀 쉽게 설명해줄 수 있는 분 안 계실까요?예를 들자면 최근에 제가 집에 리눅스 컴을 한대 셋업할 일이 있었습니다고물 Thinkpad 랩톱(x201)에 가벼운 Lubuntu를 깔고 Node-RED, influxDB, Grafana등등을 셋업했습니다. Node-RED는 기존에 Raspberry Pi에 설치해서 좀 써왔기에 대충 알고 있지만 influxDB와 Grafana는 처음이었는데요, 설치가이드에 도커에 대한 내용이 항상 따로 있드라고요.물론 저는 그냥 '비docker방식'으로 설치했고, 현재 별 탈없이 잘 작동하고 있습니다.이 경우 도커를 이용해서 상기 프로그램들을 설치했다면 뭐가 달라지려나요?
JdinmySoul
IP 223.♡.169.129
06-16 2019-06-16 19:19:55 / 수정일: 2019-06-16 19:20:49
·
@건설노무자님 InfluxDB와 Grafana라면 데이터 가져와서 시각화 시키는 대시보드를 만드신 것 같은데요. 현재 랩탑위에 설치한 influxDB + Grafana를 대시보드 A 프로젝트라고 한다면 Docker같은 컨테이너를 통해 대시보드 B,C,D 등 다수의 서로 다른 목적의 대시보드 프로젝트를 만들 수 있겠죠. 하나의 하드웨어에서 하나의 프로젝트를 실행하는 것에서 다수의 프로젝트를 실행할 수 있다고 보시면 되겠네요. 물론 데이터 소스만 달리해서 Grafana에서 다수의 대시보드를 만들 수 있지만 Docker를 통해 만들면 각 프로젝트가 서로 격리되어 독립된 환경에서 운영되기 때문에 대시보드 A의 influxDB에 문제가 생겨도 다른 대시보드 B,C,D 영향을 주지 않게 만들 수 있습니다.
조미운
IP 39.♡.172.76
06-16 2019-06-16 19:35:22 / 수정일: 2019-06-16 19:36:31
·
@건설노무자님‍
만약 도커가 설치되어 있는 환경이었다면, `$ docker run -p 8086:8086 -v $PWD:/var/lib/influxdb influxdb` 라는 도커 키워드를 치는것만으로 influxdb 가 구동됩니다. (포트 8086 으로 연결되고, db위치는 현재 경로로 잡히구요)

그래서 도커를 사용한다면 설치라는 용어도 애매합니다. 사실 그냥 가져다가 쓰는거죠.

* 복잡한 설치 과정 없이, 필요할때 바로 띄워서 사용할 수 있습니다.
* (도커가 설치되어 있다면) 항상 어플리케이션이 동일하게 동작합니다.
* 가상화된 환경에서 실행되기 때문에 호스트 시스템에 영향을 주지 않습니다.
* VM과 다르게 성능 손실이 거의 없습니다.

도커만 사용하는건 약간의 편의성을 가져다 주는것이라고 생각할 수도 있지만, 도커의 핵심은 "프로그램 실행 표준 환경 제공"으로 인한 확장성입니다. 어떤 서버든 순식간에 내가 원하는 어플리케이션을 띄울 수 있고, 한번에 100대 200대의 서버라도 관리할 수 있게 되죠. 지금 IT 업계에서 필수가 되어버린 클라우드 서비스도 도커가 있기 때문에 성립 가능한거구요. 가상화/도커를 바탕으로 발전한 AWS와 같은 클라우드 인프라 환경, MSA 같은 아키텍처로 인해 엄청난 scale-out의 달성이 쉬워졌는데, 그렇게 보면 넷플릭스나 구글 같은 글로벌 서비스 업체가 잘 운용되고 있는것도 결국은 도커가 있었기 때문이라고 해도 과언이 아닐겁니다.
건설노무자
IP 27.♡.20.157
06-16 2019-06-16 21:53:14
·
@JdinmySoul님
쉽게 말해서 한 프로그램을 여러개, 모두 완전히 독립적으로 실행할 수 있다는 거겠죠?여러 고객을 상대하는 비즈니스라거나 연구용 등등에서는 의미가 있겠군요.근데 이게 개인적으로 필요한가는... 글쎄요 좀 더 알아봐야 할 것 같군요
건설노무자
IP 27.♡.20.157
06-16 2019-06-16 21:54:37
·
@조미운님
말씀하신 내용들이 역시 대부분 (다수 고객에게 서비스 제공하는) 비즈니스에서 의미가 있는것 같고저같은 개인에게는 크게 와닿는 부분이 아닌것 같아서요오히려 아래에 시놀로지 쓰시는 분들에게는 아주 좋은 솔루션임에 틀림없습니다. 도커가 없으면 저런 프로그램들을 사용하는게 불가능에 가까우니까요(저도 node-red를 저사양 synology에 깔아보려고 시도하다가 도커를 처음 알게 됐거든요)근데 말씀하신것중 성능손실의 거의 없다는건 약간 의문이네요예컨데 시놀로지 저사양기기들은 기본적으로 도커 실행이 불가능하구요.. 고사양 기기들도 메모리를 추가해야 원할하게 돌아간다고들 하던데요아마도 VM에 비해 성능이 낫다는 의미로 쓰신걸로 이해하겠습니다설치(혹은 실행)이 간단하고 시스템과 별도로 돌아가는건 확실히 개인한테도 장점일 것 같습니다
조미운
IP 39.♡.172.76
06-16 2019-06-16 22:41:01
·
@건설노무자님
네, 개인컴 한대만 운용하는경우에는 효용성이 그렇게 크지 않은게 맞아요. 쓸줄 알면 편한데 굳이 배워서 까지 써야하나? 싶은 생각이 들기도 하죠. 근데 가끔 설치가 굉장히 힘든 프로그램들이 있는데(셋업하는데 반나절 이상 걸리는), 그런 경우 그냥 도커 간단하게 배워서 쓰는게 더 쉬울수도 있어요.
삭제 되었습니다.
All인
IP 202.♡.222.237
06-17 2019-06-17 04:58:20
·
@건설노무자님
자원 손실이 있겠지만, VM보다는 훨씬 성능손실이 적다는 의미로 받아들이시면 될 듯 합니다. 제 개인 서버의 경우, 1 cpu core, 1gm ram으로도 docker container를 2개나 돌리고 있습니다. vm이라면 상상도 못할 사양입니다.
건설노무자
IP 117.♡.16.138
06-17 2019-06-17 08:08:57 / 수정일: 2019-06-17 08:14:54
·
@멤피스님
저처럼 고물컴을 이용하시는군요 반갑습니다
말씀하신 '머신 교체'가 흥미롭네요
제 경우 일단 x201에 저 프로그램들 셋업은 끝난 상황이고 한 2-3 주 돌려봤는데 별 무리 없어서 앞으로 쭉 갈 생각입니다. (보시다시피 IoT/홈오토 관련이라 24시간 작동합니다)
문제는 고물컴 수명이 있어서 쓰다가 죽기전에 교체를 해 주어야 하지 않나 싶은데 (아마도 현재 주력인 x230이 그 자리를 꿰차겠죠) 그때 말씀하신것처럼 도커를 사용하면 그 과정이 조금이나마 간단히 되려나요?
아니면 컴은 멀쩡해도 이런저런 이유로 OS를 업그레이드 해야하는 상황이라면 이때도 도커가 힘을 발휘할까요?

여러분들 말씀 듣고 도커를 한번 써 보고 싶기는 한데 제 상황에서 큰 잇점을 찾기 힘들군요
All인
IP 202.♡.222.237
06-17 2019-06-17 09:21:18
·
@건설노무자님
업그레이드, 서버 이전 혹은 백업 시가, 가장 docker가 필요할 때입니다. "사용 환경" 자체를 사용하기 때문에, 그저 교체/copy 하기만 하면 끝입니다. 그렇게 필요한 시점이 온 후에 docker를 쓸 껄 하고 느끼게 되면, 조금은 늦은 경우입니다. 처음부터 docker를 써야, 나중에 편해집니다.
건설노무자
IP 117.♡.16.134
06-17 2019-06-17 16:14:49
·
@All인님
당장 오늘저녁부터 공부해서 셋팅 들어가야겠네요
x201말고도 t61에 옥토프린트, t510에 motionEye가 각각 돌아가는 중이거든요 (고물대잔치 ㅎㅎ)
설명 자세히 해주신 여러분들 감사합니다!
prop
IP 182.♡.44.230
06-16 2019-06-16 19:51:47
·
리눅스 정말 아무것도 모르는데 도커에 필요한 서비스가 있으면 리눅스 대충 올려서 도커 설명대로 하면 딱 돌아가더군요...도커는 정말 최고인듯 싶어요.
크라비클
IP 118.♡.106.72
06-16 2019-06-16 19:57:29
·
나스 위에 도커 여러개 올려서 사용하고 있습니다. 정말 최고죠.
심정열
IP 175.♡.15.46
06-16 2019-06-16 20:50:58
·
docker 를 써보고 싶게 만드는 글이네요. 좋은 글 너무 감사드립니다. 저도 여러가지 재미로 리눅스 랩탑을 사용했었습니다. 본문과는 별개로 개인 적인 궁금한 내용인데요 답변이 가능하실지요.

일반 프로그램에 경우 대안이 가능한 또는 더욱 편히 사용할 수 있는 여러 오픈소스가 있는 반면 오피스와 카톡은 완벽한 대안이 없더군요.
업무상 두가지를 많이 사용해야 하는 관계로 현재는 맥을 쓰고 있습니다. wine, 앱가상화 최대한 윈도우를 안쓰는 방법으로 여러가지 시도해 보았는데 만족스럽지 못하네요. 많이 검색도 해보고 시도도 해보아 당연히 대안이 없을 것 같지만 혹시나 다른 방법으로 두가지를 사용하고 계실지 궁금하네요..
All인
IP 202.♡.222.237
06-17 2019-06-17 04:45:17
·
오피스라면 libre office가 깔려 있지만, 업무는 거의 google doc으로 하고 있습니다. 카톡은, 스마트폰 연결해놓고, scrcpy로 하고 있습니다. 별로 도움이 안되는 대답인듯 합니다. -.-a
심정열
IP 175.♡.15.46
06-17 2019-06-17 07:37:21
·
All인님// 안드로이드 원격 프로그램이군요. 안드로이드로 바꾸고 다시 사용해봐야겠네요 답변 감사드립니다. :)
enigma
IP 118.♡.104.138
06-16 2019-06-16 21:43:01 / 수정일: 2019-06-16 21:59:58
·
좋은 내용 감사합니다.. 예전에 도커를 윈도우에서 좀 설치했다가 이런 생각이 들더라구요..지금 제가 설치한 이 윈도우 환경을 도커 이미지로 올릴수 있을까? 하는 생각이였는데 , 가능할런지 모르겠네요. 물론 저작권문제가 있어서 그렇겠지만 리눅스처럼 저 자신만의 PC 환경에서만 최적화된 윈도우와 유틸 및 환경을 도커이미지로 가능한지 궁금해지네요..읽어주셔서 감사합니다..
조미운
IP 39.♡.172.76
06-16 2019-06-16 22:42:26
·
도커는 리눅스 커널을 베이스로 하기 때문에, 윈도우 환경까지 도커 이미지로 만들 순 없습니다. 이 경우에는 VMware나 Virtualbox등의 다른 솔루션을 찾아보셔야 할것 같아요.
kubectl
IP 115.♡.39.147
06-16 2019-06-16 23:34:19
·
enigma님// 이 경우에는 vm으로 이미지를 떠야지용
카브릴로
IP 183.♡.174.103
06-16 2019-06-16 23:46:25
·
@조미운님 요즘은 윈도우 플랫폼도 어느 정도 지원을 하는 것 같은데요.. MS 자체에서 제공하는 컨테이너들도 있고, 3rd party repository에도 있는 것 같습니다. 다만 Linux쪽보다는 한참 부족하긴 하죠.
조미운
IP 39.♡.172.76
06-16 2019-06-16 23:48:16
·
@카브릴로님
도커가 윈도우 베이스 이미지를 지원한다는건 금시초문이네요. 혹시 관련 링크 주신다면 저도 감사히 읽어보겠습니다.
카브릴로
IP 183.♡.174.103
06-16 2019-06-16 23:56:40 / 수정일: 2019-06-17 00:11:27
·
@조미운님 https://stefanscherer.github.io/docker-on-windows-server-2019/
https://psychoria.tistory.com/539?category=667804
http://www.itworld.co.kr/news/103275 등이요..
https://www.sysnet.pe.kr/2/0/11013 ← 요게 제가 예전에 봤던 아티클이네요..
조미운
IP 39.♡.172.76
06-17 2019-06-17 00:12:15
·
@카브릴로님
리눅스 시스템에서 윈도우즈 이미지를 띄울 수 있다는 줄 알고 깜짝 놀랐네요. 찾아보니 윈도우즈 서버 2016 이후부터는 윈도우즈 도커 시스템에서 윈도우즈 이미지를 띄울 수 있게 지원했었군요! 많이 배우고 갑니다 :)
https://hub.docker.com/_/microsoft-windows-servercore?tab=description
카브릴로
IP 183.♡.174.103
06-17 2019-06-17 00:15:08
·
@조미운님 네 그부분에 대해서는 저도 언급을 빠뜨렸네요 ㅎㅎ 원 댓글 다신 분이 플랫폼에 대해선 별 말씀이 없으셔서요..
kubectl
IP 205.♡.233.176
06-19 2019-06-19 17:21:11
·
@조미운님 네 윈도우즈 도커 위에서는 윈도우즈 컨테이너 그리고 리눅스 컨테이너 다 돌릴 수 있습니다. kubenetes도 윈도우즈 워커노드를(마스터노드x) 1.14부터 지원을 하기 시작해서 윈도우서버 베이스 이미지를 윈도우즈 워커노드에서 돌리는 하이브리드 클러스터 구성이 가능해졌어요.
kubectl
IP 115.♡.39.147
06-16 2019-06-16 23:52:11
·
도커가 컨테이너라이제이션을 쉽게 도와줘서 붐을 일으키긴 했지만 도커가 나온지 몇년이 됐는지를 생각해보면 (2013년 3월에야 오픈소스로 나왔죠) 도커가 아마존이나 구글의 msa의 근간이 됐다는 표현에는 약간 어패가 있습니다. 이미 도커나 나오기전부터 컨테이너라는 개념이 있었든요. 말씀을 해주신 회사들은 이미 도커가 대중화 되기전부터 msa로 넘어간 회사들입니다.

도커가 컨테이너라이제이션의 가속화를 했다고는 하지만 더 중요한건 컨테이너 오케스트레이션이었습니다. 결국 도커는 싱글 머신 기준으로나 쓸만했지 프로덕션 환경에서 몇백개의 서버를 운영하는 입장에서는 그닥 쓸만하지 않았거든요 도커스웜 클러스터의 오버레이 네트워크는 성능저하도 매우 큽니다. 이를 극복하기 위해서 많은 노력들이 있었겠죠.

구글에서 오픈소스화한 kubernetes의 전신이라고 할 수 있는 구글 내부의 컨테이너 오케스트레이션 툴로도 프록덕션 래벨의 클러스터 운영이 가능했었습니다.이게 오픈소스화 되면서 이젠 프로덕션 컨테이너 오케스트레이션의 표준 처럼 되었구요.

아마존 역시 도커가 대중화 되기전부터 msa를 하고 잇었으며 aws는 특히 주로 vm기반의 서비스들을 하는데요 이 vm들도 결국 하이퍼바이저 위에서 바로 도는 것들이라 성능이 네이티브랑 거의 비슷합니다. 요즘엔 마이크로 vm의 개념으로 firecracker같은게 나왔는데 메모리 5mb 정도 밖에 안먹는 애들도 있네요.

그냥 여담으로 댓글을 달아보았습니다. 글 잘봤어요~



조미운
IP 39.♡.172.76
06-17 2019-06-17 00:04:52
·
더 정확한 배경 설명이네요. 제가 도커라고만 언급한건 도커가 현재 사실상의 컨테이너 표준이 되었고, 오케스트레이션 도구의 발달도 도커로 표현되는 가상화/클라우드화의 연장선이라고 생각해서 그랬습니다ㅎㅎ 좋은 리플 감사합니다 :)
All인
IP 202.♡.222.237
06-17 2019-06-17 04:55:20
·
사용기 쓰고, 댓글에서 더 배우네요. 좋은 댓글 감사합니다.
Masticore
IP 125.♡.48.224
06-17 2019-06-17 01:12:10 / 수정일: 2019-06-17 01:12:43
·
전혀 전공자가 아닌 관점에서 필요성을 느꼈을때
파이썬으로 이것 저것 모듈을 설치해서 놋북으로 돌렸을때 잘 돌아가서
이제 성능 빵빵한 데탑에서 돌려야지~ 하는데
안돌아갈때 그 빡침이란...
나중에 알고보니 무슨 시간 관련 모듈 버전이 달라서 ㅂㄷㅂㄷㅂㄷ
도커를 쓰면 그 모듈까지 전부 패키징 해서 하나로 만들어 준다고 하더라고요...
하지만 아직도 뭘 어케 해야 할지 몰라서 못쓰고 있습니다 ㅋㅋㅋ
All인
IP 202.♡.222.237
06-17 2019-06-17 04:02:48
·
제가 쓰는 base image의 Dockerfile 올려봅니다. Linux상에서 하는 일들을 그냥 Dockerfile에 맞게 한 것 뿐입니다. root 유저 설정, ssh 서버 설정, locale 설정, dumb-init 설치 후 ssh 서버를 기본 실행하는 일을 하게 했습니다. 천천히 보시고 수정해가면서 해보시면 금새 익숙해지실겁니다. 아참, dumb-init은 https://github.com/Yelp/dumb-init/releases에서 deb 파일을 다운받아서 사용하시면 됩니다.

#-----------------------------------------------------------------------------# Base image#-----------------------------------------------------------------------------FROM ubuntu:16.04

#-----------------------------------------------------------------------------# Declare non-interactive mode in building applications#-----------------------------------------------------------------------------ARG DEBIAN_FRONTEND=noninteractiveARG PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
#-----------------------------------------------------------------------------# Setup root account#-----------------------------------------------------------------------------USER rootWORKDIR /root# - Set passwordRUN echo "root:root" | chpasswd# - Disable bash history-substitutionRUN echo "set +H" >> /root/.bashrc# - Setup ssh configurations for root userRUN mkdir -p /root/.sshRUN printf "Host *\nStrictHostKeyChecking no\nUserKnownHostsFile=/dev/null\nServerAliveInterval=600\nServerAliveCountMax=5" >> /root/.ssh/config# - Directory for installation filesRUN mkdir ./applications#----------------------------------------------------------------------------# Update apt repository#-----------------------------------------------------------------------------RUN apt-get update#----------------------------------------------------------------------------# System environment configurations#-----------------------------------------------------------------------------# - Install localeRUN apt-get install -y locales# - Set locale and languageRUN locale-gen en_NZ.UTF-8ENV LANG=en_NZ.UTF-8RUN echo "LANG=en_NZ.UTF-8" >> /etc/default/locale# - Set user and shellENV USER rootENV SHELL /bin/bash#-----------------------------------------------------------------------------# Install applications#-----------------------------------------------------------------------------# - openssh serverRUN apt-get install -y --fix-missing \openssh-server# SSH server configurationRUN mkdir /var/run/sshd && \sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd && \echo "export VISIBLE=now" >> /etc/profileENV NOTVISIBLE "in users profile"# Install dumb-init to be used as a root process for Docker containerCOPY applications/dumb-init_1.2.1_amd64.deb /root/applications/RUN dpkg -i /root/applications/dumb-init_1.2.1_amd64.deb# Remove apt cacheRUN apt-get clean autoclean && apt-get autoremove -y && rm -rf /var/lib/{apt,dpkg,cache,log}/#-----------------------------------------------------------------------------# Setup entry point to dumb-init which will be PID 1#-----------------------------------------------------------------------------ENTRYPOINT ["/usr/bin/dumb-init", "--"]#-----------------------------------------------------------------------------# Starts up sshd server#-----------------------------------------------------------------------------CMD ["/usr/sbin/sshd", "-D"]
Masticore
IP 125.♡.48.224
06-17 2019-06-17 12:12:02
·
@All인님‍
와..상세한 설명 감사합니다!!!
나중에 꼭 한번 해보겠습니다 +_+
렉코
IP 106.♡.0.124
06-18 2019-06-18 16:16:07
·
파이썬도 별도의 파일로 의존성 관리가 가능하더라고요. 자바의 메이븐이나 그레이들 처럼요.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.