小白第一次買阿里雲服務器,開開心心的打開,修改登錄密碼,就直接用ssh連接服務器安裝docker了(至此埋下了大雷。。。)
首先說連接阿里雲服務器,根據文檔指示,修改密碼,重啟服務器,連接成功。開始安裝docker;
在剛開始的時候,由於網絡的原因,我們在下載的鏡像的時候,常常速度是非常慢的。所以如果下載鏡像很慢的同學,可以嘗試配置國內的加速器加速鏡像下載
附上安裝docker文檔連接:
1.登錄阿里開發者平台:https://dev.aliyun.com/search.html
2.點擊“創建我的容器鏡像”
3.注冊/登錄后,進入Docker 鏡像倉庫 (https://cr.console.aliyun.com/#/imageList),選中加速器 Tab
根據文檔操作非常簡單,使用加速器拉取mysql鏡像速度賊快
docker run --name mysql -v $PWD/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxx -d mysql:5.7
成功創建mysql鏡像
1.查看已經運行的docker鏡像
docker ps(加-a 是查看所有鏡像)
2.連接到mysql鏡像中
docker exec -it mysql bash
mysql是鏡像的名字,鏡像每次啟動都必須有一個名字,該名字可以手動指定也可以自己生成,我這里指定了名字和端口號
連接成功以后,如下圖,已經進入到了docker mysql鏡像中
3.查看mysql的啟動狀態
service mysql status
4.mysql沒有啟動可以使用以下命令啟動
service mysql start
5.輸入mysql 驗證mysql是否啟動成功
這個博主的文章非常值得參考
https://www.cnblogs.com/areyouready/p/8948552.html
我自己踩的坑:1.navicat客戶端連接不上,開始以為端口號不對,查資料后發現自己定義的是3306,端口號正確;
2.然后ip地址以為不對,以為是容器的ip地址,反復試了也是不對;ip地址其實就是宿主機ip,也就是服務器ip
3.以為賬號密碼錯誤,經排查發現沒有問題
4.由於mysql中root執行綁定在了localhost
,因此需要對root進行授權,授權后,刷新后重新登錄:flush privileges;查找授權,show grants for @IP地址,發現授權沒有問題
5.mysql是否啟動着,在啟動中;
最后的最后。。。。百度可能外部訪問服務器本身就不通。。。
1.阿里雲服務器防火強是否沒有對3306端口進行授權?(至此防火牆命令學的差不多了。。確實沒有打開,但是打開后,利用telnet在windows系統上訪問遠程訪問該ip端口號依然連接不上!!!)
windows電腦如何開啟telnet命令可以自行百度
如下圖失敗:
進入系統之后,發現CentOS 7默認已安裝Firewall,但是沒有啟動,所以需要先啟動Firewall,同時設置開機自啟動。
- 登錄ECS實例,執行如下命令,啟動Firewall。
systemctl start firewalld
- 執行如下命令,設置開機自啟動。
systemctl enable firewalld.service
- 執行如下命令,查看防火牆狀態,是否為running。
firewall-cmd --state
- 執行如下命令,重新載入配置。比如在添加規則等之后,需要執行此命令。
firewall-cmd --reload
- 執行如下命令,列出支持的zone。
firewall-cmd --get-zones
- 執行如下命令,列出支持的服務,在列表中的服務是放行的。
firewall-cmd --get-services
- 執行如下命令,查看FTP服務是否支持,返回yes表示支持,返回no表示不支持。
firewall-cmd --query-service ftp
- 執行如下命令,臨時開放FTP服務。
firewall-cmd --add-service=ftp
- 執行如下命令,永久開放FTP服務。
firewall-cmd --add-service=ftp --permanent
- 執行如下命令,永久移除FTP服務。
firewall-cmd --remove-service=ftp --permanent
- 執行如下命令,永久添加80端口。
firewall-cmd --add-port=80/tcp --permanent(開啟該端口訪問權限)
- 執行如下命令,查看規則,此命令和iptables相同。(查看開啟的端口)
iptables -L -n
- 執行如下命令,查看幫助。
man firewall-cmd
- 執行如下命令,查看防火牆狀態,是否為running。
2. 防火牆端口開啟后依然訪問不到,但是可以ping通服務器網絡,又一頓百度,阿里雲服務器中安全組沒有打開,如下圖:
控制台-已開通的產品-雲服務器ECS:,點擊該服務器,跳轉到實例列表
訪問本實例安全組,打開,點擊克隆,修改配置將3306端口放開,授權對象為0.0.0.0/0是指所有網段均可以訪問該服務器的端口
3.至此我擔心還不生效,重啟了服務器;重啟之后,再次telnet IP 3306,依舊連接不成功,有一個坑!!docker早已經關閉了,mysql當然沒在運行。。。。
4.打開docker,重新運行mysql鏡像,再次訪問telnet IP 3306,連接成功,navicat客戶端連接成功!!!想哭,我咋那么難呢!
5.同時也證明了重啟服務器后docker關閉,但是mysql鏡像還在,手動打開鏡像,mysql正常運行;