主頁 >  其他 > Docker運維

Docker運維

2020-09-24 10:06:28 其他

docker

前言:

  • 隨著全堆疊互聯網時代的發展,開發模式已經發生了質的飛躍,速度也提升至一個極大值點,對于現代化企業級全堆疊式開發,DevOps模式極大地節省了應用開發之后,服務的部署和上線的流程,
  • 對于一般的應用運行在本地(localhost:port)和Linux/Ubuntu服務器(ip:port)上,由于環境不同,造成了前端與后端打架的問題,大一點的企業還會有中間件團隊和后端爭搶決策中間件的使用,以及DBA和后端爭執分庫分表的情況,資料丟了,快取雪崩,前端界面資料不良,都是后端的鍋,
  • 那么容器技術解決了這一開發痛點:Docker是容器技術(VMContainer)技術的集大成者,把容器技術發揮到了極致;甚至就是說MySQL部署在服務器上,卻能達到一個云資料庫的效果,即使是服務腳本代碼丟了也能跑(因為容器一直都在),這些是鏡像容器技術的膩害之處......優點還有很多,如要體會,請學習!!!
  • 然而,這可能只是個連入門都不到的學習筆記,只能部署一些玩具應用,什么集群,并發都沒有,學生機跑elasticsearch也跑不動,那么想要深入學習Docker請移步至Docker-Compose-Swarm

Docker 快速部署

Windows10安裝不了Docker

Windows10本地版本運行不了,因為必須是企業版或者專業版Windows,而我的Windows10是家庭版和學生版,沒有Hypter-V 無法安裝Docker

我們Windows裝不了,VMware虛擬機跑一下試試,卻發現掛載點磁區爆滿!

解決虛擬機Centos7 掛載點磁區爆滿問題

df -h #查看原因
  • 移動快取
[root@localhost /]# mv /var/cache /home
[root@localhost /]# ln -s /home/cache /var

解決了掛載點問題

  • 阿里云一鍵安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 清快取
yum makecache fast
  • 安裝容器
yum install docker-ce docker-ce-cli containerd.io
  • 啟動
systemctl start docker
  • 查看
docker version
  • 跑起來
sudo docker run hello-world

Docker 學習 MENU

Docker 基礎

  • Docker 概述

  • Docker 安裝

  • Docker 命令

    • 鏡像命令
    • 容器命令
    • 操作命令
    • .....
  • Docker 鏡像

  • 容器資料卷

  • Dockerfile

  • Docker網路原理

  • IDEA整合Docker

Docker 進階

  • Docker Compose
  • Docker Swarm
  • CI/CD Jekins

Docker概述

開發---上線 是兩種不同的環境 ! 需要應用環境和應用配置 !

Docker優點

Docker發布專案 (Redis,MySQL,jdk,ES)的時候 ,專案帶著環境安裝打包成鏡像,然后再運行成單個的容器實體,單個的整體環境,而傳統服務器配置一個應用的環境,不可以跨平臺,Windows最后發布到Linux,全部作業由一人完成

  • 傳統 : 后端開發service , 運維部署環境
  • 現在:一套流程線式的解決方案 Java/Kotlin -- apk/iOS ----發布(應用商店) ---張三使用apk/iOS ---安裝即可使用

Docker 解決了所有的問題 !!!

  • 核心思想:打包裝箱,沙箱機制,互相隔離

壓縮Linux服務器空間,可以部署更大的的mysql集群,redis集群,就是把一大堆MySQL部署到一個服務器上,傳統服務器是做不到的

  • 本質:Docker解區域署上線問題

 

Docker歷史發展

2004年幾個有志的年輕人開辦了 dotCloud 公司 ,做云計算,虛擬化技術生意,

后因為經濟原因,100%開源,發展到今天已經成了,大前端,后端,中間件,運維都要學習的一套解決方案

Docker Hub 和GitHub 一樣 ,是個開源平臺,你可以把你的服務包鏡像push上去開源,也可以pull拉取別人的鏡像直接使用,但是比Github好,服務器安裝Docker直接使用,github拉取代碼包后還得配置環境,順便說一句:我認為DockerHub有一天會聯合Github的成為真正地開源神器,github放代碼可以梳理邏輯以及演算法實作程序,dockerhub看結果可以觀察這個代碼到底能不能實作應用,

Docker作用

點擊查看源網頁

基于虛擬機的技術

DevOps(開發,運維)

  • 為了更快的交付和部署
  • 更快速的升級和縮容
  • 更簡單的系統運維
  • 更高效的資源利用

 

Docker安裝

Docker架構圖

 

  • 可以AliCloud鏡像加速
#查看Centos7 系統內核
uname -r 

查看主機配置

cat /etc/os-release

  • 查看官方幫助檔案

https://docs.docker.com/engine/install/centos/

簡單安裝運行

# 1. 卸載舊版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. 下載安裝包

yum install -y yum-utils

3. 鏡像倉庫地址

#默認國外

yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo

#使用阿里云鏡像地址

yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. 安裝docker docker-ce社區版 ee企業版 最新版

yum install docker-ce docker-ce-cli containerd.io

5. 安裝成功

docker version

6. 啟動docker

systemctl start docker

7. 嘗試啟動hello-world

docker run hello-world

8. 卸載docker 引擎-cli-包

yum remove docker-ce docker-ce-cli containerd.io

9.移除目錄

rm -rf /var/lib/docker

10.重啟docker

systemctl restart docker

阿里云鏡像加速器

僅僅限于有ESC服務器的

到控制臺側邊欄--產品與服務--容器鏡像服務

RAM授權--來到容器鏡像服務控制臺--鏡像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://bxerm4cn.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

docker底層原理

先學習命令

Docker 常用命令

基礎命令

#docker 版本資訊
docker version

docker 系統資訊 包括其中承載的服務資訊

docker info

幫助 不會就查

docker --help

官方檔案

/Docs/reference :https://docs.docker.com/reference/

鏡像命令

 

docker images
docker images --help

@intro

REPOSITORY 倉庫源
TAG 標簽
IMAGE ID id
CREATED 創建時間
SIZE 大小

@opt

-a --all #所有
-q --quiet #只顯示id

操作鏡像

#搜索鏡像
docker search mysql

docker search --help

過濾3000以上starts的app

docker search mysql --filter=STARS=3000

拉取(下載)鏡像

docker 分層次下載 節省記憶體

docker pull mysql [:tag] #可選版本 默認最新 latest

TAG -> latest

一定要docker官方支持的版本 不支持,報錯

洗掉鏡像

docker 會按照層次洗掉

docker rmi [IMAGE ID] -f

遞回洗掉 全部洗掉

docker rmi -f $(docker images -aq)

docker pull(下載)門道很大,檔案系統會深入探索

容器命令

鏡像放在容器中運行,在docker里面裝一個centos7 來玩玩

docker run(運行)門道更大

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU shares (relative weight)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                         Run container in background and print container ID
      --detach-keys string             Override the key sequence for detaching a container
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       Set environment variables
      --env-file list                  Read in a file of environment variables
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                Container host name
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    Keep STDIN open even if not attached
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     Set meta data on a container
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   Memory limit
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container
  -p, --publish list                   Publish a container's port(s) to the host
  -P, --publish-all                    Publish all exposed ports to random ports
      --read-only                      Mount the container's root filesystem as read only
      --restart string                 Restart policy to apply when a container exits (default "no")
      --rm                             Automatically remove the container when it exits
      --runtime string                 Runtime to use for this container
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --sig-proxy                      Proxy received signals to the process (default true)
      --stop-signal string             Signal to stop a container (default "SIGTERM")
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    Bind mount a volume
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container
  • 操作docker
docker pull centos

docker run [param(可選引數)] image

docker run --help

@param

--name "serviceName" # 自己給服務起個名
-d # 后臺運行
-it # 互動方式運行 進入容器查看
-p # -p 8080:8080
-p ip:主機埠:容器埠
-p 主機埠:容器埠
-p 容器埠
容器埠

啟動centos鏡像 并且進入容器

docker run -it centos /bin/bash

正在run

docker ps

曾經有過run和現在run

docker ps -a

@DIY

docker ps -aq /<==>/ docker ps --quiet --all

  • 退出容器
#容器停止并退出
exit 
#容器不停止退出
CTRL + P + Q
  • 洗掉容器
# 洗掉指定容器
docker rm [CONTAINER ID]

遞回洗掉 方式1

docker rm -f $(docker ps -aq)

正在運行強制洗掉

docker rm -f [CONTAINER ID]

遞回洗掉 方式2

docker ps -a -q|xargs docker rm

  • 啟動和停止
#啟動
docker start [CONTAINER ID]

重啟

docker restart [CONTAINER ID]

停止

docker stop [CONTAINER ID]

殺死

docker kill [CONTAINER ID]

改名

docker rename [CONTAINER NAME] [CONTAINER NEW NAME]

其他常見命令

后臺啟動容器

docker run -d centos

后臺啟動的服務,前臺必須先啟動

 

查看日志

#查看日志幫助
docker logs --help

查看某個容器最近100日志

docker logs -f -t --tail 100 [CONTAINER ID]

查看全部日志

docker logs -tf [CONTAINER ID]
-f format
-t timestamps

寫一段shell腳本 向容器服務里面輸入日志

docker run -d centos /bin/sh -c "while true;do echo juminiy;sleep 1;done"

容器內部行程資訊

docker top --help
docker top [CONTAINER ID]

容器內部配置資訊

docker inspect --help

@DIY 看到該服務配置資訊

docker inspect -s [CONTAINER ID|CONTAINER NAME]

進入當前運行的容器

容器可以通過ID或者NAME操作

進入容器方式1:

docker exec -it [CONTAINER ID|NAME] bash

docker exec -it mysqlserver bash

進入容器方式2 :

docker attach --help

進入服務

docker attach [CONTAINER ID|NAME]

CTRL+P+Q # 保存 后臺運行

拷貝檔案:

再容器內部,從docker的centos容器上拷貝檔案到 linux主機中的目錄

docker cp centos8:/home/test.java /home 

 

官方小結

img

 

Docker部署各種服務應用

點擊查看源網頁

 

 

Docker部署NGINX

 

#拉取鏡像
docker pull nginx

運行

docker run -d --name nginx -p 3344:80 nginx

https://where:443 http://where:80

本機發起請求

curl localhost:3344

埠暴露以及防火墻概念

后面我們采用資料卷技術 -v 直接打通外網與內網的連接,可以實作云端容器到本地互聯的功能

 

Docker部署Tomcat

 

#官方寫法 直接拉取 運行 用完即刻洗掉
docker run -it --rm tomcat:9.0

直接拉取運行

docker run --dit --name "miky" -p 3355:8080 tomcat

  • docker tomcat是被閹割版本 webapps 沒有網頁
docker exec -it miky bash
  • 拷貝webapps.dist所有的目錄 到webapp 下就可以訪問
cp -r webapp.dist/* webapps 
  • 記得打開阿里云和bt埠映射要不然訪問不來
#查看docker 記憶體
docker stats

@ tip

Linux命令替換

#清屏
alias cl=clear

在命令別名中,若有空格的話,建議使用雙引號將其括起來

alias pbaidu="ping http://www.baidu.com"

在shell中定義的別名僅僅在當前的shell生命周期中有效,即使是子shell也是無效的

當我們不想使用某一個命令別名的時候,我們只需要使用 unalias 別名 即可完成清除別名的效果

unalias cl

當我們使用alias定義了一些命令字符來完成其他命令的功能時,使用原來功能 \command轉義 沖突就轉義 不沖突的話使用那種方式都可以

永久設定別名 (不推薦)

將設定別名的命令保存到/etc/bash.bashrc檔案末尾中:

  • 我已經alias的命令history總目錄
# 短暫存盤 重啟console失去,斷電失去
alias cl=clear

設定過的別名串列

alias -p

既然常用 我們將他永久寫進bash

vim /etc/bash.bashrc

寫在 {#User specific aliases and functions}下

既然他都說了 ,可以有alias 和 function()

寫完后不能即可生效

還要組態檔

yum install libXScrnSaver

全域可用 解釋 rc run command

vim /root/.bashrc

添加命令后

source /root/.bashrc

  • 我自己創造的命令@DIY
alias dk=docker
alias da="docker ps -a"
alias di="docker images"
alias cl=clear
alias pbd="ping www.baidu.com"

進入容器

alias din="docker exec -it"

eg. docker exec -it [CONTAINER ID|NAME] bash

后臺運行

alias dr="docker run -dit"

eg. docker run -dit --name "setName" -p linuxPort :dockerPort [CONTAIN

ER NAME|ID]

 

 

Docker部署ES/Kibana

個人主機 小主機慎重安裝 非常大 小主機跑起來非常非常卡 因為他是分布式全文搜索引擎

人家都說分布式 ,你心里沒數嗎,冒險試一下

dk run -d --name "es" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

@ linux point

查看Linux系統核心

參考博客

https://blog.csdn.net/qq_31278903/article/details/83146031

# 查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看每個物理CPU中core的個數(即核數)

cat /proc/cpuinfo| grep "cpu cores"| uniq

查看邏輯CPU的個數

cat /proc/cpuinfo| grep "processor"| wc -l

查看CPU資訊(型號)

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

查看內 存資訊

cat /proc/meminfo

es操作成功后趕緊關閉 然后限制記憶體

dk run -d --name "es" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

這次好多了

我們看一看docker使用的記憶體流量和I/O

docker stats

 

埠9200所回傳的json

 

在一個服務開啟時 ,CPU流量波動幅度較大,經過一段時間(30s左右)會穩定

Kibana 連接es:9300

通過內網連接轉發:移步于Docker網路原理

 

可視化管理鏡像

  • portainer

  • Rancher (CI/CD持續集成,持續部署)

    什么是portainer

    Docker 圖形化界面管理 例如bt可以可視化管理linux

    docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker/sock --privileged=true portainer/portainer
    

    用來管理docker,可有可無,,,

 

一些問題tips:

1.埠映射問題

這個位置發現 0.0.0.0:3306->3306 本機的3306埠映射到 docker容器內的3306 所以外部的3306關閉不了

SpringBoot內嵌Tomcat 外部8080也關閉不了

在SpringBoot application.yaml組態檔中寫 的是 外部服務器埠 而內置沒有匹配mysql 外部埠 ,

所以docker 內部mysql映射到了 外部 外部關閉不了 雖然外部打不開....

這種配置有點糟糕......需要改進一下

修復前端一些bug后重新上線 2020.08.27

2.關于分布式的認識

我點擊這個按鈕,前端觸發事件,傳給后端路由,后端開始執行一段代碼,比如發送短信,郵件,那么這個服務在主機的CPU占用率立即到一個波峰,然后回落,在沒有事件時候,仍然是起落的,由于網路不可靠,連接不是常態,所以人多了,用戶多了就要并發,分布,執行緒,但我這個服務沒有分布式,并發,多執行緒,資料庫鎖,雖然是執行緒級別的,但不是多執行緒的,比較辣雞,可以說是個玩具服務,當然我們也不一定一上來就分布式,浪費資源,還沒錢.,當然用戶多了,高并發,分布式不是很重要,是必要的,一定的,網站訪問速度慢會流失客戶.

 

Docker部署MySQL

 

這個比較復雜,重新配置MySQL,見于 /Docker精髓/容器資料卷/MySQL資料掛載

 

 

Docker 鏡像

Docker 鏡像獲得方式

  • 遠程倉庫下載
docker search xxx
docker pull xxx
docker run ...
  • 朋友拷貝給你
  • 自己制作鏡像,寫Dockerfile檔案

Docker鏡像記載原理

UnionFS 聯合檔案系統

docker 檔案記載分層

下載分層,洗掉分層

docker 層次理解

 

可以看到已經存在的level

docker logs : Already exists

比如現在我們有一個服務,這個服務是在docker上的,我現在有加了一個新功能,難么docker會識別我的容器,把容器檔案重復部分舍去,只是留取需要的部分,按照層級累加

docker 鏡像都是只讀的,無法修改,就好比是你打jar后,發現原始碼寫錯了,再運行發現是錯的,無法修改了,只能修改原始碼,CI/CD會徹底解決這一個問題

我突然有一個大膽的想法,我們發現原始碼錯了,在容器運行時進入容器改原始碼,再停止服務,洗掉容器,重新build后會重新編譯,能否達到持續部署效果呢?

我們進入容器在容器里面加檔案,我們把運行好的容器重新commit到自己的本地鏡像倉庫里面 在執行這個容器 .

 

Commit自己的鏡像

@tips

# 遞回
-r 

 

# 提交容器成為一個新的副本
docker commit [CONTAINER ID|NAME] 

和git類似

docker commit -m="commit info" -a="authorName" [BEING PUBLISHED CONTAINER ID|NAME] [TARGERT IMAGE NAME(eg. mytomcat)only have name]

 

發布自己的Tomcat,原生的docker tomcat 沒有web頁面和服務 我們把webapps.dist,放到 webapps下 然后commit我們自己的 鏡像里面

@BUG

發現了瀏覽器的一個驚奇BUG

3344明明是mytomcat 他卻顯示出nginx了瀏覽器快取重繪 再curl一下內網地址就好

不過我曾經是配置了3344為nginx 但是在關閉nginx之后 3344沒人用 我把mytomcat設定為3344 會有快取....

@Tips

Linux命令學習手冊

https://www.linuxcool.com/

Docker精髓

容器資料卷

--------卷的掛載原理

容器之間資料可以共享,將Docker某些容器的資料目錄掛載到主機目錄上,同步資料,即使容器沒了,本地資料還在

使用資料卷進行資料掛載

  • -v bash掛載 volumn

    -v 和 -p 類似

dk run -it -v[localPath]:[dockerPath] -p [localPort]:[dockerPort]

本機可以沒有localPath

#掛載一個centos
docker run -it -v /home/docker-centos:/home centos

查看掛載資訊

docker inspect [CONTAINER ID|NAME]

雙向系結:容器同步本地,本地同步到容器,其實是一個位置,防止刪容器跑路,可以完成本地修改;同步容器

@ Tip

#進入運行容器
dk exec -it [CONTAINER ID|NAME] bash
dk attach [CONTAINER ID|NAME]

MySQL資料掛載

# 配置
-d 后臺運行
-p 埠映射
-v 卷掛載目錄映射
-e 環境配置
--name 容器名

我們掛在一個組態檔/conf目錄,一個資料/data目錄

docker run -d -p 3310:3306
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
--name [setContainerName] [IMAGE ID|NAME]

我們將MySQL重新掛載

 

具名掛載和匿名

匿名掛載 /<==>/ 隨機掛載

# 極速匿名掛載
d run -d -P -v /ect/nginx [IMAGE ID|NAME]

@Defi

-P 埠號 隨機映射

無--name 容器名 系統隨機取得

-v 資料卷只有容器內目錄 本地隨機

已經掛載歷史

# docker 掛載幫助
docker volume --help

查看docker內已經掛載的目錄

docker volume ls

不要匿名掛載 不要匿名掛載 不要匿名掛載 誰都看不懂!!!

查看已經掛載的volume資訊

docker volume inspect [VOLUME NAME]

具名掛載

docker run -d -P --name [setName] -v [namedService]:/etc/xxx [IMAGE ID|NAME]

如何掛載

# 判斷掛載方式

匿名掛載

-v [CONTAINER PATH]

具名掛載

-v [setName]??[CONTAINER PATH]

指定路徑掛載

-v /[LOCAL PATH]??[CONTAINER PATH]

小彩蛋

#改變讀寫權限
# 騷操作 不建議使用
ro 只讀
rw 讀寫

一旦容器啟動設定權限 容器內部權限就定了

ro

docker run -d -P --name [setName] -v [named]:[CONTAINER PATH]:ro [IMAGE NAME|ID]

rw

docker run -d -P --name [setName] -v [named]:[CONTAINER PATH]:rw [IMAGE NAME|ID]

 

初識Dockerfile 進行掛載

Dockerfile是什么

  • Dockerfile 是docker鏡像的構建檔案
  • Dockerfile 是一個腳本,用來執行一段命令,生成一個鏡像

 

基于centos構建一個鏡像

dockerfile1

#從...鏡像
FROM centos

掛載目錄

VOLUME ["v1","v2"]

CMD命令

CMD echo "----end----"

CMD /bin/bash

build構建鏡像

# docker 構建幫助
docker build --help

docker build -f dockerfile1 -t juminiy/centos:1.0 .

多個容器實作資料共享

# 多個容器用一個鏡像
docker run -it --name [another container setName] --volumes-from [prevoius container name] [IMAGE ID|NAME]:[TAG]

@tip

容器啟動時可以沒有 [TAG] 默認是latest 不是lateset要標明

1598680086463

1598680165748

這樣實作了容器互聯,本地掛載,容器打通了,但又是相互隔離的,牛逼!

進入小型系統無映射埠

dk attach centos01
CTRL+P+Q

我們知道最開始 cenos01掛載到 local ,centos02 掛到centos01 ,centos03到02

先停掉centos01,向02里面寫東西 看01,local,03什么反應

無論停掉還是移除容器,都和Linux硬連接一樣,容器沒了,檔案依然在,符合檔案拷貝概念,

 

我的一個想法

一個服務器,Docker部署三個容器,mysql01,mysql02,mysql03

1庫只寫,2,3庫只讀,分庫分表,讀寫分離,先通過掛載打通本地和容器,再通過掛載將資料同步三個容器,還能容災(只限于容器),一個磁盤當然不能做兩個磁盤的事,容器限制mysql IO量

當然是耗記憶體,掛到本地后容器都沒本地檔案還在,容器互通后檔案就像病毒,最后一個沒,所有才沒

DockerFile

--------寫dockerfile檔案

Dockerfile介紹

自己發布鏡像檔案

  1. 寫dockerfile檔案
  2. build
  3. run
  4. push

看dockerhub版本資訊時候,點進去進入github,里面是完整的 dockerfile

我們看一下mysql8.0的 部分dockerfile

 

baseline :

  1. 指令的關鍵字都是大寫的
  2. 從檔案開始到檔案末尾
  3. 每一個命令都是一層鏡像
  4. 每一個鏡像都會提交一個新的鏡像層,并commit

這個dockerfile檔案也是不難寫的!

docker是面向開發的,發布的專案,需要一個dockerfiel檔案Docker 鏡像成為企業交付的必要!

 

Dockerfile構建

 

1598694187651

@Tips

  • 學習方式增加了,百度圖片本身就是個搜索引擎,可以理解為網路爬蟲,提供你需要的圖片,
# 基礎鏡像,開始構建
FROM

維護者資訊

MAINTAINER

跑起

RUN

添加內容

ADD

作業目錄

WORKDIR

掛載目錄位置

VOLUME

暴露埠

EXPOSE

指定容器啟動的命令 替換命令

CMD

只有最后一個會生效 追加命令

ENTRUPOINT

被某些Dockerfile繼承才會觸發運行

ONBUILD

拷貝

COPY

構建時候的環境變數

ENV

 

Dockerhub中99%鏡像都是從 scratch來的,如若不信,請看GitHub的dockerfile原始碼

創建自己的centos

mydockerfile

FROM centos

MAINTAINER juminiy<[email protected]>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

  • 制作鏡像
docker build -f mydockerfile -t mycentos:1.0 .
  • 運行容器
dk run -dit -p 3888:8000 --name "mycentos01" -v /home/mycentos:/home mycentos:1.0
  • 埠沒啥用關了...

 

dockerfile自己制作鏡像作用:官方的配置太低了,我們自己寫在dockerfile里面自己加一些腳本 來創造自己的鏡像

# 查看docker鏡像變更歷史
docker history [CONTAINER ID|NAME] 
# 對于一個image/container來說 ID和name都可以分辨他們,因為他們都是unique的

 

CMD和ENTRYPOINT的區別

CMD構建鏡像后 啟動容器時開始命令

比如我打開了容器 然后運行cmd命令 xxx

把CMD命令寫進centos

在docker run時命令后可追加引數

CMD 只有最后一個有效,把全部的CMD替換

CMD ["lis","-a"]

ENTRYPOINT可無限追加

進階 : Docker構建自己的Tomcat

  1. 上傳 jdk安裝包和tomcat安裝包到linux服務器

 

  1. 撰寫dockerfile檔案 官方命名 Dockerfile build自動尋找

    Dockerfile命名dockerfile檔案build程序自動尋找

    原始

    docker build -f [dockerfileName] -t [TARGET] ...
    

    命名Dockerfile

    docker build -t [TARGET] ...
    

    與Dockerfile同級還要寫一個 readme.txt 來表明鏡像的使用方法 和 github 的README.txt一樣

# 為什么需要centos ?
FROM centos 

MAINTAINER juminiy<[email protected]>

COPY readme.txt /usr/home/readme.txt

解壓jdk

ADD jdk-14.0.2_linux-x64_bin.tar.gz /usr/local

解壓tomcat

ADD apache-tomcat-9.0.37.tar.gz /usr/local

安裝vim編輯器

RUN yum -y install vim

運行環境

ENV MYPATH /usr/local

作業目錄

WORKDIR $MYPATH

設定環境變數

ENV JAVA_HOME /usr/local/jdk-14.0.2
ENV CLASSPATH $JAVA_HOME/bin
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

暴露埠

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.37/bin/logs/catalina.out

從 jdk9 開始環境變數配置就和 1.8不一樣了 沒有/jre了

build鏡像(ONE POINT EXISTS .)

dk build -t diytomcat (-f Dockerfile) .

啟動容器

docker run -d -p 8080:8080 --name "juminiytomcat" -v
/home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v/home/tomcat/logs:/usr/local/apache-tomcat-9.0.37/logs diytomcat

成功!!!

 

 

Docker 網路原理

真實環境

Docker Compose

yaml檔案 幾百個幾千個微服務一鍵啟動

Docker Swam

集群部署

CI/CD Jekins : 流水線模式,企業級別開發上線

-------關于這部分會在Docker進階原理中記錄!!!敬請期待!!!

 

 

Docker實戰

Docker部署SpringBoot-Webapp 微服務上線

步驟

1.package 打成jar包

2.jar包放在Linux云服務器一個目錄下

3.和jar包同級創建目錄

vim Dockerfile
#獲取base 拉取jdk鏡像 image
FROM adoptopenjdk/openjdk14:latest
#類似于執行 linux指令
RUN mkdir /opt/app
#類似于linux copy指令
COPY springsecurity.jar /opt/app/
#對外埠
EXPOSE 8000
#執行命令 java -jar /opt/app/demo-docker.jar
CMD ["java", "-jar", "/opt/app/springsecurity.jar"]

  1. 創建dokcer鏡像
docker build -t springsecurity .
  1. 直接拉取jdk14
  2. 查看鏡像串列
  3. 生成容器
docker run -it -p 8000:8000 springsecurity 
  1. 然后德魯伊 資料源,一直報錯???

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

  1. 修改本地改資料庫時間線
url: jdbc:mysql://cloud-ip:3306/security?&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

失敗原因

1.服務器上的mysql和docker上的mysql 不是一個mysql

進入docker 發現和服務器上MySQL資料庫不一樣

添加庫和表

2.更改Druid資料源時間線 serverTimezone=UTC 或者 Asia/Shanghai

失敗日志:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
 create connection SQLException, url: jdbc:mysql://localhost:3306/security?&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8, errorCode 0, state 08S01
 use mysql;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;

特別注意:在步驟4中配置資料源時,有可能連接不上遠程的docker中的mysql資料庫,需要以下步驟賦權才可以:

安裝的mysql默認其他機器是沒有權限訪問的,需要賦權

1、 docker ps 查看mysql的容器id

2、docker exec -it xxx sh 進入容器終端

3、mysql –u root –p

4、通過navicat遠程連接不上,出現這個原因是mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password.

解決問題方法有兩種,一種是升級navicat驅動,一種是把mysql用戶登錄密碼加密規則還原成mysql_native_password.

這里采用第二種方式 :修改加密規則

5、 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';

其中:root為用戶名,%為允許所有機器訪問,123為新設定的密碼

6、 FLUSH PRIVILEGES;

 

Docker 洗掉操作

1)首先需要停止所有的容器

docker stop $(docker ps -a -q)

2)洗掉所有的容器(只洗掉單個時把后面的變數改為image id即可)

docker rm $(docker ps -a -q)

2、洗掉鏡像

1)查看host中的鏡像

docker images

2)洗掉指定id的鏡像

docker rmi

想要洗掉untagged images,也就是那些id為的image的話可以用

docker rmi $(docker images | grep "^" | awk "{print $3}")

3)洗掉全部的images

docker rmi $(docker images -q)

3、當要洗掉的iamges和其他的鏡像有關聯而無法洗掉時

img

可通過 -f 引數強制洗掉

docker rmi -f $(docker images -q)

移除容器

docker rm 容器id

dokcer容器互聯 url localhost代替為容器名字 ,把快取(docker的垃圾容器和廢棄容器,鏡象)清干凈再重啟mysql

 

docker容器互聯學習檔案

https://yeasy.gitbook.io/docker_practice/network/linking

窮人版SSH -LINUX部署

打開powershell

ssh -p [port] [username]@[ip]

輸入幾次看命

-root-qpmz111222@@@-

 

部署服務上線步驟干貨版

本地操作

  1. 本地測驗要求:介面全部正確,JUnit 全部通過 ,廢棄的標明@Deprecated,本地Windows服務正常

  2. 修改遠程服務埠號,修改檔案存盤目錄,修改資料庫名和資料庫時區,....,總之將Windows本機配置修改為遠程服務器配置

  3. 將JUnit @SpringBoot-Test 全部注掉 或者洗掉

  4. maven - clean 后專案主目錄如下 ,沒有target目錄

  5. build - artifact/all 專案主目錄出現 target

  6. maven - package 專案結構

6.出現 **.jar.original 正確 否則重啟電腦,重復步驟 1-5

遠程服務器

  1. 上傳jar包到遠程Linux指定目錄 ,把jar包名字改成簡短點

    同級目錄下存在 Dockerfile 檔案

#jdk版本 
FROM adoptopenjdk/openjdk14:latest
#虛擬運行目錄 存在 /opt 不存在/opt/aqq
RUN mkdir /opt/aqq
#拷貝到虛擬執行目錄下
COPY los.jar /opt/aqq/
#運行埠號 和los.jar服務組態檔application.yaml中一致
EXPOSE 8081
#虛擬運行命令
CMD ["java", "-jar", "/opt/aqq/los.jar"]

  1. 使用遠程工具連接Linux

我沒錢用的本機 powershell 其實沒啥區別 ,命令敲的好,用啥都一樣,我只是窮而已 !

ssh -p [port] [username]@[ip]
  • 查看docker下的全部容器
docker ps -a
  • 查看docker的全部鏡像
docker images
  • 洗掉不需要的容器
docker rm [CONTAINER ID]
  • 洗掉不要的鏡像
docker rmi [IMAGE ID]

 

發現洗掉不掉正在運行的服務,容器以及鏡像*

  • 強制結束容器
docker rm -f [CONTAINER ID]
  • 結束鏡像
dokcer rm -f [IMAGE ID]

成功!

  1. SQLScript資料庫腳本 建庫,建表,進入docker 沙箱(容器)內資料庫
docker exec -it mysqlserver bash

sql -u[username] -p[password]

exit

exit

  1. 創建docker 服務鏡像 (末尾有一個點) 確定資料庫和docker容器,鏡像干凈后

    到剛才Dockerfile 和jar包的父級目錄下

    創建鏡像

docker build -t [serviceName] .

注冊服務

docker run -dit --name "resp" -p 8081:8081 [IMAGE NAME(serviceName)|ID]
# 后臺運行加引數 -d, --detach (Run container in background and print container ID)
# 就可以不用關閉后再重啟了
# 查看日志可以到達和看console一樣效果 

啟動成功后 CTRL+C 關閉服務

找到 服務IMAGE ID

docker restart [CONTAINER ID]

再次查看所有

docker ps -a 

發現 有兩個埠已經被持續占用

說明服務進行中,一個是MySQL 一個是你的微服務

Docker部署服務完成!!!

sytemctl restart docker

docker 重啟后發現已經部署的服務埠沒了

發現容器,鏡像都在,重啟重啟就好

#mysql
docker restart [MySQL CONTAINER ID]
#los
docker restart [service CONTAINER ID]

部署成功!!!

物聯網IOT

Docker部署emqx

一鍵啟動,服務器小,先關一些服務

docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:latest

18083是個Dashboard后臺控制面板

Dashboard 忘記密碼

進入容器

# 創建 admin 賬號
admins add <Username> <Password> <Tags>         

重置 admin 密碼

admins passwd <Username> <Password>

洗掉 admin 賬號

admins del <Username>

默認賬戶

admin
public

配置emqx

官方檔案

The environment variables which with EMQX_ prefix are mapped to configuration file, . get replaced by __.

Example:

EMQX_LISTENER__SSL__EXTERNAL__ACCEPTORS <--> listener.ssl.external.acceptors
EMQX_MQTT__MAX_PACKET_SIZE              <--> mqtt.max_packet_size

Also the environment variables which with PLATFORM_ prefix are mapped to template string in configuration file.

PLATFORM_ETC_DIR                   <--> {{ platform_etc_dir }}

Non mapped environment variables:

EMQX_NAME
EMQX_HOST

These environment variables will ignore for configuration file.

For example, set mqtt tcp port to 1883

docker run -d --name emqx -e EMQX_LISTENER__TCP__EXTERNAL=1883 -p 18083:18083 -p 1883:1883 emqx/emqx:latest

啟動emqx

emqx start

容器進不去方法

dk exec -it [CONTAINER ID (NOT NAME)]  sh

 

docker run -dit --name emqx -e EMQX_LISTENER__TCP__EXTERNAL=1883 -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

由于是docker內部署所以外部啟動無效 以下命令對于docker內部都無效

Start EMQ X broker in the background

$ emqx start
EMQ X Broker v4.0.0 is started successfully!

systemctl start

$ sudo systemctl start emqx
EMQ X Broker v4.0.0 is started successfully!

service start

$ sudo service emqx start
EMQ X Broker v4.0.0 is started successfully

status可檢測內部容器情況

emqx_ctl status

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/118201.html

標籤:其他

上一篇:lua、python對比學習

下一篇:怎么掃描不在同一個網段的IP地址

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more