1. 程式人生 > 實用技巧 >題解 AT2000 【[AGC002F] Leftmost Ball】

題解 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

至此,連線成功。