一、安裝Docker 1、我是虛擬機裝的Centos7,linux 3.10 內核,docker官方說至少3.8以上,建議3.10以上(ubuntu下要linux內核3.8以上) root賬戶登錄,查看內核版本如下 uname -a 2、把yum包更新到最新 yum update (期間要選擇確認, ...
一、安裝Docker
1、我是虛擬機裝的Centos7,linux 3.10 內核,docker官方說至少3.8以上,建議3.10以上(ubuntu下要linux內核3.8以上)
root賬戶登錄,查看內核版本如下
uname -a
2、把yum包更新到最新
yum update
(期間要選擇確認,輸入 y 即可)
3、安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
4、設置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿裡倉庫)
5、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
6、安裝Docker,命令:yum install docker-ce-版本號,我選的是docker-ce-18.03.1.ce,如下
yum install docker-ce-18.03.1.ce
(期間要選擇確認,輸入 y 即可)
7、啟動Docker,命令:systemctl start docker,然後加入開機啟動,如下:
systemctl start docker #啟動docker
systemctl enable docker #設置docker為開機自啟
sudo docker run --rm hello-world #啟動docker中的hello-word
8、如果看到如圖:
則說明安裝doceker成功
二、接下來安裝doceker-compose
1、運行以下命令下載Docker Compose的當前穩定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、將可執行許可權應用於二進位文件:
sudo chmod +x /usr/local/bin/docker-compose
3、註意:如果命令docker-compose在安裝後失敗,請檢查您的路徑。您也可以創建指向/usr/bin或路徑中任何其他目錄的符號鏈接。
例如:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4、檢查docker-compose 是否安裝成功
doceker-compose --version
三、安裝與配置Git
1、在Linux上是有yum安裝Git,非常簡單,只需要一行命令:
yum -y install git
輸入 :
git --version
查看Git是否安裝完成以及查看其版本號
2、配置git:
git config --global user.name "xxx" git config --global user.email "[email protected]" git config --global core.autocrlf false git config --global gui.encoding utf-8
3、執行下麵的命令,一直回車,直到結束
ssh-keygen -t rsa -C "[email protected]"
4、生成ssh key
cat ~/.ssh/id_rsa.pub
5、登陸GitHub,點擊setting>SSH and GPG keys>New SSH Key 將生成的密鑰複製到Key中即可
6、測試是否配置成功
ssh -T [email protected]
7、出現這樣一段話,即證明配置成功。
Hi RoninLee! You've successfully authenticated, but GitHub does not provide shell access.
四、後端部署
1、運行以下命令拉起源碼:
git clone https://github.com/bigbaser/TcloudServer.git
2、進入到TcloudServer\deploy目錄下,使用以下命令,拉取所有(等待一會,拉取時間較長)
docker-compose pull
3、然後修改local_config.py文件,
# 這裡的賬號密碼是在docker-compose.yml中配置的,改成以下 SQLALCHEMY_DATABASE_URI = 'mysql://root:tc123456@mysql:3306/demo?charset=utf8'
4、再初始化kong的資料庫(如果報錯,再執行一次,成功的話會顯示Database is up-to-date)
$ sudo docker-compose up -d kong_database // 容器啟動以後,資料庫會本地掛載到 ./volumes/kong_database 裡面 // 但由於許可權問題,初始化資料庫會失敗,所以要先對該文件賦予許可權 $ sudo chmod -R 777 ./volumes/kong_database $ sudo docker-compose run --rm kong kong migrations bootstrap
5、然後啟動所有項目
$ sudo docker-compose up -d
6、查看啟動狀態
$ sudo docker-compose ps
7、如果所有狀態均為up,則運行正常,否則查看日誌
sudo docker logs <name>查看日誌
8、打開konga(kong的管理頁面,http://localhost:9001),註冊賬號並登錄,再新建連接,地址為http://kong:8001
9、成功後,進入SNAPSHOT頁面,點擊IMPORT FROM FILE,選擇我們的kong.json文件,併進入DETAILS中RESTORE,全選導入,可能會出錯,再執行一次即可,此時我們的網關服務已經運行完成,地址為http://localhost:9000
ps: 資料庫初始化文件是init/init.sql,可以通過sudo docker-compose down -v再刪除volume/mysql掛載目錄之後,sudo docker-compose up -d來重新初始化資料庫
五、前端部署
1、安裝node環境
從CentOS儲存庫安裝Node.js和npm
可以從標準CentOS存儲庫中安裝Node.js和npm。
通過運行以下命令列出提供nodejs軟體包的模塊:
yum module list nodejs
要在CentOS系統上安裝預設的Node.js軟體包,請輸入:
sudo yum module install nodejs
輸入以下命令:
node --version #檢查node 是否安裝成功
npm --version #檢查 npm 是否安裝成功
2、使用以下命令拉取前端代碼:
git clone https://github.com/bigbaser/Tcloud.git
3、在前端項目的根目錄下執行:npm install 安裝依賴包
4、安裝依賴包如報以下錯:
解決辦法:
4.1、輸入以下命令:
npm install -g cnpm --registry=https://registry.npm.taobao.org
4.2、建立軟鏈接:
sudo ln -s {此處為你安裝npm的路徑}.npm-global/bin/cnpm /usr/local/bin/cnpm
4.3、輸入:
cnpm --version 檢查是否安裝成功。
5、修改config/dev.env.js與index.js文件中的BASE_URL 地址為http://0.0.0.0
6、運行前端項目:
npm run dev
7、在非 localhost 功能變數名稱下登錄不成功,可以打開開發者工具,查看 Application 下的 Cookies 是否有 JWT_TOKEN_TCLOUD_DEV。
如果沒有,找到前端項目 Tcloud/src/store/modules/login.js,修改第57行,把
domain: process.env.NODE_ENV === 'development' ? 'localhost' : COOKIE_DOMAIN 修改為:
domain: COOKIE_DOMAIN
然後修改 config 下的 dev.env.js,把 COOKIE_DOMAIN 改成前端當前訪問功能變數名稱即可。
六、報錯總結:
一、docker pull 鏡像時報錯:
1、
ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on such host
2、
ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on xxx.xxx.xxx.xxx:xxxx: lame referral
3、
Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25: dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.168.65.1:53: i/o timeout Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
二、分析問題:
問題1、2這個是因為DNS功能變數名稱沒有解析的原因。
問題3 網路連接超時,這情況涉及到很多因素。
三、解決辦法:
問題:1、2:
vi /etc/resolv.conf 增加一行DNS地址:例如:nameserver 114.114.114.114 (此方法伺服器重啟之後會失效。參考方法2:vi /etc/sysconfig/network-scripts/ifcfg-ens33 打開網卡配置文件,在配置文件中添加:DNS1=”8.8.8.8”,DNS2=”114.114.114.114”)
保存之後,繼續執行拉取鏡像的命令,即可!
問題:3:
3.1 通過dig @114.114.114.114 registry-1.docker.io找到可用IP
3.2 嘗試修改/etc/hosts強制docker.io相關的功能變數名稱解析到其它可用IP
3.3 保存之後重試即可: docker search sameersbn
附一些常用Docker命令,更多命令詳解,請訪問:http://www.docker.org.cn/dockerppt/106.html:
----------------- docker ps 查看當前正在運行的容器
----------------- docker ps -a 查看所有容器的狀態
----------------- docker start/stop id/name 啟動/停止某個容器
----------------- docker attach id 進入某個容器(使用exit退出後容器也跟著停止運行)
----------------- docker exec -ti id 啟動一個偽終端以互動式的方式進入某個容器(使用exit退出後容器不停止運行)
----------------- docker images 查看本地鏡像
----------------- docker rm id/name 刪除某個容器
----------------- docker rmi id/name 刪除某個鏡像
----------------- docker run --name test -ti ubuntu /bin/bash 複製ubuntu容器並且重命名為test且運行,然後以偽終端互動式方式進入容器,運行bash
----------------- docker build -t soar/centos:7.1 . 通過當前目錄下的Dockerfile創建一個名為soar/centos:7.1的鏡像
----------------- docker run -d -p 2222:22 --name test soar/centos:7.1 以鏡像soar/centos:7.1創建名為test的容器,並以後臺模式運行,並做埠映射到宿主機2222埠,P參數重啟容器宿主機埠會發生改變
參考:https://github.com/bigbaser/TcloudServer/blob/master/deploy/docs/Docker%E9%83%A8%E7%BD%B2.md