題解 AT2000 【[AGC002F] Leftmost Ball】
前言:
趁最近離職有時間,所以開始學習分散式,聽大家說windows搭建docker會有很多問題,所以決定搞一個虛擬機器,用linux系統來搭建。
正文:
準備工作:
1.採用vagrant簡化搭建centos/7.
1.1 先下載visualBoxhttps://www.virtualbox.org/ 版本 6.1.12
1.2 下載vagranthttps://www.vagrantup.com/ 版本2.2.9
1.3 下載visualBox 所需要的box(因為到時候下載的話很慢,提前用迅雷下載,速度快得多),複製的網址不能用,直接上圖,圖上標紅的就是要下載的。 網址:http://www.vagrantbox.es/
問題:
1.visualBox進行安裝需要cpu開啟虛擬化
2.當安裝完成後可以使用 vagrant -v進行測試,出現版本號即為成功。
環境搭建:
1.搭建系統
1.1 下載的vagrant box放入vagrant中,方便初始化(下載的box必須要在當前目錄下)
命令: vagrant box add centos/7(設定的名字) centos-7.0-x86_64.box(下載的.box名稱)
設定完成可通過vagrant box list顯示
1.2 進行初始化(這裡指明box名字(centos/7),對應box list 裡的box),會生成一個vagrantFile檔案,用於後期配置
命令: vagrant init centos/7
1.3 建立系統,同樣指明名字
命令: vagrant up
如果一切成功,可以在virualBox 裡看的一臺虛擬機器,就是我們建立的,並且處於正在執行狀態。
可以使用命令:vagrant ssh 進入系統,檢視
當沒有問題後,更改網路配置,虛擬機器與宿主機相互ping通
更改網路配置(提前關閉系統,採用命令與手動在virualbox關閉都一樣):找到建立目錄下的vagrantFile檔案,這裡的ip是通過檢視本機的分配給virualBox的地址得出,不要一樣ip,尾數更換,和我一樣加個0,XXX.XXX.XX.10,即可,更改完後,啟動生效
其他命令:vagrant halt(關閉虛擬機器),vagrant up 啟動虛擬機器(必須要在建立的目錄下啟動),vagrant reload (重啟虛擬機器)
2.搭建系統執行環境
2.1 安裝docker(docker 相關命令都在root下,建議su root 切換成root 許可權,密碼為 vagran)
官方文件:https://docs.docker.com/engine/install/centos/
我實際操作(免除部分無效操作和更換地址):
2.1.1 安裝所需軟體包
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
2.1.2 設定 安裝軟體地址(阿里雲地址)
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.1.3 進行安裝(一路y就行)
sudo yum install docker-ce docker-ce-cli containerd.io
2.1.4 執行docker
sudo systemctl start docker
2.1.5 可以通過檢視docker info 來檢視docker 是否已經安裝好(如果沒安裝好,執行都不行的0.0,所以這一步沒啥必要)
2.2 docker 配置映象加速(可以通過阿里雲容器服務裡看) 阿里雲地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2.2.*大部分教程到上一步就沒了,但是我實際配置過程中,配置加速後,依然不可以加速(可以通過 docker pull mysql:5.7 試試,能否下載成功),找了很多資料,最後看到需要在
vim /etc/resolv.conf
在後面新增(先雙擊i,進入插入模式,新增完畢後,按兩次Esc鍵,然後:wq ,儲存並退出)
nameserver 8.8.8.8
到此,再次docker pull mysql:5.7 ,成功下載。(ps:映象加速的網路配置在重啟後就沒了,再次新增或者尋找可永久新增的方法,這裡就不寫了)
2.3 使用docker安裝 mysql
2.3.1將埠映射出去,這樣可以直接訪問虛擬機器IP+埠就可以同時訪問docker裡的mysql
# --name指定容器名字 -v目錄掛載 -p指定埠對映 -e設定mysql引數 -d後臺執行 sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7
執行成功後,可以通過docker ps來檢視所有正在執行的容器
可以通過my.conf 設定一下格式
vi /mydata/mysql/conf/my.conf [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve
2.3.2 設定完成後,還並不可以通過宿主機navicet 連線,還需要設定可遠端訪問。
2.3.3
mysql 設定遠端連線
iptables 開啟埠對映:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT iptables -L -n (檢視埠是否啟用)
進入mysq:
docker exec -it mysql1 mysql -uroot -p root
進入mysql資料庫:
use mysql
修改root訪問許可權(先檢視是否只有一個root,如果有兩個root角色就會報錯)
update user set host = '%' where user = 'root';
flush privileges; 重新整理許可權
重啟docker和mysql:
systemctl restart docker和docker start mysql
至此,連線成功。