반응형

Docker 로 mysql 를 올려봤다. 


실행시키는 방법은 아주 간단하다.


docker run --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<password> -d mysql


이렇게 하면 mysql container 가 구동된다.


docker container ps 


CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES

e99420ff2ee4        mysql               "docker-entrypoint.s…"   26 minutes ago      Up 6 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-db


여기까지는 쉬웠다. 

그런데 내 로컬 컴퓨터에서 저 DB 에 접속을 하려고 하니.. .접속이 안됐다. 참고로 저 위치는 AWS 에 있는 EC2 에 ubuntu를 올려서 설치한 것이다.


먼저 AWS 보안 그룹을 추가했다.


그래도 안된다.


그 다음에 mysql 설정을 찾아봤다.


docker exec -it mysql-db bash


이렇게 하면 container 안으로 들어올 수 있다.  container에 들어와서 mysql -u root -p 를 이용해서 mysql 로 접속한다.


mysql> select host from mysql.user where user='root';

+-----------+

| host      |

+-----------+

| %         |

| localhost |

+-----------+

2 rows in set (0.00 sec)


저렇게 쿼리를 했을 때 %가 포함되어있으면 root 계정에 한해서 모든 접속을 허용한다고 한다.... 그런데 안되네?????


계속 해서 에러가 난다.


Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found


이 에러는 mysql 의 password 방식이 변경되서 나는 에러라고 한다. 

그래서 다시 검색!!!! 그러던 중 아래와 같은 글을 발견했다.


https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded


먼저 /etc/mysql/my.cnf 파일에 아래와 같은 설정을 추가한다. 


[mysqld]

default_authentication_plugin=mysql_native_password


그래도 안된다...


ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';


나같은 경우는


ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';


이렇게 실행을 했더니 드디어 접속이 됐다. 

하아... 정말 길고 긴 여정이었다. 

docker로 mysql 은 설치 했는데 접속을 할줄 몰라서 고생하고, 어떻게 접속을 해야 하는지 몰라서 찾아보고...

접속을 했는데 편집기가 설치가 안되어 있어서 vim 도 다시 설치하고...

정말 알아야 할게 너무 많구나.

그런데.. 내가 원래 하려던 것은 이게 아니었는데 DB 를 준비하려고 하다 보니 이런 삽질을 했다...ㅠㅠ


728x90
반응형
반응형

Docker 를 사용하려면 기본적으로 루트 권한이 필요하다. 그래서 그냥 쓰려면 매번 sudo 를 붙여 쓰던지 아니면 root 권한으로 변경해서 사용해야 한다.

root 로 변경해서 사용하기는 좀 그렇고 현재 사용중인 사용자를 docker 그룹에 등록을 해주면 된다.



sudo usermod -aG docker [현재 사용자]


usermod : 사용자 속성을 변경하는 명령어

-G (--groups) : 새로운 그룹을 말한다.

-a(--append) : 다른 그룹에서 삭제 없이 G 옵션에 따른  그룹에 사용자를 추가한다.


그리고 나서 우분투를 재기동 해주면 sudo 없이 사용할 수 있다.


sudo systemctl reboot


또는


sudo -su - [현재사용자]


로 해주면 재기동 없이 사용할수 있다. 



혹시라도 다음과 같은 에러가 발생한다면..


Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied


/var/run/docker.sock 파일의 권한을 변경한다.

sudo chmod 666 /var/run/docker.sock


728x90
반응형
반응형

Docker 도큐먼트를 따라하다 보니 갑자기 에러가 난다. 분명 난 똑같이 붙여넣기 하고 그대로 한것 같은데..


https://docs.docker.com/get-started/part2/#build-the-app


unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/ubuntu/study_docker/Dockerfile: no such file or directory


대체 왜나는 거지??? 분명 해석을 해보면 Dockerfile 이 저 위치에 없다는 이야기 인데...

있는데 분명히.... 뭐~~~가 잘못된거지???


헉!!! DockerFile........ 파일 이름이 Dockerfile 이 아닌 DockerFile 로 해놨다..

그래서 변경했더니 잘만 된다...


docker build

Estimated reading time: 21 minutes

Description

Build an image from a Dockerfile

(출처 : https://docs.docker.com/engine/reference/commandline/build/)


딱 저기에도 Dockerfile을 build한다고 써있다.



728x90
반응형
반응형

최근 백기선님이 하시는 방송을 보면서 Docker를 따라 해보려고 하니 내가 가지고 있는 Mac 에는 한계가 있었다. 설치를 하려고 하니 설치가 안 된다고 한다..

2010년 mid 맥북 프로인데.. 그래서 어쩔수 없이 Docker는 AWS에 올려놓은 Ubuntu 에 설치하고 따라하기 시작했다.

그런데 다시 문제가 발생했다. 내가 로컬에서 작성한 파일을 EC2 서버에 올려야 하는데 어떻게 해야 하는거지????

그래서 찾기 시작했다. 


일단 작동중인 Ubuntu 서버에 FTP 설정이 필요했다.


1. Ubuntu 서버에  vsftpd 를 설치한다. 


먼저 apt-get 을 업데이트 한다.

sudo apt-get update
cs

그리고 vsftpd를 설치한다. vsftpd(Very Secured FTPD) : 우분투에서 기본적으로 제공되는 FTP 서버이다.

sudo apt-get install vsftpd
cs

설치가 완료되면 /etc/vsftpd.conf 파일에서 몇가지 설정을 변경해줘야 한다.


아래 설정에 대한 주석 해제

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list


위에 설정에서 chroot_list_file에 지정되어있는 파일을 만들어서 root를 추가해준다.

sudo vi /etc/vsftpd.chroot_list
cs

root 추가

sudo systemctl restart vsftpd
cs

그리고 vsftpd 를 재시작 해줘야 한다. 이렇게 하면 일단 Ubuntu 서버는 준비가 됐다.


2. 보안 그룹에 20 번 포트 등록

이제 FTP 서버에 접속할 수 있도록 보안그룹에 설정을 해줘야 한다.



이렇게 하면 끝


3. FileZilla로 접속해보자!!



이렇게 하면 접속이 완료된다.!!!

 Docker 한번 해보려다가 많은것을 배운다..


728x90
반응형
반응형

원문 : 3 challenges for using Docker


http://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS3858827361



컨테이너가 어떻게 사용되고 어떤 기술과 인프라가 채택되고 있는지 알아봅시다.

요즘 컨테이너는 IT 업종에서 가장 뜨거운 주제입니다. 그런데 실제로 컨테이너가 어떻게 사용되고 있습니까? 2015년 5월에 Ruxit과 공동으로 O"Reilly Media는 현재 조직이 어떻게 컨테이너를 사용하고 있는지 또는 사용할 계획인지를 공유하기 위해 O"Reilly커뮤니티에 사람들을 초대해서 조사를 했습니다.
그 결과 컨테이너 기술들은(특히 Docker는) 어플리케이션 배포를 빠르고 쉽고 보다 유연하게 해주기 때문에 빠르게 채택되고 있는 것으로 밝혀졌습니다. 2015년 DockerCon에서 있었던 설문에서는 컨테이너를 어떻게 사용하고 있는지,어떤 컨테이너 기술과 인프라를 채택하고 있는지 그리고 그 컨테이너를 사용하는 데에 동기를 주거나 연관된 요소들은 무엇인지 밝히는 데에 중점을 두었습니다.

컨테이너, 확실하긴 하지만…
설문 응답자들 중 40%는, 현재 개발을 위해 사용하고 있다는 86%와 비교하여 "생산을 위해 컨테이너를 사용한다"고 대답 했습니다. Docker 컨테이너는 "한번에 빌드를 하고 언제 어디서나 실행 가능하도록" 설계 되어있습니다. 그런데 왜 컨테이너를 생산에 좀더 많은 부분에서 사용하지 않는 걸까요? 응답자들은 컨테이너를 채택하기 위해서는 기술의 성숙도, 오케스트레이션, 모니터링,자동화, 그리고 환경의 크기뿐만 아니라 컨테이너를 적용함으로써 생기는 장점을 개발팀, 관리팀, 고객에게 설득해야 하는 어려움도 존재 한다고 대답했습니다.


적용하는데 걸림돌이 되는 기술 성숙도
56%이상의 설문 응답자들은 컨테이너 기술을 활용한 인프라 구조로 변경하는데 가장 큰 장벽은 기술의 성숙도라고 응답했습니다. 과거 2년동안 릴리즈된 컨테이너와 연관된 모든 툴과 프로젝트들을 계속해서 파악하는 것은 어렵습니다. 그리고 그 것들 중 몇몇은 이름이 바뀐 것도 있고 아직 베타 버전인 경우도 있습니다. 이렇게 개발의 빠른 속도는 아직 안정성이나 성숙도를 보여줄 정도는 아닙니다.


그러나 컨테이너로 패키징 되고 동적으로 관리되는 마이크로 서비스 기반의 어플리케이션 개발을 발전시키기 위한 기존 기술들과 조화를 이루는데 초점을 맞췄던 설문은 6월, OCI가 포메이션에 대한 발표를 하기 전과 7월, Cloud Native Computing Foundation(CNCF)가 설립 되기 전에 종료되었습니다. 이런 주도적인 행동들로 짧은 기간에 컨테이너 기술이 어떤 영향을 줄 수 있는지 말하는 것은 쉽지 않습니다. 기존 기술들과 융화 되려면 아직은 시간이 필요합니다.


그러나 이 공간에 기존 툴을 가지고 있는 선두 업체들이 돌아오게 되면 이러한 주도적인 행동들은 안정성을 보장할 수 있게 됩니다. 그리고 그들은 컨테이너로 기동하는 일련의 안정적 통합 솔루션을 찾기 위한 진입 점을 제공할 것입니다.

대규모 배포 시에 중요한 요소인 오케스트레이션
응답자중 절반은 컨테이너를 채택하려고 할 때 오케스트레이션은 하나의 요소라고 응답했습니다. 이미 Docker를 사용하고 있던 응답자들은 이런 응답을 했습니다.


오케스트레이션은 멀티 컨테이너, 멀티 호스트 어플리케이션에 있는 컨테이너를 조직화하고 연결하는 기능을 가지고 있습니다. 그리고 특히 마이크로 서비스 아키텍쳐로 되어 있는 어플리케이션들을 위해 중요한 역할을 합니다. 예를 들어 웹 어플리케이션은 각각의 컨테이너에서 동작하는 수많은 백앤드 서비스들과 마찬가지로(페일오버나 로드발란싱을 위한) 프론트 앤드의 여러 개 인스턴스를 관리하기 위한 웹 서버들을 구동하는 컨테이너의 집합으로 구성되어있습니다.


분명하게 Google 의 Kubernates와 Mesosphere"s Marathone을 지원하는 오케스트레이션 툴들은 Apache Mesos로 만들어졌습니다. Docker 자체적인 오케스트레이션 툴인 Swarm, Compose, Machine은 2월에 릴리즈 되었고 Compose는 기존의 Fig 툴이 변경된 것입니다. 어떤 컨테이너 관련 기술들을 사용하고 있는지 응답자들에게 물었을 때 38%는 Docker Swarm을, 22%는 Kubernates를 , 22%는 Mesos를 사용하고 있거나 사용할 예정이라고 응답했습니다. 그리고 Kubernetes를 사용한다고 응답한 사람들은 대개 큰 기업에서 일을 하고 있었습니다. Docker Swarm과 Machine은 여전히 베타 버전이지만 Kubernetes는 CNCF를 출시했던 7월21일에 버전 1.0을 릴리즈 했습니다. 따라서 이러한 툴들이 발전할 수 있는 기회를 준 후에 적용 비율을 비교해보는 것은 매우 흥미로운 일이 될 것 입니다.

확장성 모니터링에 대한 제한 요인
컨테이너가 제품의 넒은 영역에 사용되면서 모니터링 툴에 대한 요구가 또한 증가하게 되었습니다. 응답자중 46%는 모니터링이 컨테이너화한 어플리케이션으로 변경하는데 중요한 요소라고 응답했습니다. 오직 1개의 호스트에서만 동작하고 디스크에 있는 로그파일(예:/var/log 아래)을 분석하는데 의존했던 기존 Linux기반의 모니터링과 리포팅 툴들은 멀티 컨테이너 클러스터 어플리케이션으로 변경하기에 적합하지 않았고 싱글 컨테이너 어플리케이션을 모니터링 하는 것 조차도 적합하지 않았습니다. 왜냐하면 저장되지 않은 데이터들은 컨테이너가 동작하지 않을 때에 디스크의 내용이 유지 되지 않기 때문입니다. 컨테이너 인식 모니터링 툴 또는 서비스를 사용하여 어플리케이션을 모니터링 하고 로그를 확인하는 것에 대한 집중화된 접근은 동적으로 다수의 컨테이너 어플리케이션을 관리하는 데에 더 적합합니다.


컨테이너의 상태를 모니터링 하기 위한 셀프 호스트 솔루션으로는 오픈 소스 툴인 cAdvisor와 Sensu, Prometheus가 있습니다.


Docker는 1.5버전부터 동작중인 컨테이너들의 스트리밍 자원의 사용 상태를 확인 하기 위한 Stats API를 지원해왔습니다. 그리고 수많은 벤더들은 New Relic, Scout, DataDog, SignalFX, AppDynamics 를 포함한 Docker Stats API로 만들어진 호스트 모니터링 툴을 제공합니다. 이 툴들은 컨테이너 상태를 모니터링 하지만 Stats API를 통해 제공된 데이터에 의존적입니다. 그리고 그런 이유로 컨테이너 안에서 동작하고 있는 서비스들이나 어플리케이션에 대한 좀더 상세한 정보는 제공하지 않습니다. Ruxits의 Docker Monitoring은 새로 생성된 컨테이너에 대한 오토 디스커버리를 제공합니다. 그리고 컨테이너 내부에서 동작하고 있는 어플리케이션과 서비스들에 대한 디스커버리와 Docker컨테이너 안에서 실행되는 마이크로서비스들과 동적 분산 어플리케이션에 대한 어플리케이션 중심 모니터링을 제공합니다.

자동화
40%의 응답자들은 자동화는 또 다른 요소라고 말합니다. 특히 자동화는 변경이 많은 마이크로 서비스 기반의 분산 어플리케이션 구현하는 데에 유용합니다. 예를 들어 하나의 서비스를 새로운 컨테이너로 변경 하는 것이 장소를 업그레이드 하는 것보다 낫습니다. 기존에 Jenkins와 같은 배포 툴(배포를 위해 Ansibl과 같은 CM 툴과 결합한)과 CircleCI같은 컨테이너 사용가능한 서비스들은 DockerHub로부터 직접적으로 Docker이미지들을 내려받고 CI/CD프로세스의 부분처럼 직접 빌드를 하고 배포를 할 수 있습니다. 동적으로 서로 관련이 있는 서비스들을 미리 연결하는 것보다 다른 서비스들을 동적으로 디스커버리 하는 것을 가능하게 하기 위한 Etcd와 Consul을 포함한 서비스 디스커버리 툴들은 이 이야기에 중요한 부분입니다.

요약
설문 응답자들에 의하면 컨테이너 기술 채택에 대한 높은 비율은 Docker와 컨테이너에 관련된 현재 업계에 대한 추세를 반영합니다. 응답자중 반 이상이 앞으로 6-12개월 안에 제품에 컨테이너를 사용할 예정이라고 말했습니다. 그리고 설문에 의해 확인된 분산 컨테이너 어플리케이션을 위한 자동화, 모니터링, 오케스트레이션과 같은 핵심적인 요소와 관련된 영역을 다루는 통합솔루션과 안정성, 제품준비에 대한 명백한 수요도 있습니다.
어떻게, 왜 사람들이 Docker를 사용하는지 배우기를 원하시나요? 설문의 나머지 부분을 읽어보십시요.

728x90
반응형
반응형


docker ps -a


docker stop [contatiner ID]

docker rm [containerID]

docker rmi [repositoryID]


728x90
반응형

+ Recent posts