因為Linux發行版本的問題折騰了好久,儘量使用LTS的版本。其他版本有時候缺的東西太多了,對新手相當不友好。
大概花了幾天實在沒招了,下了個LTS的版本,再裝時正常了。按照官方檔案都可以搞定了。
使用這個版本的ubuntu-22.04.2-desktop-amd64.iso的,官網上下的,用虛擬機器器弄個上裝了下,檢查下有沒有聯網。
ping www.baidu.com
#使用者叫xman 在 xman-virtual-machine的機子上登入 xman@xman-virtual-machine:~$ su - Password: root@xman-virtual-machine:~#
輸入 su - 會讓你輸入密碼,輸入當前賬號的登入密碼。切成root使用者。安裝許可權最大,但是docker群組有些操作不了,資料夾也存取不全,
還要授權亂七八糟。
#清空歷史版本 sudo apt-get remove docker docker-engine docker.io containerd runc #更新下包管理器 sudo apt-get update #允許https型別的通過 sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release #Docker’s official GPG key sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg #設定儲存庫 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null #更新包管理器 sudo apt-get update #如果更新出錯GPGkey有誤 sudo chmod a+r /etc/apt/keyrings/docker.gpg sudo apt-get update #安裝docker sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin #用預設的容器檢查下是否安裝成功 sudo docker run hello-world
以上都完了以後就代表安裝成功,真真的門檻安裝都吃力。
ip address
如果聯網了,你大概能看到你的IP,作為對外通訊的IP
然後建立個網橋,作為容器和本機的通道,這樣容器通過這個橋使用本機東西對外提供服務
#檢視網橋的內容,一般有幾個 docker network ls #清空沒用的網路 docker network prune #如果一個網橋被使用中你刪不掉需要先關掉容器,刪除容器,然後刪除 docker stop mycontainer1 docker rm mycontainer1 docker network prune # 清除不用的網橋後大體乾淨了,就做個自己用本機對外提供服務的IP做 docker network create \ -o "com.docker.network.bridge.host_binding_ipv4"="192.168.139.129" \ br0
#檢查下狀態有沒有問題
docker net ls
#查一下現有的映象 docker images #如果下來了直接裝,沒有下來就下一下,不寫版本預設是last的 docker pull mysql #然後安裝 docker run -di --privileged=true -p 3306:3306 --network=br0 -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name my mysql
-di d 後臺執行,有守護行程處理 i 可以互動 這個弄了以後就不用手動啟動了
--privileged=true 提升許可權,防止MySQL的有些目錄沒許可權存取
-p 3306:3306 埠對映 主埠:容器埠 容器的口接到主機上對外提供服務
--network=br0 使用網橋 br0建立此容器,並對外提供服務
-v /home/mysql/log:/var/log/mysql
-v /home/mysql/data:/var/lib/mysql
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /home/mysql/mysql-files:/var/lib/mysql-files
主機目錄:容器目錄,把容器的資料和組態檔掛載到主機上防止丟失和設定同步,這個是以前的如果需要改遠端存取的改 my.cnf檔案
-e MYSQL_ROOT_PASSWORD=123456 設定登入資料庫root使用者的密碼是123456,到時候進容器可以用這個進資料庫
--name my mysql 容器名稱 容器建立依據的映象名稱
#互動進去my容器中 docker exec -it my /bin/bash #進入MySQL看看 mysql -uroot -p123456 #切到管理資料庫 use mysql; #檢視下是否允許遠端存取 select user,host from user; #如果不允許改下 update user set host ='%' where user ='root';
#重新整理許可權
flush privileges;
#如果不想用這個自己建個使用者
CREATE USER 'username'@‘%' IDENTIFIED BY '123';
#然後授權
grant all privileges on *.* to 'username'@'%' ;
#同樣重新整理一下
flush privileges; #退出MySQL exit; #退出容器 exit
在遠端機器上輸入IP連線一下貌似可以
至此搞完。
另外記錄下vi的作業。linux的編輯器對windows轉過來的很不友好。
#可以開啟一個這個位置的cnf的檔案 vi /home/bin/conf.cnf #預設是命令模式,不支援輸入字元,輸入的都是命令 可以使用滾輪HJKL來移動到你想要的行列home|end也可以 移動了以後摁i以後進入編輯模式 shift+字元好像才可以輸入想要的字元,一不注意就跑回命令模式了。 並且上下左右箭頭是ABCD字元, dd可以刪除一行 delete可以刪除一個字元 u是復原更改 連按兩次Esc可以切換到命令模式 想儲存摁: 然後q!直接退出忽略更改 wq儲存並退出 搞這玩意的時候最好確定你有許可權動這個檔案,要不費勁弄完,就笑了。