導航
[深入01] 執行上下文
[深入02] 原型鏈
[深入03] 繼承
[深入04] 事件迴圈
[深入05] 柯里化 偏函式 函式記憶
[深入06] 隱式轉換 和 運算子
[深入07] 瀏覽器快取機制(http快取機制)
[深入08] 前端安全
[深入09] 深淺拷貝
[深入10] Debounce Throttle
[深入11] 前端路由
[深入12] 前端模組化
[深入13] 觀察者模式 釋出訂閱模式 雙向資料繫結
[深入14] canvas
[深入15] webSocket
[深入16] webpack
[深入17] http 和 https
[深入18] CSS-interview
[react] Hooks
[部署01] Nginx
[部署02] Docker 部署vue專案
[部署03] gitlab-CI
前置知識
一些單詞
prerequisites:先決條件
( meet the prerequisites 滿足前提條件 )
Community:社群的
associated:關聯的
( along with associated dependencies 以及相關的依賴關係 )
exactly:確切的
( "docker build" requires exactly 1 argument 確切的只需要1個引數 )
denied:拒絕
複製程式碼
yum命令
yum [options] [command] [package ...]
- 1.列出所有可更新的軟體清單命令:yum check-update
- 2.更新所有軟體命令:yum update
- 3.僅安裝指定的軟體命令:yum install <package_name>
- yum install -y git
- -y 的作用是如果安裝過程中有詢問,都會自動的選擇yes
- 4.僅更新指定的軟體命令:yum update <package_name>
- 5.列出所有可安裝的軟體清單命令:yum list
- 6.刪除軟體包命令:yum remove <package_name>
- 7.查詢軟體包 命令:yum search
- 8.清除快取命令:
- yum clean packages: 清除快取目錄下的軟體包
- yum clean headers: 清除快取目錄下的 headers
- yum clean oldheaders: 清除快取目錄下舊的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的headers
(1) yum 和 rpm 的關係
- ( rpm ) 只能安裝已經下載到本地機器上的 ( rpm包 )
- ( yum ) 能 ( 線上 - 線上 ) 下載並安裝rpm包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是 rpm 工具所不具備的。
(2) yum 安裝的包的路徑
- 注意檢視時,使用的是 rpm 命令
rpm -qa 查詢所有安裝的rpm包,可以配合grep命令
rpm -ql 列出某個具體包的所有- 檔案路徑
- rpm的預設安裝路徑
/etc 一些設定檔案放置的目錄如
/etc/crontab/usr/bin 一些可執行檔案
/usr/lib /usr/lib64 一些程式使用的動態函式庫
/usr/share/doc 一些基本的軟體使用手冊與幫助文件
/usr/share/man 一些man page檔案
- 如何檢視某個用 yum 安裝的包的具體路徑????
yum 的安裝的包的具體路徑路徑 --- 比如 python
// (1) yum install python ------------------------------- 安裝 python
(2) rpm -qa python -------------------------------------- 查詢具體安裝的 python 包的包名
// python-2.7.5-68.el7.x86_64
(3) rpm -ql python-2.7.5-68.el7.x86_64 ------------------ 列出這個包的所有檔案的路徑
複製程式碼
Docker
Docker三個基本概念 - Container Image Repository
- Container 容器
- Image 映象
- Repository 倉庫
- ( 映象 ) 是Docker執行 ( 容器 ) 的前提, ( 倉庫 ) 是存放映象的場所,( 可見映象 ) 更是 Docker 的核心
docker安裝
- 官網安裝教程 - centOS - Community版 - (社群版免費)
- 本文通過購買的騰訊雲伺服器 centOS 安裝
docker 安裝過程
(1) 如果安裝過Docker,先解除安裝 docker 或者 docker-engine 以及相關的依賴
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
(2) 安裝Docker需要的相關外掛
- yum-utils
- device-mapper-persistent-data
- lvm2
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
(3) 設定穩定的儲存庫 - 倉庫
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
(4) 啟用儲存庫(可選)
$ sudo yum-config-manager --enable docker-ce-nightly
(5) 安裝最新版本的Docker Engine-Community和containerd
$ sudo yum install docker-ce docker-ce-cli containerd.io
- 1. 查詢可用版本:
- yum list docker-ce--show duplicates| sort-r
- 2. 安裝指定版本
- $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- $ sudo yum install docker-ce-[第一步查出來的版本號] docker-ce-cli-[在使用1中的查詢查出cli的版本] containerd.io
(6) 啟動 - 安裝完成後
$ sudo systemctl start docker
(7) 驗證 hello-world
$ sudo docker run hello-world
複製程式碼
docker常用命令
docker相關
docker相關
啟動docker --------------------- systemctl start docker ( ctl是control的縮寫 )
停止docker --------------------- systemctl stop docker
重啟docker --------------------- systemctl restart docker
開機啟動docker ----------------- systemctl enable docker ( !!!!!!! )
檢視docker概要資訊 ------------- docker info
檢視docker幫助文件 ------------- docker --help
檢視docker版本資訊 ------------- docker version
複製程式碼
Image映象相關
Image映象相關
列出所有映象 ---------------------------- docker images
---------------------------- docker images -a 所有映象
---------------------------- docker images -q 只顯示映象ID
搜尋映象 -------------------------------- docker search
---------------------------- docker search -s 40 nginx 列出收藏數字不小於40的nginx映象
下載映象 -------------------------------- docker pull
-------------------------------- docker pull nginx 從遠端倉庫拉取nginx映象
-------------------------------- docker pull nginx:[tag] 拉取指定版本
-------------------------------- docker pull nginx:7 拉去7版本
刪除映象 -------------------------------- docker rmi
-------------------------------- docker rmi nginx 刪除最新的ngix映象,latest
-------------------------------- docker rmi nginx:7 刪除具體的某個映象,需要映象名稱和tag版本號
-------------------------------- docker rmi -f nginx:7 強制刪除某個映象,必須映象已經建立的容器正在執行時使用
-------------------------------- docker rmi -f nginx centos 刪除多個映象,用空格隔開
-------------------------------- docker rmi -f $(docker images -qa) 刪除全部映象
複製程式碼
container容器相關
container容器相關
新建一個容器:
docker run -it --name 容器名稱 映象ID ------------ 來執行一個容器,取別名,互動模式執行,以及分配一個偽終端
-i 以互動模式執行容器
-t 為容器重新分配一個偽輸入終端
--name 為容器指定一個名稱
- d 後臺執行容器,並返回容器ID
列出正在執行的容器 ------------------------------ docker ps
列出所有的容器 ---------------------------------- docker ps -a
列出最近建立的三個容器 -------------------------- docker ps -n 3
列出已經停止的容器 ------------------------------ docker ps -f status=exited
退出容器 ---------------------------------------- exit (或者ctrl+p+q)
進入容器 ---------------------------------------- docker attach 容器ID | 容器名稱
啟動容器 ---------------------------------------- docker start 容器ID | 容器名稱
重啟容器 ---------------------------------------- docker restart 容器ID | 容器名稱
停止容器 ---------------------------------------- docker stop 容器ID | 容器名稱
暴力停止容器 ------------------------------------ docker kill 容器ID | 容器名稱
刪除容器 ---------------------------------------- dokcer rm -f 容器ID | 容器名稱
刪除所有容器 ------------------------------------ docker rm -f $(docker ps -qa) 刪除全部容器
( 注意區分刪除映象 ------------------------------ docker rmi -f $(docker images -qa) 刪除全部映象
( 已經在執行的容器,或者映象建立的容器正在執行想刪除,用 -f 強制刪除 )
複製程式碼
container容器相關 - 進階命令
以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 映象ID
// 不會進入容器,並且會返回容器ID
進入容器,並執行命令 ---------------------- docker exec -it 容器ID | 容器名稱 執行命令
// 進入容器 ------------------------------- docker attach 容器ID | 容器名稱
檢視容器日誌 ------------------------------ docker logs 容器ID | 容器名稱
檢視容器程式 ------------------------------ docker top 容器ID | 容器名稱
宿主機拷貝檔案到容器 ---------------------- docker cp 需要拷貝的檔案或目錄 容器id|名稱 :容器目錄
容器檔案拷貝到宿主機 ---------------------- docker cp 容器id|名稱:檔案目錄|檔案 宿主機目錄
複製程式碼
例下圖:從宿主機中拷貝b.png到容器mycentos的tem檔案中
例下圖:容器拷貝資料夾到宿主機
例下圖:以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 映象ID
docker宿主機和容器之間的埠對映
docker run -it -p 8080:8000 映象ID
-p ------------ 指定埠對映,格式為 ( 主機埠:容器埠 )
// docker run -it mycomcat -p 8080:8000 映象ID ----------- 指定宿主機和容器之間的埠對映
// docker run -di --name 容器名稱 映象ID ----------------- 以守護方式啟動容器
// docker run -it --name 容器名稱 映象ID ------------------ 來執行一個容器,取別名,互動模式執行,以及分配一個偽終端
複製程式碼
docker commit - 提交執行時的容器作為映象
docker commit -a='作者' -m='備註' 執行時的容器ID 新映象名稱
- 提交後,就可以以這個映象建立容器了
docker commit -a='作者' -m='備註' 執行時的容器ID 新映象名稱
複製程式碼
docker push 推送映象到伺服器
- 第一步: 註冊 hub.docker.com/,獲取docker id 和 密碼
- 第二步:命令列登陸 ( docker login )
- 第三步:打標籤 ( docker tag 映象名)
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
- 第三步:docker push 映象名稱 : TAG版本號
docker login
docker tag 映象名 Repository/name:tag
// 這個Repository是在hub上的repository,name也是在那裡設定的,tag名自己取比如1.1.1或者v1等
docker push 映象名:標籤號
----
具體如下
docker tag woow_wu7/tomcat hanxian/woow_wu7:v1
git push hanxian/woow_wu7:v1
複製程式碼
Dockerfile
- Dockerfile語法
語法 | 說明 |
---|---|
FROM | 引用基礎映象 - from |
MAINTAINER | 維護者 - maintainer name<郵箱或者電話> |
LABEL | 對映象的描述,類似於註釋 - label name="xxxx" \ date="xxxx" |
ENV |
設定容器內的環境變數和常量 在其他地方通過 ( $ ) 來引用該環境變數的值 |
WORKDIR |
當前的工作目錄,即是進入容器後,預設所在的當前目錄 |
RUN |
在新建映象時執行的命令 - run 比如 RUN yum -y install Vim 表示用yum來安裝 Vim 包 |
EXPOSE |
暴露埠 - expose |
CMD |
設定容器啟動後預設執行的命令和引數 比如 CMD /bin/bash - 如果docker run的時候指定了其他CMD命令,Dockerfile中的CMD命令被忽略;如果定義了多個CMD,只有最後一個會執行 - CMD ["/bin/echo","hello docker"] |
ENTRYPOINT |
設定容器啟動時執行的命令 |
ADD | ADD除了COPY還有額外解壓功能 |
COPY | 拷貝檔案 |
- dockerfile/dockerfile檔案,具體內容如下
FROM centos
MAINTAINER woow_wu7<woow.wu7@gmail.com>
LABEL name="hanxian"
ENV WORKPATH /
WORKDIR $WORKPATH
RUN yum -y install net-tools
RUN yum -y install vim
CMD /bin/bash
複製程式碼
使用 Dockerfile 構建自定義 centos映象 -- docker build
- 編寫號 Dockerfile 檔案
- 執行命令
docker build -f 路徑/Dockerfile檔名 -t Repository/name:tag.
- 注意最後面的
.
- 注意最後面的
- 構建映象成功後,就可以新建容器了
docker run -it --name 容器名稱 -p 8888:7000 映象ID
- 驗證
因為新增了一些包,所以使用 ifcofnig 或者 vim 看安裝好了沒
2. docker build
在根目錄下執行
docker build -f dockerfile/dockerfile -t hanxian/woow_wu7:v1 .
複製程式碼
3. build成功後,新建容器
docker run -it --name '隨便取' -p 2000:3000 e697c3799626
複製程式碼
4. 驗證
ifconfig
// vim a.txt
// wq
複製程式碼
RUN 和 CMD 和 ENTRYPOINT 三者的區別
- RUN 執行命令並建立新的 ( 映象層 ),即在 ( docker build ) 時執行的命令,RUN 經常用於安裝軟體包。
- CMD 設定 ( 容器 ) 啟動後預設執行的命令及其引數,即在 ( docker run ) 時執行的命令
- 但 CMD 能夠被 docker run 後面跟的命令列引數替換
- 多條CMD命令,則只會執行最後一條
- ENTRYPOINT 配置 ( 容器 ) 啟動時執行的命令。
- 不會被 docker run 的命令列引數指定的指令所覆蓋
- 當CMD和ENTRYPOINT同時存在時,CMD會被當做引數傳遞給ENTRYPOINT
RUN CMD ENTRYPONT區別總結
(1) ( RUN ) 是構建映象時執行的命令 ( docker build ),而 ( CMD和ENTRYPOINT ) 是容器啟動時執行的命令 ( docker run )
(2) 三者都都支援 exec 和 shell 方式
(3) 常用方式:( 單獨的CMD ) 或者 ( 先ENTRYPOINT後面跟一個CMD )
(4) 多個CMD只有最後一個CMD生效
(5) 命令列帶引數,CMD將失效而ENTRYPOINT不受影響
案例1:
CMD ["catalina.sh", "run"]
- "catalina.sh":可執行檔案
- "run":引數
案例2:
ENTRYPOINT ["docker-entrypoint.sh"] // --- ENTRYPOINT 和 CMD 的組合
EXPOSE 6379
CMD ["redis-server"] // ------------------ 因為上面有ENTRYPOINT,所以CMD中的值會作為ENTRYPOINT的引數
複製程式碼
資料卷 volume
為什麼需要資料卷
- 不能在宿主機上很方便的訪問容器中的檔案(資料)
- 外部機器 和 (宿主機中的容器) 不能交換檔案
- 無法在多個容器中共享資料
- 刪除容器,容器中的資料將消失
- 為了解決以上問題,docker中引入了 資料卷 (data volume) 機制
什麼是資料卷
- 資料卷是存在於一個或多個容器中的特定檔案或資料夾,這個檔案或資料夾以獨立於 docker 檔案系統的形式存在於宿主機中
- 在宿主機中的共享的那個檔案或者資料夾叫做資料卷
- 資料卷的特點:其生存週期獨立於容器的生存週期
- 資料卷的掛載點,預設是本機 /var/lib/docker/volumes 下的一個目錄
如何用命令實現資料卷 - 配置資料卷volume
docker run -it --name xxxx -p 9000:8000 -v /root/data:/root/data_container 映象ID
- 表示通過映象ID新建容器,並建立資料卷,並且做埠對映
- 注意點:
- -v aaa:bbb 的冒號之間不能有空格
- -v 後面的路徑必須是絕對路徑
- -v 後面的目錄不存在,則會新建
-v /root/data
也可以是-v ~root/data
案例:
docker run -it --name c2 -v /root/data:/root/data_container -p 3000:4000 470671670cac
(1) 以映象ID ( 470671670cac ) 建立容器
(2) 映象取名:c2
(3) 資料卷 ( 宿主目錄/root/data ) 對應 ( 容器目錄/root/data_container )
(4) 埠對映 3000:4000
(5) -p 是port的意思
複製程式碼
volume 相關命令
命令 | 說明 |
---|---|
docker volume create | 建立資料卷 |
docker volume inspect | 顯示資料卷的詳細資訊 |
docker volume ls | 列出所有的資料卷 |
docker volume prune | 刪除所有未使用的 volumes,並且有 -f 選項 |
docker volume rm | 刪除一個或多個未使用的 volumes,並且有 -f 選項 |
資料卷容器
- 資料卷容器其實就是一個普通的容器,只是用來專門儲存資料的容器
- 主要分為兩步
- 第一步:建立啟動資料卷容器 c3
-v /volume
- 第二步:建立啟動需要共享資料的業務容器 c1 c2
--volumes-from c3
- 第一步:建立啟動資料卷容器 c3
- 詳細過程
(1) 建立資料卷容器 c3
docker run -it --name=c3 -v /volume -p 1000:2000 5e35e350aded /bin/bash
(2) 建立需要共享資料可以做對映的普通容器 c1
docker run -it --name=c1 --volumes-from c3 -p 3000:4000 5e35e350aded /bin/bash
複製程式碼
docker 映象加速器
- 如下圖
- 如何驗證已經修改源成功?
- 執行該命令
cat /etc/docker/daemon.json
驗證registry-mirrors的值
- 執行該命令
Docker 部署 Vue專案 到伺服器
(1) 一個ceontos系統的伺服器
(2) 安裝docker
(3) docker pull nginx:tag ------------------------------------------------ 從遠端repository倉庫拉取nginx映象
// 檢視所有映象 docker images -a
// 搜尋某個映象 docker search -s 40 nginx
// -s 40 表示收藏數不小於40的映象
// 刪除某個映象 docker rmi -f nginx:tag
// 刪除所有映象 docke rmi -f $(docker iamges -qa)
// -rmi 中的 i表示 images 的意思
(4) 在宿主機上新建用來做對映的檔案
/home
|---workspace
|----nginx
|----conf.d
|----html.d
在 cong.d中建立 default.conf 檔案,裡面是nginx的配置
在 html.d中建立 index-test.html 檔案,隨便寫點東西
+++++ default.conf 內容如下 +++++
server {
listen 80;
server_name localhost;
# 原來的配置,匹配根路徑
#location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
#}
# 更該配置,匹配/路徑,修改index.html的名字,用於區分該配置檔案替換了容器中的配置檔案
location / {
root /usr/share/nginx/html;
index index-test.html index.htm;
}
}
+++++ index-test.html +++++
<html>
<body>
<h2>nginx server test and docker data volume test</h2>
</body>
</html>
(5) 新建並執行容器
docker run -d --name=nginx-8080 -p 8080:80 \
-v /home/workspace/nginx/conf.d:/etc/nginx/conf.d \
-v /home/workspace/nginx/html.d:/usr/share/nginx/html \
6678c7c2e56c
// docker run -it --name=nginx-8080 -p 8080:80 映象ID ----------------- 根據映象建立執行容器
// 注意這裡騰訊雲可以訪問不到,因為nginx預設埠是80不要寫成別的埠了
// 關閉容器:docker stop 容器ID | 容器名稱
// 注意:不要加上 /bin/bash 不然啟動後nginx對映的埠不能訪問
nginx ( 容器 ) 內的一些檔案位置:-------------------------- 注意是容器中的nginx,而不是真實的nginx專案路徑
- 日誌位置:/var/log/nginx/
- 配置檔案位置:/etc/nginx/
- 專案位置:/usr/share/nginx/html
(6) 反向代理
1. 在宿主機上新新建conf.d2資料夾
/home
|---wrokspace
|----nginx
|----conf.d
|----html
|----conf.d2
2. 在 conf.d2 新建 default.conf 檔案
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://49.233.215.163:8080;
}
}
這樣訪問 http://49.233.215.163 會被代理到 http://49.233.215.163:8080
(7) 負載均衡
/home
|---workspace
|----nginx
|----conf.d
|----html
|----conf.d2
|----html3
html3檔案新建index-test.html
<html>
<body>
<h2>html - 8081</h2>
</body>
</html>
執行命令
docker run -it --name=payload -p 3000:3000 \
-v /home/workspace/nginx/conf.d3:/etc/nginx/conf.d \
6678c7c2e56c
(8) vue 專案上傳gitlab
(9) 伺服器中安裝 git 拉取前端在gitlab中的專案
1. yum install -y git
// -y 的作用是下載過程中可能會有對話讓你選擇yes還是no, -y就會自動的選擇yes
// yum 是從遠端下載安裝,rpm是從本地下載安裝
// 檢視是否安裝成功可以使用 git version 或者 git help -a 等命令來判斷
2. 下載完git後設定git相關的 user.name user.email ssh-keygen並把ssh key 新增到gitlab賬號中
git config --global user.name "your name"
git config --global user.email "your emial"
ssh-keygen -t rsa -C "your emai"
在gitlab中新增ssh key
在伺服器中新建資料夾用於拉取前端的專案 /home/workspace/project
git clone 下載專案
// 設定好name,email後可以通過 git config --global --list 檢視
// 公鑰的檔案路徑:/root/.ssh/id_rsa
(10) 安裝 node - 用於打包,本地啟動服務,執行 script 命令等
[1]
yum install epel-release
yum install nodejs
// node -v 檢視是否安裝成功,版本
// npm -v 檢視npm版本,注意node自帶npm
// 注意:這樣下載的node版本過低,需要升級!!!!!!!!!!!!!!!!!!!!!!
// 升級方法:https://juejin.im/post/5c09e47ee51d45721d71087d
// npm install npm@latest -g
// sudo npm cache clean -f
// sudo npm install -g n
// sudo n stable
[2] 上的方法放棄了,版本太低,升級麻煩,使用[2]
下載nodejs最新的tar包
wget -c https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
解壓包
tar -xvf node-v12.16.1-linux-x64.tar.xz
部署bin檔案 - 相當於快捷方式
ln -s ~/node-v12.16.1-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v12.16.1-linux-x64/bin/npm /usr/bin/npm
測試
node -v
(11) 打包前端專案
1. 進入在伺服器中下載好的前端專案資料夾 /home/workspace/project/hasaki
2. npm install 安裝前端依賴
3. npm run build
4. 這樣會生成一個資料夾 dist/
(12) 利用docker中的nginx映象新建容器,啟動server
docker run -di --name=deploy-vue -p 7000:80 -v /home/workspace/project/hasaki/dist:/usr/share/nginx/html 6678c7c2e56c
// dist目錄對映到/usr/share/html目錄中
(13) 優化流程 建立deploy.sh 檔案
sh deploy.sh
--------------
ploy.sh檔案如下
--------------
# 拉取程式碼
git pull
# install 依賴
# npm install
# build
npm run build
# 刪除容器
docker rm -f deploy-vue
# 啟動容器
docker run -d --restart=on-failure:5 \
-p 7000:80 \
-v /home/workspace/project/hasaki/dist:/usr/share/nginx/html \
--name=deploy-vue \
6678c7c2e56c
(16)
因為:當使用nginx反向代理時,因為vue中output的publicPath是根路徑導致伺服器中的資源路徑不一樣
所以:資源載入不到報404
解決方法:在vue.config.js中設定 ( publicPath='./' ) 相對路徑
複製程式碼
docker 部署 mysql
(1) docker pull mysql:5.6
(2) cd /home/workspace
(3) mkdir mysql && cd mysql
(4) docker run -id \
-p 3307:3306 \
--name=mysql_c1
-v $PWD/config:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6 \
/bin/bash
// $PWD ---------------------------------------------- 當前目錄的絕對路徑
// $PWD/config:/etc/mysql/conf.d --------------------- 將...../config/my.cnf 對映到 /etc/mysql/conf.d/my.cnf
// $PWD/logs:/logs ----------------------------------- 對映logs目錄
// $PWD/data:/var/lib/mysql -------------------------- 對映data目錄
// -e MYSQL_ROOT_PASSWORD=123456 ---------------------- 初始化root使用者的密碼
// -e 是env的意思,環境變數
// docker run -id -p 3307:3306 --name=mysql_c1 -v $PWD/config:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 /bin/bash
// /bin/bash主要是為了解決容器啟動後馬上關閉的bug
// 注意:第四步執行的目錄是在第三步的目錄中,即 ( /home/workspace/mysql = $PWD )
(5) 進入mqsql容器,並啟動mysql
docker exec -it mysql_c1 /bin/bash
mysql -uroot -p123456
// docker exec -it mysql_c1 /bin/bash ------- 互動式進入mysql_c1容器並執行命令/bin/bash
// mysql -uroot -p123456 -------------------- 使用者名稱root 密碼123456
(6) 當在(5)執行mysql -uroot -p123456時,
1.
報錯:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
原因:沒有啟動mysql
解決辦法:
1. 在mysql的容器中執行 /etc/init.d/mysql start --skip-grant-tables
2. 在執行mysql -uroot -p 回車
3. 回車後讓輸入密碼,此時不輸入任何密碼直接回車
2. 報錯ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決辦法:在mysql的容器中執行 /etc/init.d/mysql start --skip-grant-tables
即:加上--skip-grant-tables
(7)
show database;
create database db1;
show databases;
use db1;
(8) 用Navicate連線docker中的mysql
報錯:通過Navicat for MySQL遠端連線的時候報錯mysql 1130的解決方法
解決資料: https://www.cnblogs.com/happyyangyanghappy/p/10728699.html
解決方法:
mysql -u root -p
mysql;use mysql;
mysql;select 'host' from user where user='root';
mysql;update user set host = '%' where user ='root';
mysql;flush privileges;
mysql;select 'host' from user where user='root';
複製程式碼
centos目錄結構
- /bin:( binary:二進位制的 ) 存放二進位制可執行檔案,常用的命令一般都在這裡
- /etc:存放系統管理和 配置檔案
- /usr:( usr:unix system resources 系統資源 ) 用於存放 系統應用程式
- /root: 超級使用者(系統管理員)的主目錄(特權階級^o^);
- /home:存放所有使用者檔案的根目錄,使用者主目錄的基點,如使用者user的主目錄就是/home/user,可以用~user表示
- /opt: 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡
資料
入門 dockone.io/article/835…
yum命令 www.runoob.com/linux/linux…
centOS安裝Docker教程 juejin.im/post/5dc4d7…
阮一峰 www.ruanyifeng.com/blog/2018/0…
docker常用命令 www.cnblogs.com/DeepInThoug…
rpm檢視某個包的具體安裝路徑 blog.csdn.net/jsloveyou/a…
資料卷 www.imooc.com/article/263…
docker部署vue www.jianshu.com/p/3771b1552…
centos安裝node的兩種方式 blog.csdn.net/lu_embedded…