docker mysql 无权限_Docker 中级篇
來(lái)自:阿里云開發(fā)者社區(qū)
作者:Fortuneteller
鏈接:https://developer.aliyun.com/article/769273
Docker鏡像理解
Docker鏡像是什么
鏡像是一種輕量級(jí)、可執(zhí)行的獨(dú)立軟件包,用來(lái)打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,它包含運(yùn)行某個(gè)軟件所需的所有內(nèi)容,包括代碼、運(yùn)行時(shí)庫(kù)、環(huán)境變量和配置文件
Docker鏡像加載原理
UnionFs:聯(lián)合文件系統(tǒng)
UnionFs(聯(lián)合文件系統(tǒng)):Union文件系統(tǒng)(UnionFs)是一種分層、輕量級(jí)并且高性能的文件系統(tǒng),它支持對(duì)文件系統(tǒng)的修改作為一次提交來(lái)一層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下,UnionFs聯(lián)合文件系統(tǒng)是Docker鏡像的基礎(chǔ),鏡像可以通過(guò)分層來(lái)進(jìn)行繼承,基于基礎(chǔ)鏡像(沒(méi)有父鏡像),可以制作各種具體的應(yīng)用鏡像特性:一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看起來(lái),只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會(huì)把各層文件系統(tǒng)疊加起來(lái),這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄
Docker鏡像加載原理
Docker的鏡像實(shí)際上由一層一層的UnionFs文件系統(tǒng)組成bootfs:主要包含 bootloader和 Kernel,bootloader主要是引導(dǎo)加 kernel,Linux剛啟動(dòng)時(shí)會(huì)加bootfs文件系統(tǒng),在 Docker鏡像的最底層是bootfs,這一層與我們典型的Linux/Unix系統(tǒng)是一樣的,包含bootfs加載器和內(nèi)核,當(dāng)bootfs加載完成之后整個(gè)內(nèi)核就都在內(nèi)存中了,此時(shí)內(nèi)存的使用權(quán)已由 bootfs轉(zhuǎn)交給內(nèi)核,此時(shí)系統(tǒng)也會(huì)卸載bootfs。
rootfs:在 bootfs之上,包含的就是典型 Linux系統(tǒng)中的/dev、/proc、/bin、/etc等標(biāo)準(zhǔn)目錄和文件,rootfs就是各種不同的操作系統(tǒng)發(fā)行版,比如:Ubuntu,、CentOS等等
簡(jiǎn)單理解:
1. 對(duì)于Docker安裝OS來(lái)說(shuō):就是Docker使用了Linux本身的bootfs,只需要安裝自己所需的rootfs。
2. 對(duì)于Docker安裝普通鏡像來(lái)說(shuō):就是Docker本身是分層下載鏡像,所以可以提取出公共層鏡像,進(jìn)行復(fù)用。
Docker鏡像的特點(diǎn)
Docker鏡像都是只讀的,當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫層加載到鏡像的頂部
這一層就是我們通常說(shuō)的容器層,容器之下的都叫鏡像層
Commit鏡像
#?提交本地鏡像?#?-a:作者信息?-m:描述信息?容器ID 鏡像名稱:版本信息
docker?commit?-a="test"?-m="test"?容器id?tomcat01:1.0
Docker容器數(shù)據(jù)卷
什么是容器數(shù)據(jù)卷
容器之間可以有一個(gè)數(shù)據(jù)共享的技術(shù)!Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地!
這就是卷技術(shù)!目錄的掛載,將我們?nèi)萜鲀?nèi)的目錄,掛載到Linux上面!
容器數(shù)據(jù)卷使用命令
#?命令docker?run?-it?-v?主機(jī)目錄:容器內(nèi)目錄?/bin/bash
掛載MySQL數(shù)據(jù)庫(kù)到Liunx宿主機(jī)
#?1.?下載MySQLdocker?pull?mysql
# 2. 啟動(dòng)并掛載?-e:特別注意需要設(shè)置密碼
docker?run?-d?-p?3344:3306?-v?/home/conf:/etc/mysql/conf.d?-v?/home/logs:/logs?-v?/home/data:/var/lib/mysql?-e?MYSQL_ROOT_PASSWORD=123456?mysql
此時(shí)我們使用遠(yuǎn)程連接軟件會(huì)報(bào)錯(cuò)
#?解決報(bào)錯(cuò)#?1.?進(jìn)入容器內(nèi)
docker?exec?-it?容器ID?/bin/bash
#?2.?進(jìn)入MySQL
mysql?-uroot?-p123456
#?3.?授權(quán)
mysql>?GRANT?ALL?ON?*.*?TO?'root'@'%';
# 4. 刷新權(quán)限:
mysql>?flush?privileges;
# 5. 更新加密規(guī)則:
mysql>?ALTER?USER?'root'@'localhost'?IDENTIFIED?BY?'password'?PASSWORD?EXPIRE?NEVER;
# 6. 更新root用戶密碼:
mysql>?ALTER?USER?'root'@'%'?IDENTIFIED?WITH?mysql_native_password?BY?'123456';
# 7. 刷新權(quán)限:
mysql>?flush?privileges;
具名和匿名掛載
-v?容器內(nèi)路徑??????????#?匿名掛載-v?卷名:容器內(nèi)路徑?????????#?具名掛載
-v?宿主機(jī)路徑:容器內(nèi)路徑?#?指定路徑掛載
Docker容器內(nèi)的卷,在沒(méi)有指定目錄的情況下都在/var/lib/docker/volumes/xxx/_data下
拓展:綁定權(quán)限
#?通過(guò)?-v 容器內(nèi)路徑:ro rw 改變讀寫權(quán)限ro?#?readonly?只讀
rw?#?readwrite?可讀可寫
docker?run?-d?nginx01?-v?nginxdemo:/etc/nginx:ro?nginx
docker?run?-d?nginx01?-v?nginxdemo:/etc/nginx:rw?nginx
# ro:只要看到ro就說(shuō)明這個(gè)路徑只能通過(guò)宿主機(jī)來(lái)操作,容器內(nèi)部是無(wú)法操作
數(shù)據(jù)卷容器掛載
目的:實(shí)現(xiàn)多個(gè)容器間的數(shù)據(jù)同步(多個(gè)MySQL間共享數(shù)據(jù))
#?使用?--volumes-from?容器名稱?此命令實(shí)現(xiàn)數(shù)據(jù)卷容器掛載docker?run?-d?--name?mysql02?-p?3345:3306?--volumes-from?mysql01?-e?MYSQL_ROOT_PASSWORD=123456?mysql
DockerFile
DockerFile是用來(lái)構(gòu)建Docker鏡像的文件(命令參數(shù)腳本)
DockerFile構(gòu)建指令
FROM????????????????#?基礎(chǔ)鏡像,一切從這里開始構(gòu)建MAINTAINER?????????????#?鏡像是誰(shuí)寫的,?姓名+郵箱
RUN????????????????????#?鏡像構(gòu)建的時(shí)候需要運(yùn)行的命令
ADD????????????????????#?步驟,tomcat鏡像,這個(gè)tomcat壓縮包!添加內(nèi)容?添加同目錄
WORKDIR????????????????#?鏡像的工作目錄
VOLUME????????????????#?掛載的目錄
EXPOSE????????????????#?保留端口配置
CMD????????????????????#?指定這個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,只有最后一個(gè)會(huì)生效,可被替代
ENTRYPOINT????????????#?指定這個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,可以追加命令
COPY????????????????#?類似ADD,將我們文件拷貝到鏡像中
ENV????????????????????#?構(gòu)建的時(shí)候設(shè)置環(huán)境變量!
創(chuàng)建一個(gè)自己的CentOS鏡像
- 創(chuàng)建DockerFile
- 編寫DockerFile
MAINTAINER?MT<1746344046@qq.com>
ENV?MYPATH?/usr/local
WORKEDIR?$MYPATH
RUN?yum?-y?install?vim
EXPOSE?80
CMD?/bin/bash
- 構(gòu)建自己的鏡像
- 查看鏡像生成歷史
創(chuàng)建Tomcat鏡像
1.準(zhǔn)備鏡像文件:Tomcat和JDK的壓縮包
2.編寫DockerFile
FROM?centosMAINTAINER?fortuneteller<1746344046@qq.com>
COPY?README.txt?/usr/local/README.txt
ADD?jdk-8u251-linux-x64.tar.gz?/usr/local
ADD?apache-tomcat-9.0.35.tar.gz?/usr/local
RUN?yum?-y?install?vim
ENV?MYPATH?/usr/local
WORKDIR?$MYPATH
ENV?JAVA_HOME?/usr/local/jdk1.8.0_251
ENV?CLASSPATH?$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV?CATALINA_HOME?/usr/local/apache-tomcat-9.0.35
ENV?CATALINA_BASH?/usr/local/apache-toacat-9.0.35
ENV?PATH?$PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE?8080
CMD?["/usr/local/apache-tomcat-9.0.35/bin/catalina.sh",?"run"]
3.打包鏡像
#?這里使用的是Dockerfile來(lái)明白的腳本,所以省略-fdocker?build?-t?mytomcat?.
4.啟動(dòng)鏡像
docker?run?-d?-p?3344:8080?--name?mttomcat?-v?/home/fortuneteller/tomcat/test:/usr/local/apache-tomcat-9.0.35/webapps/test?-v?/home/fortuneteller/tomcat/logs:/usr/local/apache-tomcat-9.0.35/logs?mytomcat5.測(cè)試運(yùn)行
6.在宿主機(jī)的/home/fortuneteller/tomcat/test目錄下創(chuàng)建WEB-INF目錄與mt.jsp
"text/html;charset=UTF-8"?language="java"?%>????docker
----------welcome------------
"這是一個(gè)測(cè)試頁(yè)面"%>
7.在WEB-INF目錄下編寫web.xml文件
<?xml ?version="1.0"?encoding="UTF-8"?>"http://xmlns.jcp.org/xml/ns/javaee"
?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????????xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee?http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
?????????version="3.1">test
8.測(cè)試訪問(wèn)
本地鏡像上傳阿里云
Docker總結(jié)
Docker部署SpringBoot項(xiàng)目
使用Maven構(gòu)建獲得jar包
編寫Dockerfile
COPY?*.jar?/app.jar
CMD?["--server.port=8080"]
EXPOSE?8080
ENTRYPOINT?["java",?"jar",?"app.jar"]
上傳Docker與jar包到Linux服務(wù)器
使用命令獲得鏡像
在瀏覽器輸入:服務(wù)器ip:3344
如果您覺(jué)得這篇文章對(duì)您有點(diǎn)用的話,麻煩您為本文來(lái)個(gè)四連:轉(zhuǎn)發(fā)分享、點(diǎn)贊、點(diǎn)在看、留言,因?yàn)檫@將是我寫作與分享更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!
本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)「m」獲取!
推薦閱讀:
1、10 個(gè)冷門但又非常實(shí)用的 Docker 使用技巧!2、Docker 入門終極指南:邊學(xué)邊用
3、高中生也能讀懂的Docker入門教程
4、Docker 入門看這一篇就夠了!
5、IT運(yùn)維面試問(wèn)題總結(jié)-運(yùn)維工具、開源應(yīng)用(Ansible、Ceph、Docker、Apache、Nginx等)關(guān)注微信公眾號(hào)「杰哥的IT之旅」,后臺(tái)回復(fù)「1024」查看更多內(nèi)容,回復(fù)「加群」備注:地區(qū)-職業(yè)方向-昵稱?即可加入讀者交流群。點(diǎn)個(gè)[在看],是對(duì)杰哥最大的支持!
總結(jié)
以上是生活随笔為你收集整理的docker mysql 无权限_Docker 中级篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python处理文本格式_python
- 下一篇: 快速学python爬虫_Python爬虫