반응형

 

  • Docker-machine

Docker-machine은 가상환경이나 클라우드 등에서 호스트OS의 커맨드만으로 docker를 사용하기 위한 가상 환경을 생성해 줍니다. 즉, 원격 시스템에서 docker host를 프로비저닝하고 관리할 수 있는 기능을 갖추고 있습니다.

 

 

 

 

  • GCP(Google Cloud Platform)에 Docker Host 프로비저닝

들어가기에 앞서, GCP에서 docker host 프로비저닝 방법은 docs.docker 홈페이지에서 제공 합니다. (https://docs.docker.com/v17.12/machine/drivers/gce/#example)

또한 구축하기 전에 아래 패키지들이 설치되어 있어야 합니다.

gcloud auth login

docker-machine create --driver google --google-project [PROJECT_ID] [Docker Host name]	## 구글 프로젝트 ID 입력, 생성할 VM 인스턴스명 입력

docker-machine create --driver google \
  --google-project [PROJECT_ID] \				## 구글 프로젝트 ID 입력
  --google-zone asia-northeast1-a \				## 가장 가까운 도쿄로 설정 합니다.
  --google-machine-type f1-micro \				## 높은 사양이 필요 없기에 f1-micro 으로 설정 합니다.
[Docker Host name]								## 생성할 VM 인스턴스 명

#ex)
#docker-machine create --driver google \
#  --google-project nirsa-project \				## 구글 프로젝트 ID 입력
#  --google-zone asia-northeast1-a \			## 가장 가까운 도쿄로 설정 합니다.
#  --google-machine-type f1-micro \				## 높은 사양이 필요 없기에 f1-micro 으로 설정 합니다.
#nirsa-host								        ## 생성할 VM 인스턴스 명

위 명령은 두가지 vm을 생성 하고 아래와 같이 진행 됩니다. 둘중 하나만 입력해도 상관은 없습니다.

 

 

GCP의 경우 굉장히 매뉴얼화가 잘 되어 있습니다. 위 코드의 asia-northeast1-a 와 f1-micro를 좀 더 알고 싶으시면 아래 구글 클라우드 메뉴얼을 참고해 주세요.

(https://cloud.google.com/compute/docs/regions-zones/?hl=ko)

(https://cloud.google.com/compute/docs/machine-types?hl=ko)

 

  • docker-machine command

이전에 docker와 docker-compose 명령어를 보앗다면 큰 차이가 없었다고 생각이 될텐데, docker-machine도 명령어 자체는 docker나 docker-compose와의 차이가 크게 없습니다. 대부분의 기능이 구현되어 있기 때문에 inspect, ls 등등도 모두 같아 아래엔 몇개만 간단히 정리 하겠습니다.

docs.docker 홈페이지에서 여러 메뉴얼을 확인하실 수 있습니다. (https://docs.docker.com/v17.09/machine/get-started/#run-containers-and-experiment-with-machine-commands)

1. docker host 생성 : 상단 프로비저닝 참고

2. docker host 삭제/강제중지

# 삭제
docker-machine rm [docker host name]

# 삭제
docker-machine kill [docker host name]

 

3. docker host 실행/정지/재실행

# 실행
docker-machine start [docker host name]

# 정지
docker-machine stop [docker host name]

# 재실행
docker-machine restart [docker host name]

 

4. docker host 접속

호스트OS에서 docker host로 ssh 접속할 때 사용 합니다.

# 접속
docker-machine ssh [docker host name]

 

5. docker host 파일 다운로드/업로드

docker-machine의 scp 기능을 이용해 vm간 파일 다운로드/업로드가 가능 합니다. docker host name이 없을 경우 호스트OS로 간주 합니다.

단, 주의해야할 점은 scp를 사용할 때 docker-uesr 계정을 통해 이루어지므로 permission error가 발생할 수 있습니다. 적당한 권한(ex. chown docker-user.root [path])을 부여 해주어야 합니다.

# 호스트OS -> Docker host1
docker-machine scp [원본 파일] [docker host name]:[다운받을 경로]

# Docker host1 -> Docker host2
docker-machine scp [docker host name]:[원본 파일] [docker host name]:[다운받을 경로]

# Docker host2 -> 호스트OS
docker-machine scp [docker host name]:[원본 파일] [다운받을 경로]

아래의 경우는 호스트OS의 test2 파일을 vm01 이라는 docker host의 /tmp 경로로 파일을 업로드 합니다.

/root 디렉토리는 권한 에러가 발생 합니다.

 

 

반응형
반응형

 

  • Docker-machine

Docker-machine은 가상환경이나 클라우드 등에서 호스트OS의 커맨드만으로 docker를 사용하기 위한 가상 환경을 생성해주고 관리할 수 있는 기능을 제공해 줍니다. 즉, 원격 시스템에서 docker host를 프로비저닝하고 관리할 수 있는 기능을 갖추고 있습니다.

 

docker-machine의 설치 방법은 github에 공개되어 있으며 아래 명령어를 입력하시면 됩니다. 단, 설치 전 Docker CE가 설치되어 있어야 docker-machine 설치가 가능 합니다.

(참고 : https://github.com/docker/machine/releases)

# OS X

$ curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
  chmod +x /usr/local/bin/docker-machine
# Linux

$ curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
# Windows with git bash

$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

 

  • command not found 발생 시

find / -name docker-machine 명령어를 통해 docker-machine 실행 파일을 찾아주시면 됩니다. 일반적으로 /usr/local/bin/ 경로에 있습니다.

실행 파일을 찾은 후 vi 편집기로 ~/.bashrc 을 열으신 후 아래와 같이 설정 해주세요.

:wq 로 저장 후 나간다음 source ~/.bashrc 입력 후 docker-machine 명령어를 실행하면 정상적으로 명령어가 실행되는것을 확인할 수 있습니다.

 

반응형
반응형

Centos7 버전에 MySQL을 설치하고 mysql 명령으로 진입하려하면 access denied for user 'root'@'localhost' 에러가 발생 합니다. 어느 버전부터 이렇게 바꼇는지는 모르겠지만 mysql 설치 후 root 계정의 패스워드가 임의로 변경되어 로그파일에 남겨진다고 합니다.

아래 명령어를 입력하면 임의로 설정된 root 계정 패스워드를 확인할 수 있습니다.

cat /var/log/mysqld.log | grep 'temporary password'

 

빨간색으로 테두친 부분이 패스워드이므로 이제 mysql -u root -p 명령어로 패스워드를 입력하고 접속을 시도하면 정상적으로 로그인 되는것을 확인할 수 있습니다.

하지만 로그인 후 정상적인 이용이 불가능한데, mysql에서 임의로 설정된 패스워드를 반드시 변경해야 정상적으로 사용가능 합니다.

alter user 'root'@'localhost' identified by '사용할 비밀번호';
commit;

그런데 또 패스워드는 대문자, 소문자, 숫자, 특수문자를 포함해야하고 암호 길이가 8 자 이상이여야 해야합니다. (아오..)

패스워드 설정까지 완료 하셨으면 이제 정상적으로 사용 가능 합니다.

 

반응형
반응형

 

구글 클라우드의 콘솔창에서 웹으로 ssh 접속을 해주세요. (ssh 접속 참고 : https://nirsa.tistory.com/82?category=870325)

ssh 접속 후 sudo passwd 명령어를 입력하면 새로운 패스워드를 입력 하라고 나옵니다. 여기서 패스워드를 입력하면 root 계정의 패스워드 설정이 완료 됩니다.

[user@bbb ~]$ sudo passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.

[user@bbb ~]$ su -
Password: 
[root@bbb ~]# 

 

반응형

+ Recent posts