利用 ssh 連線進入 EC2 主機

本篇以「利用 ssh-agent 連進 Bastion 再連進 mongo,安裝 Docker 和 MongoDB」為範例教學

可參考:http://diary.taskinghouse.com/posts/310691-ssh-connection-amazon-ec2

SSH = Secure Shell protocol

SSH 可以經由將連線的封包加密的技術,來進行資料的傳遞。

===接下來就是指令的部分囉===

目標 1 : 進入 Bastion-EC2

首先透過 eval 幫我們執行 ssh-agent,帶著最終目標機器的KEY,連進跳板機:

eval $(ssh-agent)

ssh-add <General.pem 的路徑>

ssh -A -i <Bastion.pem 的路徑> ec2-user@<Bastion-EC2 的public IP>

public IP 要進到 EC2 的服務去查

* 初次使用 Key Pair 登入 EC2 可能會遇到這個警告

Permission denied (publickey)

* 通常是因為這個鑰匙檔的權限太過於公開。
* 此時可以chmod 400 <.gem 的路徑>,將權限改成 400 only the root user can read it

目標 2 : 進入Mongo-EC2

step1 : 進入 Bastion 後,在 terminal 輸入以下指令

ssh ec2-user@<Mongo-EC2 的 IP(10.10.220.XX)>

目標 3 : 安裝 docker

step1 : 更新及安裝 docker ( ec2 會直接安裝 docker-ce )

sudo yum update #進到新機台,記得先更新

sudo yum install -y docker #安裝 docker 囉

sudo reboot #重新開機

* 在這裡因為 EC2 機台的緣故,可以如此輕易地安裝設定,後面會有較為詳細的作法 )

目標 4 : 啟動 MongoDB 的 container

step1 : 下載 mongo 的 docker-image,再透過 image 起一個含有 mongodb 的 container

sudo docker pull mongo #把 mongo 的 image 從 docker hub 上拉下來

sudo docker images #檢查有沒有拉下來以及 image 叫什麼名字

mkdir mongo_data #建立與 container 中資料備份的 mapping 資料夾

docker run -d --name mongo-container -p 27017:27017 –v $(pwd)/mongo_data:/data/db <image name>[:tag]

* <image_name>可以為 image ID 至少前四碼,或是 mongo

* 查 image ID 可利用 docker images

--name 命名容器 -d 背景執行 -p 讓本地 port 跟 container 的 port 連起來

* 若使用 Amazon Linux AMI,家目錄在 /home/ec2-user

* mapping 時如果 $(pwd) 下沒有 mongo_data,會自動建立一個叫做 mongo_data 的資料夾在 $(pwd) 下,亦即 /home/ec2-user/mongo_data

* mongo-container 內部的家目錄在 /root,mongoDB 的資料存在 /data/db 中

* 我們拉下來的 image,docker file 中有自己啟動 mongod 的 command,所以這步也無須手動操作

* 做 -v 的時候一定要 mapping /data/db 因為 mongoDB docker 的 Volume 設定,若是mapping /data 將不會 mapping 到任何資料

以上,你的 mongodb 就建起來囉( in mongo-container )

補充 : docker-ce on ubuntu

sudo apt-get remove docker docker-engine -y

sudo apt-get remove docker.io -y

sudo apt-get install \

linux-image-extra-$(uname -r) \

linux-image-extra-virtual

sudo apt-get install \

apt-transport-https \

ca-certificates \

curl \

software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu \

$(lsb_release -cs) \

stable"

sudo apt-get update -y

sudo apt-get install docker-ce -y

sudo groupadd docker

sudo usermod -aG docker $USER

sudo systemctl enable docker

sudo docker --version

補充 : docker-ce on CentOS7

sudo yum remove docker \

docker-common \

container-selinux \

docker-selinux \

docker-engine \

docker-engine-selinux

sudo yum install -y yum-utils \

device-mapper-persistent-data lvm2

sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

sudo yum-config-manager --enable docker-ce-edge

#edge version

sudo yum makecache fast

sudo yum install -y docker-ce

sudo systemctl start docker

sudo docker --version

ssh-agent 介紹參考 :

https://blog.gtwang.org/linux/using-ssh-agent-forwarding-to-avoid-being-asked-passphrase/

參考官方文件:

https://hub.docker.com/_/mongo/

1.Create a data directory on a suitable volume on your host system, e.g./my/own/datadir.

2.Start yourmongocontainer like this:
$docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo:tag

The-v /my/own/datadir:/data/dbpart of the command mounts the/my/own/datadirdirectory from the underlying host system as/data/dbinside the container, where MongoDB by default will write its data files.

results matching ""

    No results matching ""