1. 程式人生 > >用docker時遇到的錯及解決方法

用docker時遇到的錯及解決方法

1⃣ 用docker起一個mysql的服務,執行以下指令:
docker run --name root -p 3306:3306 -v /tmp/lancmysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

然後檢視docker 的容器:

docker ps

沒有mysql的docker 起來。
然後檢視沒有執行的docker :

docker ps -a

看到mysql的docker。

檢視mysql的container的日誌:

docker logs <container的名字>

這句話檢視的日誌只是docker裡邊的日誌。就是在遠端主機上的日誌,並不能看到自己本機的日誌。

報的錯:
chown: changing ownership of '/var/lib/mysql/': Operation not permitted

這裡寫圖片描述

此時/var/lib/mysql/這個目錄是遠端主機上的目錄。往回看我們執行的第一條指令,我們往遠端主機上對映的目錄是:/tmp/lancmysql:/var/lib/mysql。所以往回倒,相對於在自己本機 /tmp/lancmysq ,這個目錄沒有操作許可權。
因為我的這個/tmp/lancmysqllancmysql目錄是用sudo,建立的。所以沒有操作許可權。把/tmp目錄下的lancmysql刪除,然後刪除已經存在的mysql的container。之後再執行第一句話的時候,執行的時候讓他自己建立lancmysql

目錄。

再執行docker ps,mysql的container就起來了。

這裡寫圖片描述

2⃣ 用docker起一個mysql的服務

用docker 去執行一個程式,比如mysql,只是用mysql的服務,不用在自己本機上下載一個mysql的程式,在自己本機上下載的只是客戶端,我們用docker ,只是用mysql的服務,所以在起mysql的服務的時候,使用者名稱和密碼是自己設定的。

3⃣️ 我當前mysql的本地目錄是/tmp,報下邊這個錯,是不讓在/tmp目錄下操作:

這裡寫圖片描述
更改到別的目錄就可以了。

一直需要使用的檔案不能放在tmp資料夾下
放在/tmp資料夾下,系統會自己刪除,所以在加blockchain-explorer的sql的檔案的時候,起專案的時候,就需要新增一次,換一個資料夾就好了。

4⃣️ 新增docker file sharing,報的錯如下:
ERROR: for user-dashboard  Cannot start service user-dashboard: Mounts denied:
The path /opt/cello/baas
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

意思是在docker 的file Sharing的目錄下沒有/opt/cello/baas這個目錄,只需要把這個路徑新增上就可以:
開啟docker 的UI介面:
進入perferences,然後進入file Sharing ,在下邊新增就行,
這裡寫圖片描述
新增完成之後,點選下方的Apply & Restart,等docker重新啟動就可以。

5⃣️ 報EADDRINUSE的錯

主要日誌中出現這個EADDRINUSE,就是埠被佔用的意思,可檢視埠只佔用情況:

lsof -i:3306

如果不出結果,就輸入:sudo lsof -i:3306
解除端口占用:kill -9 3306