久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

瀏覽:19日期:2024-11-21 18:19:42

昨天寫項(xiàng)目時(shí)需要用到Mysql的衍生版本percona, 就想用Doker來(lái)安裝.結(jié)果踩了一晚上坑, 今早終于解決. 現(xiàn)記錄在此.這個(gè)坑原因是我對(duì)linux的目錄權(quán)限問(wèn)題不敏感導(dǎo)致的. 我的系統(tǒng)是ubuntu16.04, 運(yùn)行 docker pull percona 拉取鏡像時(shí)一切正常.

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

拉取完后,輸入 docker images查看所有鏡像, 顯示正常:

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

然后我創(chuàng)建容器,命令為(執(zhí)行時(shí)不要有換行):

docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:lates

這個(gè)命令的意思是我創(chuàng)建一個(gè)名為percona的容器, 然后把我本地的/data/mysql-data目錄映射到docker容器中的/var/lib/mysql目錄 并指定3306端口,然后設(shè)數(shù)據(jù)庫(kù)root用戶密碼也為root,最后的percona:latest是指定我上面拉取的版本.

因?yàn)閐ocker容器中的數(shù)據(jù)庫(kù)只是一個(gè)鏡像,可以理解為并不是真實(shí)存在的,映射到我本地目錄的作用就是docker往/var/lib/mysql目錄存儲(chǔ)的數(shù)據(jù)都可以同步存儲(chǔ)到我的本地/data/mysql-data目錄. 這樣保證了數(shù)據(jù)不丟失,而且方便我本地操作.

命令的參數(shù)不了解的可以看下官方文檔或者隨便搜個(gè)docker視頻教程, 都有解釋. 然后我開(kāi)啟此容器, docker start percona. 開(kāi)啟完后查詢所有運(yùn)行中的容器docker ps, 這時(shí)候出問(wèn)題了:

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

為空,即沒(méi)有查到運(yùn)行中的容器... 然后我查了下所有的容器,包括運(yùn)行的和沒(méi)運(yùn)行的的. docker ps -a, 顯示如下:

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

原來(lái)是端口沒(méi)有綁定成功, 所以沒(méi)有運(yùn)行!, 每次運(yùn)行就自動(dòng)exited

這時(shí)我查看了一下docker日志, 輸入命令 docker logs 容器id, 顯示如下:

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

注: 這里的71是我此容器的container_id的開(kāi)頭前兩個(gè)數(shù)字, docker支持這種簡(jiǎn)化寫法.

日志報(bào)錯(cuò)說(shuō)我沒(méi)有對(duì)容器中/var/lib/mysql目錄下的創(chuàng)建和寫權(quán)限.現(xiàn)在找到這個(gè)問(wèn)題原因了, 可是搜了一晚上都沒(méi)有解決, 不得不說(shuō)網(wǎng)上的一些不負(fù)責(zé)任的水貼是真的坑!終于在早上找了解決辦法:即檢查我本地目錄的所有者和docker容器中的/var/lib/mysql目錄的所有者是否為同一個(gè)用戶.

docker run -ti --rm --entrypoint='/bin/bash' percona -c 'whoami && id'

此命令的作用是查看容器的所有者, 顯示為:

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

然后輸入(不能換行):

docker run -ti --rm -v /data/mysql-data:/var/lib/mysql --entrypoint='/bin/bash' percona -c 'ls -la /var/lib/mysql'

此命令的作用是查看映射本地?cái)?shù)據(jù)卷時(shí), 此目錄的擁有者

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

原因就出在這里, 這就是為什么mysql用戶訪問(wèn)docker中的目錄時(shí), 會(huì)報(bào)權(quán)限錯(cuò)誤! 因?yàn)?本地映射目錄的主人是root用戶, 而docker容器中/var/lib/mysql目錄的主人是mysql用戶,uid為999!然后解決方法就是, 把當(dāng)前目錄的擁有者賦值給uid 999即mysql用戶, 再重新啟動(dòng)容器

Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑

問(wèn)題解決了! 浪費(fèi)了一晚上時(shí)間, 不得不說(shuō), linux的權(quán)限控制知識(shí)還要加深!

到此這篇關(guān)于Docker創(chuàng)建容器時(shí)目錄權(quán)限踩坑的文章就介紹到這了,更多相關(guān)Docker創(chuàng)建容器目錄權(quán)限內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Docker
相關(guān)文章:
主站蜘蛛池模板: 金坛市| 和硕县| 阿克| 汾阳市| 阿巴嘎旗| 阿瓦提县| 左云县| 汕头市| 黎川县| 沈丘县| 宁明县| 淮南市| 台东市| 汕头市| 固原市| 遂溪县| 宜州市| 巴马| 盘山县| 惠东县| 纳雍县| 乐清市| 崇礼县| 彝良县| 万荣县| 庆云县| 大同市| 吴忠市| 浑源县| 体育| 阿拉善盟| 凉山| 姚安县| 肥乡县| 武乡县| 湟中县| 天水市| 方山县| 阿拉尔市| 大足县| 光泽县|