容器docker 架構命令案例


文章目錄

  • 前言
  • 一、docker
    • 1.1 為什么有docker
    • 1.2 docker架構
    • 1.3 docker 安裝
    • 1.4 docker中央倉庫
    • 1.5 docker 基本指令
    • 1.6 docker數據卷,掛載
      • 例:nginx 數據卷掛載
      • 例:mysql 本地持久化
    • 1.7 鏡像制作
      • 鏡像結構
      • dockerfile基礎指令
      • 容器生成鏡像
    • 1.8 docker 網絡
    • 1.9 部署案例
      • 前端部署
      • 后端部署


前言

市電子信息產業鏈勞動和技能競賽,以賽促學備戰筆記,因對微服務容器框架不熟,浪費大多時間在找配置文件中.也榮幸獲得三等獎

容器化
在這里插入圖片描述
在這里插入圖片描述


一、docker

考慮podman的生態不足,2024年7月重新整理docker
請參考2019年docker筆記 容器docker簡介及基本命令

1.1 為什么有docker

在這里插入圖片描述

1.2 docker架構

在這里插入圖片描述

1.3 docker 安裝

docker 官網:https://www.docker.com/ 點擊doc文檔
在這里插入圖片描述

菜鳥教程:https://www.runoob.com/docker/centos-docker-install.html

# CentOS 7
# 移除舊版本docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置docker yum源。
sudo yum install -y yum-utils # yum-utils是一個提供額外功能的工具集,#用于管理YUM(Yellowdog Updater, Modified)軟件包管理器。sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
# 可在/etc/yum.repos.d/ 中查看增加的# 安裝 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 啟動& 開機啟動docker; enable + start 二合一
systemctl enable docker --now# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker info 查看使用registy倉庫。
Docker中,默認情況下鏡像和容器的存儲位置是/var/lib/docker。
將默認的存儲路徑修改為新的存儲路徑:
vim /etc/docker/daemon.json。在配置文件中添加以下內容:{“data-root”:”/mnt/docker”}
在這里插入圖片描述

centos 8 兼容按centos7安裝
在這里插入圖片描述

在centos8中,dnf install docker
在這里插入圖片描述

1.4 docker中央倉庫

在這里插入圖片描述

1.docker的官方中央倉庫:這個鏡像是最全的,但是下載速度最慢。
https://hub.docker.com/
2.國內的鏡像網站:網易數帆, daocloud, … http://c.163.com/hub
http://hub.daocloud.io/ 不需要登錄 (推薦使用)

在這里插入圖片描述在這里插入圖片描述

1.5 docker 基本指令

在這里插入圖片描述

我們來看一個案例,以提供感性認識并加深理解。

安裝mysql容器案例,-e參數需到發布鏡像網查看配置文檔。

docker run -itd --name mysql-test -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql
#-i interactive交互,-t tty終端,-d detach
docker run -d --name nginx -p 801:80 nginx:1.14.1

在這里插入圖片描述
在這里插入圖片描述

雖然我們能快速掌握案例,但不應忽視厚積薄發的理念

在這里插入圖片描述

鏡像基本命令

docker pull nginx #拉取鏡像
docker images # 查看鏡像
# 鏡像打包
docker save --help
docker save -o nginx.tar nginx:latest
# 刪鏡像
docker rmi nginx
# 壓縮包加載鏡像
docker load -i /opt/nginx.tar

容器基本命令

#創建容器
docker run -d --name nginx_r -p 801:80 nginx
#查看容器
docker ps -a
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Names}}\t{{.Status}}"
#可在~./bashrc 中使用別名快捷
#容器交互 需要容器中/bin/bash
docker exec -it nginx /bin/bash
# 停容器nginx
docker stop nginx
# 重新啟動容器nginx 
docker start nginx
#查看容器日志
docker logs nginx

1.6 docker數據卷,掛載

由于容器只包含應用程序和其依賴項,它們通常不包含一個完整的開發環境,例如文本編輯器vi或編譯器。因此,如果你需要在容器中編輯文件,你需要使用數據卷(volume)來將主機系統上的文件或目錄掛載到容器中。

在這里插入圖片描述

在這里插入圖片描述

例:nginx 數據卷掛載

#使用docker volume 創建,查看卷
docker volume --help
#!注意刪掉容器,數據卷對應關系依然存在
# 創建run時 使用數據卷
docker run -d --name nginx -p 801:80 -v html:/usr/share/nginx/html nginx
docker run -d --name nginx -p 801:80 -v html:/usr/share/nginx/html -v config:/etc/nginx/  nginx#查看容器卷宿主機路徑
docker volume inspect html
docker volume inspect html configcd /var/lib/docker/volumes/html/_data

在這里插入圖片描述

宿主機目錄和容器目錄掛載,將宿主機目錄改為數據卷名。

-v mysql:/var/lib/mysql # 識別為一個數據卷叫mysql
-v ./mysql:/var/lib/mysql #識別為當前目錄下的mysql

在這里插入圖片描述

例:mysql 本地持久化

官網文檔:https://hub.docker.com/_/mysql查詢鏡像配置

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tagdocker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql

在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述

命令:

#從容器里面拷文件到宿主機
#docker cp testtomcat:/usr/local/tomcat/webapps /opt
#從宿主機拷文件到容器里面
docker cp activity.sql 8300a06b704b:/opt/
#使用source命令數據恢復
mysql -uroot -p123456
>source /opt/activity.sql ;
>exit;exit;
>#刪容器
docker rm mysql -f
# 重新掛載,數據仍然存在
docker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql
#重新掛載,數據仍然存在

1.7 鏡像制作

在這里插入圖片描述

鏡像結構

在這里插入圖片描述

dockerfile基礎指令

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

 docker build -t imag:tag .

容器生成鏡像

docker run -d -p 8081:8081  \
-v /home/xiaotang0711/Desktop/docker/hadoop.jar:/usr/hadoop.jar \
--name springboot java:8u111  \
java -jar /usr/hadoop.jar#或copy 從宿主機到容器
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
# 生成一個新的鏡像
docker commit 4eb13e778da3 centos:7-ssh

1.8 docker 網絡

在這里插入圖片描述
因ip隨機不穩定,通過自建網絡,可以通過容器名連接.

在這里插入圖片描述

#創建網絡
network create lih
#查看網絡
docker network ls
#查看容器網絡
docker inspect 625ec79eee83 |grep IPAddress
#添加網絡到容器
docker network  connect --help
docker network  connect lih 625ec79eee83
#再查看
docker inspect 625ec79eee83 |grep IPAddress#可以創建容器的時候添加網絡

1.9 部署案例

# 生成基礎鏡像
docker load -i nginx.tar
#添加網絡
docker network create lihnet

前端部署

需求:創建一個新的nginx容器,nginx.conf,html 目錄與容器掛載。

#數據卷
#會自動本地生成目錄文件
docker run -d --name nginx --network lihnet  -p 802:80 -v html:/usr/share/nginx/html -v config:/etc/nginx/  nginx
docker volume inspect  html config
#2或目錄掛載
#!注意把賦值的nginx.conf到/home/nginx/html中注意把不存在的文件去掉
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/config:/etc/nginx/  nginx#3或文件對文件推薦使用
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/config/nginx.conf:/etc/nginx/nginx.conf  nginx#4或使用默認配置文件
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html nginxdocker exec -it nginx /bin/bash
#制作鏡像
docker commit 78a96dd818af nignjingx
#重新生成
docker run -d -p 802:80 --name nginx2 --network lihnet nignjingx

dockerfile方式

vim dockerfile
......
# 基礎鏡像使用Nginx
FROM nginx
# 添加時區環境變量,亞洲,上海
ENV TimeZone=Asia/Shanghai
# 將前端dist文件中的內容復制到nginx目錄
COPY dist  /usr/share/nginx/html/
# 用本地的nginx配置文件覆蓋鏡像的Nginx配置
COPY default.conf /etc/nginx/conf.d
# 暴露端口
EXPOSE 80
......

后端部署

應用程序
dockerfile方式

vim dockerfile
.....
FROM java:8
COPY *.jar /app.jar
EXPOSE 8080 #不使用expose指令,則鏡像的用戶無法從dockerfile直接了解到應用默認監聽的端口
ENTRYPOINT ["java","-jar","app.jar"]
......
docker build -t api .
docker run -d --name javahtml -p 8080:8080 --network lihnet api

基礎鏡像java

#或基礎鏡像java生成容器docker run -d -p 8080:8080 -v /opt/depos.jar:/usr/depos.jar --name javajar java java -jar /usr/depos.jar 

mysql

docker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql#mysql 
# 創建用戶和密碼
create user tom@'%' identified by 'ttt'; 
#賦予權限
grant all on *.* to root@'%' identified by '123456';create database shop;
use shop;
source /var/lib/mysql/book.sql;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44582.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44582.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44582.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

宿主機訪問docker容器中的mysql被拒絕

問題&#xff1a; 解決方案&#xff1a; 1.進入docker中的mysql容器 docker exec -it 容器名稱/id /bin/bash 2.登錄用戶 mysql -u root -p 3.進去mysql自帶的管理數據庫mysql use mysql; 4.查詢用戶的訪問權限 SELECT user, host FROM user WHERE userroot;5.發現該用…

繪畫平臺小程序的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;學生管理&#xff0c;講師管理&#xff0c;課程類型管理&#xff0c;課程信息管理&#xff0c;課程購買管理&#xff0c;作業類型管理 開發系統&#xff1a;Windows 架構模式&#xff1a;SSM JDK版本&…

AURORA仿真

AURORA 仿真驗證 定義&#xff1a;AURORA是一種高速串行通信協議&#xff0c;通常用于在數字信號處理系統和其他電子設備之間傳輸數據。它提供了一種高效的方式來傳輸大量數據&#xff0c;通常用于需要高帶寬和低延遲的應用中。AURORA協議通常由Xilinx公司的FPGA器件支持&#…

golang 項目打包部署環境變量設置

最近將 golang 項目打包部署在不同環境&#xff0c;總結一下自己的心得體會&#xff0c;供大家參考。 1、首先要明確自己目標服務器的系統類型(例如 windows 或者Linux) &#xff0c;如果是Linux 還需要注意目標服務器的CPU架構(amd或者arm) 目標服務器的CPU架構可執行命令&…

對Mapper.xml文件進行深入的學習

1. 前言 既上次在Mapper.xml文件出現bug之后&#xff0c;痛改前非&#xff0c;決定吃透Mapper.xml映射文件。 讓我們通過具體的代碼段來進一步理解 MyBatis 的 Mapper XML 文件中的每個組成部分。 <?xml version"1.0" encoding"UTF-8"?> <!…

python 爬取當當網圖書榜

首先查看當當網好評書單頁面&#xff0c;找到翻頁的URL參數 直接用requests請求頁面 resp requests.get(url) 找到想要的信息&#xff0c;使用正則表達式把這些信息提取出來 patternre.compile(list_num.*?(\d).<.*?<img src"(.*?)".*?title"(.*?…

Eel入門還有一些案例

Eel入門還有一些案例 Eel 是一個 Python 庫&#xff0c;它允許 Python 程序通過簡單的 API 與網頁進行交互。它使用 WebSocket 協議來實現 Python 后端和 JavaScript 前端之間的實時通信。下面是關于 Eel 的用法、通信原理和使用場景的一篇博客文章。 Eel的基本原理 Eel的基本原…

針對vue3的render函數添加自定義指令

話不多說 直接上代碼 主要是給h函數設置自定義指令控制 import /styles/reset.css import /styles/global.scss import uno.cssimport { createApp } from vue import App from ./App.vue import { setupRouter } from ./router import { setupStore } from ./store import …

Android studio之編譯提示Could not find :umeng-asms-v1.2.1

1 、問題 Could not determine the dependencies of task :app:compileDebugJavaWithJavac. > Could not resolve all task dependencies for configuration :app:debugCompileClasspath.> Could not find :umeng-asms-v1.2.1:.Required by:project :app> Could not …

FGF14:腦部疾病新潛力靶標

成纖維細胞生長因子14&#xff08;FGF14&#xff09;是FGF11亞家族成員&#xff0c;在神經元的所有基本特性&#xff08;內在放電、興奮性和抑制性神經元的突觸傳遞和可塑性&#xff09;中發揮作用。 &#xff08;數據來源AlphaFold&#xff09; FGF14由247個氨基酸組成&#x…

實戰篇(九):解鎖3D魔方的秘密:用Processing編程實現交互式魔方

解鎖3D魔方的秘密:用Processing編程實現交互式魔方 使用 Processing 創建一個 3D 魔方效果展示1. 安裝 Processing2. 項目結構3. 代碼實現4. 代碼解釋4.1. 初始化魔方4.2. 繪制魔方4.3. 處理鼠標事件4.4. 檢查點擊的面4.5. 旋轉面和最終確定旋轉5. 運行和測試6. 細節解釋6.1. …

【資源調度】2-如何解決資源調度問題?

導讀&#xff1a;本期是全網最全【資源調度】系列推文的第2期(共50期左右)。上期我們在《何為調度&#xff1f;》中&#xff0c;對調度的定義與作用、計劃與調度的關系、調度問題的拆解做了詳細介紹。從本期開始&#xff0c;我們選擇【客服調度】場景作為【資源調度】問題的具象…

51單片機(STC8H8K64U/STC8051U34K64)_RA8889_8080參考代碼(v1.3)

硬件&#xff1a;STC8H8K64U/STC8051U34K64 RA8889開發板 硬件跳線變更為并口8080模式&#xff0c;PS00x&#xff0c;R143&#xff0c;R142不接&#xff0c;R141無關 8080接口電路連接圖&#xff1a; 實物連接圖&#xff1a; RA8889開發板外接MCU連接器之引腳定義&…

IMS架構中的注冊與會話流程:RTPEngine集成及消息路由詳解

目錄 S-CSCF 調用 RTPengine 整體路由 注意 IMS 注冊流程 和 IMS 會話流程 的區別 IMS注冊流程 IMS會話流程(如INVITE請求) 這種設計的原因 P-CSCF 調用 RTPengine S-CSCF 調用 RTPengine 整體路由 UA a生成SDP offer&#xff0c;發送SIP INVITE請求(包含SDP offer)&…

核密度估計KDE和概率密度函數PDF(深入淺出)

目錄 1. 和密度估計&#xff08;KDE&#xff09;核密度估計的基本原理核密度估計的公式核密度估計的應用Python中的KDE實現示例代碼 結果解釋解釋結果 總結 2. 概率密度函數&#xff08;PDF&#xff09;概率密度函數&#xff08;PDF&#xff09;是怎么工作的&#xff1a;用圖畫…

RDNet實戰:使用RDNet實現圖像分類任務(二)

文章目錄 訓練部分導入項目使用的庫設置隨機因子設置全局參數圖像預處理與增強讀取數據設置Loss設置模型設置優化器和學習率調整策略設置混合精度&#xff0c;DP多卡&#xff0c;EMA定義訓練和驗證函數訓練函數驗證函數調用訓練和驗證方法 運行以及結果查看測試完整的代碼 在上…

ubuntu顯卡驅動重啟后失效的解決辦法

寫在前方&#xff1a;ubuntu系統&#xff0c;顯卡重啟后驅動失效&#xff0c;顯卡不可用。網上沖浪之后得以有效解決&#xff0c;以下是解決方案 查看顯卡nvidia-smi&#xff1b;驅動失效消息&#xff1a; (base) rootnode:~# nvidia-smi NVIDIA-SMI has failed because it c…

AI大模型走進汽車車機,智駕將是未來

車機里的AI大模型在汽車行業中的應用越來越廣泛&#xff0c;主要體現在智能座艙和自動駕駛系統的深度融合上。通過將AI大模型應用于車機系統&#xff0c;可以實現更高智能化的人車交互體驗。AI大模型作為人工智能發展的核心引擎&#xff0c;正在成為汽車智能化發展的關鍵之一。…

基于顏色模型和邊緣檢測的火焰識別FPGA實現,包含testbench和matlab驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 將FPGA仿真結果導入到matlab顯示結果&#xff1a; 測試樣本1 測試樣本2 測試樣本3 2.算法運行軟件版本 vivado2019.2 …

MySQL配置數據庫的連接命令

MySQL配置數據庫連接命令 在MySQL中&#xff0c;配置數據庫連接的命令涉及創建用戶、授予權限、配置主從復制等多個方面。以下是常用的命令及其用途&#xff1a; 創建用戶 創建一個新的數據庫用戶并為其設置密碼&#xff1a; CREATE USER usernamehost IDENTIFIED BY passwo…