最近電腦經常關機要關好長時間,老是需要長按電源鍵強行關機。也不知道是怎麼回事。
後來檢視關機時的日誌,發現是mysql停不掉。這可鬧心了!怎麼辦?上網搜了搜也沒有找到什麼好的解決辦法。總不能每次關機都要長按電源鍵吧?電腦那麼貴,況且還是我自己的電腦,壞了怎麼辦?
把mysql刪掉?作為一個寫程式碼的,電腦裡也不能不裝mysql啊,天天要用的!裝在虛擬機器裡?這個似乎可行,管你mysql能不能關掉,我把虛擬機器停了就行啊。然後看了看自己電腦上裝了1年多都沒開啟過的virtualbox,尋思著裝在這裡也不合適啊。我電腦硬碟就250G,就為了裝個mysql還要給它分個十幾G的硬碟,再分給它2G的記憶體,不合適不合適。那咋弄呢?扣了扣我的滑鼠,想起來前1年跟風研究的docker,嗯~,就你了。
開始吧mysql安裝進docker
安裝docker
docker的命令我是記不住啦~,上網搜了搜安裝命令,還是很簡單嗎。命令一敲刷刷的就好了。(我的電腦裝的deepin系統)
wget -qO- https://get.docker.com/ | sh
然後需要給它啟動起來,也是一條命令就好啦~
sudo service docker start
docker執行Ubuntu
docker是安裝好了,裡面怎樣跑一個系統呢?只有docker也沒法執行mysql呀!這時候需要下載一個系統映象,這裡用Ubuntu的映象。首先需要搜尋一下有什麼映象可以用下面的命令在市場中搜尋映象。
//命令 sudo docker search ubuntu //結果 NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 9583 [OK] dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 304 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 217 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 179 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 98 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 97 [OK]
這裡搜到了一堆映象,我們選排名第一的那個吧。
現在需要把這個映象下載下來,用下面的命令:
sudo docker pull ubuntu:18.04 //冒號後面的是版本號,不知道的話只能上網查了,不寫的話下載的是最新的
但是。網上說由於一些不可抗力,導致國內下載映象很慢,所以需要新增一個映象。需要在 /etc/docker 的路徑下新增一個檔案:daemon.json,裡面是映象地址:
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
之後重啟。然後執行上面下載映象的命令,然後喝點咖啡等一會~~~。
經過下載之後,我們看一下現在電腦裡有那些映象,使用下面的命令:
sudo docker images //結果 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB
這裡可以看到已經有一個Ubuntu版本是18.04的映象。現在我們需要啟動這個映象。
//命令 sudo docker run -it -d ubuntu:18.04 /bin/bash //解釋 run : 建立一個新的容器並執行一個命令 -it : 以互動模式執行容器,並重新分配一個偽輸入終端,代表-i -t --name ubuntu18: 為容器指定一個名稱 -d : 後臺執行容器 ubuntu:18.04 : 映象名稱 /bin/bash : 執行映象中的程式,沒有的話映象會直接停掉
現在映象是啟動成功了,但是我還要登進去才行呀。這時候需要檢視現在有那些容器在執行,執行:
//命令 sudo docker ps -a //解釋 ps : 列出容器 -a : 顯示所有的容器,包括未執行的 //結果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ce6fa95862c ubuntu:18.04 "/bin/bash" 6 minutes ago Up 6 minutes brave_mendeleev
這裡我們可以看到有一個NAME是brave_mendeleev的容器在執行之中。現在我們進入這個容器。執行下面的命令
//命令 sudo docker exec -it brave_mendeleev /bin/bash //解釋 brave_mendeleev: 容器名稱 exec : 在執行的容器中執行命令 //結果 hjx@hjx-PC:/etc/docker$ sudo docker exec -it brave_mendeleev /bin/bash root@1ce6fa95862c:/#
這樣我們就成功的登入到這個映象為ubuntu18.04版本的容器裡面了。現在我們就可以在裡面安裝mysql啦~
ubuntu容器中安裝mysql
安裝mysql我自己喜歡直接用 apt安裝。我在這裡直接輸入:
apt install mysql-server-5.7
後發現在容器中也是可以安裝成功的。安裝成功後,我們需要將容器中的mysql埠繫結到自己主機的3306埠上。這裡的步驟是:
1:停掉容器(不停掉也行)
//停止容器 sudo docker stop brave_mendeleev //解釋 stop : 容器生命週期管理命令,一共有下面命令構成: start : 啟動容器 stop : 停止容器 restart : 重啟容器
2:將安裝好mysql的容器提交為一個新的映象
//命令 sudo docker commit brave_mendeleev ub/mysql //解釋 commit : 從容器建立一個新的映象 ub/mysql : 新的映象名稱
3:並繫結埠並啟動新的映象
額。。。這裡玩崩了。。。沒有弄成。/(ㄒoㄒ)/~~ 我決定在啟動ubuntu映象的時候就繫結一下3306埠,然後在重新執行上面的操作。 經過漫長的操作。在刪除了原有容器,重新繫結3306埠啟動,登入容器,安裝mysql後,完美的安裝並執行成功。
更簡單的方法
恩,直接搜尋映象mysql,然後啟動就好了???
//下載mysql5.7映象 sudo docker pull mysql:5.7 //繫結3306埠啟動 sudo docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 //解釋 -e MYSQL_ROOT_PASSWORD=123456 : 初始化 root 使用者的密碼, 之後還有其他的一堆引數,這裡我用不到,就不寫啦
完
拜拜~~