docker VM
안녕하세요
마푸입니다.
오늘은 도커의 설치에 대해서 알아보려합니다.
포스트 내용은 길지만 사실 엄청 짧은 내용입니다. (설치과정을 모두 올려드려서 그렇습니다. ^^)
사실 왠지 한줄로 끝내면 너무 성의 없어 보일까봐 그랫어요 ㅎㅎ;;
참고로 전 Ceontos에서 설치를 진행하여서 yum이라는 유틸리티로 설치 했습니다.
1. docker 내려받아 설치하기
앞서 말씀디린것처럼 centos에서는 yum이라는 유틸리티를 이용해서 프로그램을 설치 할 수 있습니다. 네 매우 쉽습니다. 슥~ 검색해서 install만 붙여주면 된깐요 ^^
자세한 명령어는 아래와 같습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | [root@EYE-Redis ~]# yum install docker-io.x86_64 Loaded plugins: fastestmirror, security Setting up Install Process Loading mirror speeds from cached hostfile * base: mirror.navercorp.com * epel: ftp.yz.yamagata-u.ac.jp * extras: mirror.navercorp.com * updates: mirror.navercorp.com Resolving Dependencies --> Running transaction check ---> Package docker-io.x86_64 0:1.7.1-2.el6 will be installed --> Processing Dependency: lxc for package: docker-io-1.7.1-2.el6.x86_64 --> Running transaction check ---> Package lxc.x86_64 0:1.0.9-1.el6 will be installed --> Processing Dependency: lua-lxc(x86-64) = 1.0.9-1.el6 for package: lxc-1.0.9-1.el6.x86_64 --> Processing Dependency: lua-alt-getopt for package: lxc-1.0.9-1.el6.x86_64 --> Processing Dependency: liblxc.so.1()(64bit) for package: lxc-1.0.9-1.el6.x86_64 --> Running transaction check ---> Package lua-alt-getopt.noarch 0:0.7.0-1.el6 will be installed ---> Package lua-lxc.x86_64 0:1.0.9-1.el6 will be installed --> Processing Dependency: lua-filesystem for package: lua-lxc-1.0.9-1.el6.x86_64 ---> Package lxc-libs.x86_64 0:1.0.9-1.el6 will be installed --> Running transaction check ---> Package lua-filesystem.x86_64 0:1.4.2-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================================================================================= Installing: docker-io x86_64 1.7.1-2.el6 epel 4.6 M Installing for dependencies: lua-alt-getopt noarch 0.7.0-1.el6 epel 6.9 k lua-filesystem x86_64 1.4.2-1.el6 epel 24 k lua-lxc x86_64 1.0.9-1.el6 epel 16 k lxc x86_64 1.0.9-1.el6 epel 122 k lxc-libs x86_64 1.0.9-1.el6 epel 257 k Transaction Summary ============================================================================================================================================================================================================================================= Install 6 Package(s) Total size: 5.0 M Installed size: 20 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : lxc-libs-1.0.9-1.el6.x86_64 1/6 Installing : lua-filesystem-1.4.2-1.el6.x86_64 2/6 Installing : lua-lxc-1.0.9-1.el6.x86_64 3/6 Installing : lua-alt-getopt-0.7.0-1.el6.noarch 4/6 Installing : lxc-1.0.9-1.el6.x86_64 5/6 Installing : docker-io-1.7.1-2.el6.x86_64 6/6 Verifying : lua-lxc-1.0.9-1.el6.x86_64 1/6 Verifying : lxc-libs-1.0.9-1.el6.x86_64 2/6 Verifying : lxc-1.0.9-1.el6.x86_64 3/6 Verifying : docker-io-1.7.1-2.el6.x86_64 4/6 Verifying : lua-alt-getopt-0.7.0-1.el6.noarch 5/6 Verifying : lua-filesystem-1.4.2-1.el6.x86_64 6/6 Installed: docker-io.x86_64 0:1.7.1-2.el6 Dependency Installed: lua-alt-getopt.noarch 0:0.7.0-1.el6 lua-filesystem.x86_64 0:1.4.2-1.el6 lua-lxc.x86_64 0:1.0.9-1.el6 lxc.x86_64 0:1.0.9-1.el6 lxc-libs.x86_64 0:1.0.9-1.el6 Complete! | cs |
먼가 상당히 많은 양의 텍스트가 보이지만 사실 설치 명령어는 "yum install docker-io.x86_64" 입니다. 매우 간단하죠? ^^;
설치에 필요한 유틸리티를 확인하고 추가적으로 y를 입력한다면 별일이 없다면 인스톨이 됩니다.
만약 docker가 먼저 설치 되어있다면 아래의 명령어를 이용해서 지우고 다시 설치 해주세요
1 | yum remove package-name | cs |
그럼 이제 설치된 docker를 서비스로 실행 해 보도록 하겠습니다.
1 2 3 4 | [root@EYE-Redis ~]# service docker start Starting cgconfig service: [ OK ] Starting docker: [ OK ] |
정상적으로 올라온게 확인 되었다면 이제 각종 프로그램을 다운받고 독립적으로 실행 할 수 있습니다.
자 잠시 지난 포스트에서 알려드린 내용을 다시 언급해 보도록 하겠습니다. 먼저, 우리는 각종 프로그램을 여러개 실행시키기위한 설치파일인 이미지를 다운받아 보겠습니다. (* 여기서는 편의상 설치파일이라 말씀드리지만 이미지는 사실 배포버전의 패키지입니다. )
먼저 mysql의 이미지를 docker hub에서 검색해 봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | [root@EYE-Redis ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 4313 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 295 [OK] centurylink/mysql Image containing mysql. Optimized to be li... 51 [OK] zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 39 [OK] zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 21 [OK] imega/mysql Size: 149 MB, alpine:3.5, Mysql Server: 10... 11 [OK] appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 8 [OK] zabbix/zabbix-proxy-mysql Zabbix proxy with MySQL database support 7 [OK] marvambass/mysql MySQL Server based on Ubuntu 14.04 7 [OK] bitnami/mysql Bitnami MySQL Docker Image 5 [OK] dnhsoft/mysql-utf8 Inherits the official MySQL image configur... 5 [OK] debezium/example-mysql Example MySQL database server with a simpl... 4 [OK] alterway/mysql Docker Mysql 3 [OK] frodenas/mysql A Docker Image for MySQL 3 [OK] drupaldocker/mysql MySQL for Drupal 2 [OK] yfix/mysql Yfix docker built mysql 2 [OK] lysender/mysql MySQL base image using Ubuntu 16.04 Xenial 1 [OK] coscale/mysql CoScale custom configuration of the offici... 1 [OK] tozd/mysql MySQL (MariaDB fork) Docker image. 1 [OK] 1maa/mysql MySQL database 0 [OK] datajoint/mysql MySQL image pre-configured to work smoothl... 0 [OK] nanobox/mysql MySQL service for nanobox.io 0 [OK] cloudposse/mysql Improved `mysql` service with support for ... 0 [OK] projectomakase/mysql Docker image for MySQL 0 [OK] captomd/mysql CaptoMD mysql configuration 0 [OK] | cs |
주르륵 뜹니다. 이 모든 이미지가 모두 mysql을 독립적으로 실행 시킬 수 있는 이미지(패키지) 입니다.
우리는 mysql/mysql-server 를 다운받아서 실행 해 보도록 할께요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@EYE-Redis ~]# docker pull mysql/mysql-server latest: Pulling from mysql/mysql-server 3690474eb5b4: Pull complete 939edc12a269: Pull complete b2c7842ef512: Pull complete 07c67e5f5698: Pull complete 79d74b424a1f: Pull complete e14d41b737bd: Pull complete b700b551096e: Pull complete 9f2efacbde7a: Pull complete 992f982b03a0: Pull complete 1c3826eee7df: Pull complete 8b2b1825dce2: Pull complete Digest: sha256:73c9492733c6c88fe47d8b538a18367cbd6152e26c48c001efe64abca11ad6ef Status: Downloaded newer image for mysql/mysql-server:latest | cs |
위에서 보시면 pull image-name을 이용해서 해당 이미지를 다운받는것을 볼 수 있습니다.
앞에 난수처럼 보이는 시리얼이 전체이미지의 개별 이미지의 목록입니다. 즉 저 리스트의 이미지를 모아서 mysql/mysql-server를 구성하는 것이지요
자 그럼 재대로 이미지가 설치되었는지는 아래의 리스트 명령어로 확인 할 수 있습니다.
1 2 3 4 | [root@EYE-Redis mysql-data]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mysql/mysql-server latest 8b2b1825dce2 19 hours ago 214.9 MB | cs |
쉽지요 그냥 images라고 치면 host에 설치한 이미지 리스트를 확인할 수 있습니다.
우리는 이 이미지를 통해서 다수의 mysql 서버를 서비스 할 수 있게 되는 것이지요 ^^
그럼 이 image를 통해서 container로 실행(등록)하는 방법을 알아 보겠습니다.
1 2 3 4 5 6 7 8 | [root@EYE-Redis mysql-data]# docker run --name test-mysql-01 \ > -e MYSQL_ROOT_PASSWORD=your-password \ > -d \ > -v /home/mysql-data:/var/lib/mysql \ > -p 4958:3306 \ > mysql/mysql-server d49a868310894ece35ca82aea704516fed02138f72e03b19996737be5c7735a8 | cs |
이러한 환경변수는 docker hub에 각 이미지 마다 메뉴얼이 있으므로 찾아보는면 될듯합니다. github에서의 md파일처럼 안내 문서가 있을듯한데 아직은 모르겠네요 ^^;;;
그럼 옵션을 하나씩 살펴 보도록 하겠습니다.
--name : 컨테이너 이름을 지정합니다.
-e : Mysql root의 비밀번호를 설정합니다.
-d : 컨테이너를 데몬의 형태로 서비스 합니다. (host에 접속한 세션이 끊어져도 서비스는 계속 된다는 뜻 같습니다. ^^;;)
-v : DATABASE Dir을 지정할 수 있습니다.
-p : 포트 포워딩을 설정합니다.
자 그럼 이제 mysql이 서비스 되고있습니다.
당연히 제대로 구동 중인지 확인이 필요하겠지요
접속하기 전에 등록된 container가 정상적으로 구동 중인지 확인 해 봅시다.
1 2 3 4 | [root@EYE-Redis mysql-data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d49a86831089 mysql/mysql-server "/entrypoint.sh mysq 42 seconds ago Up 41 seconds 33060/tcp, 0.0.0.0:4958->3306/tcp test-mysql-01 | cs |
자 그럼 이제 접속을 해볼까요?
이전 포스트에서도 말씀을 드렸지만 컨테이너는 독립적인 인스턴스(OS가 없지만 독자적으로 구동된다는 뜻입니다.)입니다.
그래서 Host의 일반적인 mysql client 유틸리티로 ip를 지정해서 접속할 수 있고 컨테이너를 직접 지정해서 접속 할 수 있습니다.
아래와 같이 말이죠
접속은 퇴근하고 집에서 올려야겠네요 ㅎㅎ;;
'Programming' 카테고리의 다른 글
python 출력에 색상을 넣어보자 (ANSI escape code) (0) | 2023.07.24 |
---|---|
[docker] 도커에 대해서 알아보자 (0) | 2017.05.12 |
[CRONTAB] 리눅스 작업 스케쥴러에 작업 등록하기 (0) | 2017.02.23 |
[Linux] 쉘모드 전환에 대한 이해 (0) | 2017.02.14 |
[MSSQL] Cursor 사용법 (0) | 2017.02.14 |