-
주변 지인들에게 쿠버네티스를 너무 자주 듣는다.. 끙.. 데이터 엔지니어 로드맵에도 기초 요구사항으로 되어있다..ㅠ
공부를 하는게 맞는 듯해서 책을 구매할까하다가 공식 🦆이 너무 잘되어있어서 책을 구매할 필요는 없을 것 같았다.
대신, 그 전에 도커를 먼저 공부해야할 것 같았다. 책들을 봐도 커리큘럼 자체가 도커 선행학습이 필요하다.
근데 검색하다가 아래 글을 보긴했는데,, 결론은 도커자체와 호환이 안된다 이런게 아니라 DOCKERSHIME이 아닌 자체 CRI를 진행한다는것.
쿠버네티스는 v1.20 이후 컨테이너 런타임으로서 도커를 사용 중단(deprecating)합니다.
쿠버네티스의 엔드유저에게는 많은 변화가 없을 것입니다. 이 내용은 도커의 끝을 의미하지 않으며, 도커를 더 이상 개발 도구로 사용할 수 없다거나, 사용하면 안 된다는 의미도 아닙니다. 도커는 여전히 컨테이너를 빌드하는 데 유용한 도구이며, docker build 실행 결과로 만들어진 이미지도 여전히 쿠버네티스 클러스터에서 동작합니다.
쿠버네티스는 CRI(container runtime interface)라는 것을 이용하여 컨테이너 런타임과 통신하는데 도커는 해당 인터페이스를 지원하지 않아 Dockershim이라는 추가 레이어를 통해 연동하였습니다. 이번 발표는 Dockershim이 deprecated 된다는 내용입니다.
추가적인 레이어를 제거하고 직접적으로 CRI를 사용하면 관리가 더 깔끔하겠죠?
우선 도커를 이전에 몇차례 사용했지만(내 블로그 첫번째 글이여따.. ㅎ)
뭔가 깔끔하게 공부한 느낌이 없어서 다시 간단하게 훑었다. 아래 글을 보고 공부한 내용으로, 내가 필요한 부분만 쏙쏙 빼놨다.
도커는 우분투 서버 설치 진행할 때, 도커 설치 체크가 있어서 체크 후 진행하였다.
1. root 권한 주기:: 도커는 기본적으로 root권한이 필요하다고 한다.
권한 주기 전
wjw@j-server:~$ docker version Client: Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: cd8016b6bc Built: Fri Feb 5 15:56:39 2021 OS/Arch: linux/amd64 Experimental: false
아래 명령어를 이용해 권한을 주고난 후
sudo usermod -aG docker $USER
wjw@j-server:~$ docker version Client: Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: cd8016b6bc Built: Fri Feb 5 15:56:39 2021 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: bd33bbf Built: Fri Feb 5 15:58:24 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: docker-init: Version: 0.18.0 GitCommit: fec3683
2. 간단하게 컨테이너 실행해보기
도커 실행 시 간단한 옵션을 주어 진행할 수 있다.
1) 우분투
docker run (컨테이너 이름)
2) MySql
wjw@w-sever:~$ docker run -d -p 3306:3306 \ > -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ > --name mysql \ > mysql:5.7 ea61553f4c4744dd027715600aff3a263931f7d7e8707c0ac06c3b5457116e11 wjw@w-sever:~$ docker exec -it mysql bash root@ea61553f4c47:/# mysql -h127.0.0.1 -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.33 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> quit Bye root@ea61553f4c47:/#
3)wordpress
mysql> create database wp CHARACTER SET utf8; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on wp.* to wp@'%' identified by 'wp'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye wjw@w-sever:~$ docker run -d -p 8080:80 \ > --link mysql:mysql \ <--이 부분이 중요 !!, DB랑 연결하는 부분이다. > -e WORDPRESS_DB_HOST=mysql \ > -e WORDPRESS_DB_NAME=wp \ > -e WORDPRESS_DB_USER=wp \ > -e WORDPRESS_DB_PASSWORD=wp \ > wordpress
docker를 띄운 서버주소:8080 으로 접속하면 아래처럼 뜬다.
3) tensorflow
wjw@w-sever:~$ docker run -d -p 8888:8888 -p 6006:6006 teamlab/pydata-tensorflow:0.1
8888로 들어가면 주피터가 6006은 텐서보드가 나온다.
이걸로 나중에 모델링 해봐야겠따~~!@!~@ (딥러닝 책 구매해서 오는 중.. 🚛)
3. 볼륨 마운틴:이미지 날리면 다 날라간다.
로컬에 datadir이라는 폴더를 만든 뒤 컨테이너의 볼륨을 마운틴해 컨테이너 제거 시 에도 데이터를 유지할 수 있다.
docker run -d -p 3307:3307 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name weesql \ -v datadir:/var/lib/mysql \ # <- volume mount mysql:5.7
wjw@w-sever:~$ docker volume ls
DRIVER VOLUME NAME
local 1b42c5d1f088f58959380bce7c96f2b6ca32d0df83b6a998c57b0bad12a775f5
local datadir4.docker compose
docker-compose를 이용하여 Yaml이라는 방식으로 미리 도커 생성 커멘드를 저장하고 사용할 수있다.
아래와 같이 다운로드 한 뒤, 강의 사이트에 있는 예제를 복사해 yaml 파일로 저장한다.
*YAML: YAML (a recursive acronym for "YAML Ain't Markup Language") is a human-readable data-serialization language.
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # test docker-compose version
이후, docker-compose up 명령어를 입력하면 log가 뜨면서 컨테이너가 실행된다.
db_1 | 2021-04-02T08:24:07.039139Z 0 [Note] Event Scheduler: Loaded 0 events db_1 | 2021-04-02T08:24:07.039743Z 0 [Note] mysqld: ready for connections. db_1 | Version: '5.7.33' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
REFERENCES
'2021년 > 개발공부' 카테고리의 다른 글
쿠버네티스 기초학습[클러스터 생성, 앱 배포] (0) 2021.04.06 minikube 설치 및 간단하게 사용하기 (0) 2021.04.06 동적 타입 멈춰~! 파이썬의 타입힌팅 (4) 2021.03.23 python2, python3에서 tuple의 덧셈 차이 (0) 2021.03.23 AWS 인스턴스 생성하고 접속하기 (0) 2021.03.19