主頁 >  其他 > docker深入學習

docker深入學習

2020-09-13 13:34:51 其他

docker深入學習

一、容器的介紹和容器的發展史

為什么要學習容器?

在openstack之后,目前互聯網最火熱的技術莫過于docker容器了,早在2015年,京東技術備戰雙11就是使用了10萬+Docker,這兩年docker更是如日中天,docker只是容器的一種,在學習docker之前,我有必要先了解一下什么是容器?有助于我們更好的了解docker,

什么是容器:

容器是在隔離的環境里面運行的一個行程,這個隔離的環境有自己的系統目錄檔案,有自己的ip地址,主機名等,

也有人稱:容器是一種輕量級虛擬化的技術,

容器相對于kvm虛擬機的優勢:

1:容器能提供接近宿主機的性能,而kvm虛擬機會損害一部分宿主機的性能;

2:同樣硬體配置的宿主機最多能啟動10虛擬機,那么它可以啟動100+容器;

3:啟動一臺kvm虛擬機,可以能需要20秒,啟動一個容器只需要1秒;

4:kvm需要硬體cpu的支持,容器不需要;

linux開機啟動流程:

  • bios開機硬體自檢
  • 根據bios設定的優先啟動項
  • 讀取mbr引導
  • 加載內核
  • 啟動第一個行程/sbin/init
  • 執行系統初始化腳本/etc/rc.d/rc.sysinit
  • 完成系統初始化
  • 運行想要的服務sshd

總結:kvm虛擬機運行一個sshd服務需要完整的開機啟動流程,容器是直接啟動sshd服務,中間的流程全部精簡,(docker共用宿主機內核,)

容器的發展史:

1)chroot技術chroot,即change root directory(更改 root 目錄),在 linux 系統中,系統默認的目錄結構都是以/,即是以根 (root) 開始的,而在使用chroot之后,系統的目錄結構將以指定的位置作為/位置,

2)lxc容器全稱:linux container,通過namespaces 命名空間實作的隔離環境,通過cgroups實作的資源限制,提供類似虛擬機一樣的體驗,

3)docker容器早期的docker容器底層就是呼叫的lxc,后期才換成了自己的libcontainer,

二、lxc容器的安裝和使用

lxc容器的安裝

lxc容器的依賴:
依賴CentOS-Base.repo和epel.repo
rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安裝lxc容器:(Ubuntu上開發的,在Ubuntu上可以直接使用,centos可以直接使用)
yum install lxc-* -y
yum install libcgroup* -y
yum install bridge-utils.x86_64 -y

為lxc容器準備橋接網卡(virsh iface-bridge eth0 br0)

echo 'TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0' >/etc/sysconfig/network-scripts/ifcfg-eth0

echo 'TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=10.0.0.14
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5' >/etc/sysconfig/network-scripts/ifcfg-virbr0

創建并啟動容器

創建lxc容器:
lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images
注意:
Distribution: centos
Release: 6
Architecture: amd64

設定容器的root用戶密碼
chroot /var/lib/lxc/centos6/rootfs passwd

啟動容器:
lxc-start -n centos6

lxc容器的行程:容器中運行的命令,在宿主機中都可以看到推薦使用pstree命令來查看,需安裝yum install psmisc.x86_64 -y,lxc容器的系統目錄檔案:lxc容器的系統目錄檔案在宿主機的某一個目錄下/var/lib/lxc/容器名/rootfs

三、docker的介紹和安裝

Docker是通過內核虛擬化技術(namespaces及cgroups)來提供容器的資源隔離與資源限制,由于Docker通過作業系統層的虛擬化實作隔離(對作業系統的內核有要求),所以Docker容器在運行時,不需要類似虛擬機(VM)額外的作業系統開銷,從而比kvm虛擬機更輕量,docker是一種軟體的打包技術,

docker的理念:

docker的主要目標是"Build,Ship and Run any App,Angwhere",構建,運輸,處處運行,

  • 構建:制作docker鏡像,打包容器的所有系統目錄檔案
  • 運輸:下載docker鏡像
  • 運行:基于docker鏡像提供的rootfs,啟動容器

總結:只要能運行docker容器,那么docker鏡像中已經安裝好的軟體也可以運行,所以說docker是一種軟體的打包技術,

docker的優點:

1:解決了作業系統和軟體運行環境的依賴,

如:nginx openssl

? git openssl(nginx,git 適應不同的openssl的版本,兼容性存在問題)

2:對于開發人員來說,再也不用擔心不會部署開發環境,

3:開發環境,測驗環境和生產環境高度一致,

4:讓用戶體驗產品新特性的又一種思路,

docker的安裝:

yum源配置:
rm -fr  /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
----
上面不可用時候替換備選(阿里源):
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
---
安裝docker-ce:
yum install docker-ce -y

docker的架構

啟動docker
systemctl start docker
systemctl enable docker

docker是一個cs架構:
通過docker version來查看

docker最重要的三大組件:
鏡像,容器,倉庫

四、啟動第一個docker容器

docker容器是一種軟體的打包技術,接下來我們體驗一下
傳統編譯安裝nginx:
    官網下載Nginx原始碼包wget  
    tar解壓原始碼包
    創建Nginx用戶 
    安裝依賴包
    編譯安裝三部曲configure,make,make install
    修改nginx組態檔
    啟動nginx

docker容器
docker run -d -p 80:80  nginx
命令解釋:
run    (創建并運行一個容器)
-d        放在后臺
-p        埠映射
nginx  docker鏡像的名字
為了快速下載鏡像:
配置docker鏡像加速
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

systemctl  restart docker

五、docker鏡像的常用命令

搜索鏡像: docker search

選鏡像的建議:

1,優先考慮官方

2,starts數量多

鏡像獲取:

獲取鏡像:
	docker pull(push)
鏡像加速器:阿里云加速器,daocloud加速器,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com
	
	docker pull centos:6.8(沒有指定版本,默認會下載最新版)
	docker pull daocloud.io/huangzhichong/alpine-cn:latest 

擴展:查詢docker鏡像所有版本https://hub.docker.com/r/library/

docker其他操作:

查看鏡像
	docker images
洗掉鏡像
	docker rmi  例子:docker image rm centos:latest
匯出鏡像
	docker save  例子:docker image save centos > docker-centos7.4.tar.gz
匯入鏡像
	docker load  例子:docker image load -i docker-centos7.4.tar.gz
[root@docker-01 docker]# docker image 
build    history  import   inspect  load     ls       prune    pull     push     rm       save     tag 
build:構建鏡像
history:查看構建鏡像的歷史
import:匯入鏡像(棄用)
inspect:查看鏡像的詳細資訊
load:匯入鏡像
ls:查看鏡像
prune:洗掉(已經不用)
pull:下載鏡像
push:上傳鏡像
rm:洗掉鏡像
save:匯出鏡像
tag:鏡像起別名

六、docker容器日常管理

運行一個容器:

docker run -d -p 80:80 nginx:latest
run             (創建并運行一個容器)
-d                  放在后臺
-p                  埠映射
nginx:latest   docker鏡像的名字和版本
還有很多其他的引數

docker run == docker create  + docker start

docker 其他命令

停止容器
	docker stop CONTAINER_ID
殺死容器
	docker kill container_name
查看容器串列
     docker ps
	docker ps –a 
洗掉容器
	docker rm
批量洗掉容器
    docker rm -f `docker ps -a -q`
    
[root@docker-01 docker]# docker container 
attach   cp       diff     export   kill     ls       port     rename   rm       start    stop     unpause  wait
commit   create   exec     inspect  logs     pause    prune    restart  run      stats    top      update   

docker的run的擴展

docker run -it --name centos6 centos:6.8 /bin/bash
-it             分配互動式的終端
--name     指定容器的名字
/bin/sh      覆寫容器的初始命令

--cpus       指定cpu的數量
--memory  限定記憶體的大小
-h              指定容器的主機名

進入容器的方法

進入容器的目的:排錯,除錯

進入容器的方法:
	docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
	例子:	(使用不同的終端vty)
    docker exec -it  容器id或容器名字 /bin/bash

	docker attach [OPTIONS] CONTAINER
	例子:(使用相同的終端vty)
	docker attach  容器id或容器名字
	
	nsenter(安裝yum install -y util-linux 棄用)

容器的核心理念

docker的本質是:在隔離的環境運行的一個行程

所以:docker容器內的第一個行程必須一直處于前臺運行的狀態(必須夯住),否則這個容器,就會處于退出狀態!
tail -f(-F)

七、docker容器網路訪問

運行容器為什么要使用埠映射?

默認,情況下,容器使用的ip是172.17.0.0/16網段的,外界的用戶只能訪問宿主機的10.0.0.0/24網段,無法訪問172.17.0.0/16網段,我們運行容器的目的:是希望運行在容器中的服務,能夠被外界訪問,這里就涉及到了外網10.0.0.0/24到容器內網172.17.0.0/16網段的轉換,所以需要做埠映射,

docker運行容器埠映射的方法

指定映射(docker 自動添加一條iptables規則實作埠映射)
	-p hostPort:containerPort
	-p ip:hostPort:containerPort 
	-p ip::containerPort(隨機埠)
	-p hostPort:containerPort:udp
	-p 81:80 -p 443:443 可以指定多個-p

隨機映射
	docker run -P (隨機埠)

docker自動添加iptables的規則

iptables -t nat -L -n

docker 容器的網路原理圖

yum install bridge-utils.x86_64 -y
brctl show (查看容器網橋)
[root@docker-01 ~]# tail -1 /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@docker-01 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@docker-01 ~]# 
默認情況下,net.ipv4.ip_forward=0;開啟容器后自動改為1,但是掛起容器宿主機掛起后又開啟的時候會自動設定為0,導致容器無法訪問,為防止這情況發生,將此配置放在內核組態檔中,

八、docker資料卷存盤

為什么要要使用docker資料卷

資料卷的作用:

1:持久化容器運行程序中產生的資料檔案

2:實作多個容器間的檔案共享,

正常情況下,洗掉容器,容器中所有的檔案也會被洗掉,使用資料卷后,洗掉容器后資料在資料卷中不會被洗掉,

常見的docker資料卷命令

創建一個資料卷
    docker volume create
查看資料卷串列
    docker volume ls
洗掉一個資料卷
    docker volume rm
查看一個資料卷的屬性
    docker volume inspect

資料卷應用:

docker run -d -p 80:80 -v oldboy:/usr/share/nginx/html nginx:latest

根據命令查看容器位置:[root@docker-01 ~]# docker volume inspect oldboy

cd /var/lib/docker/volumes/oldboy/_data/
rm -f *
wget https://www.qstack.com.cn/xiaoniaofeifei.zip
unzip xiaoniaofeifei.zip

docker run -d -p 81:80 -v oldboy:/usr/share/nginx/html nginx:latest
docker run -d -p 82:80 -v oldboy:/usr/share/nginx/html nginx:latest 

將宿主機的目錄掛載到容器中

cd /opt
mkdir xiaoniao
cd xiaoniao/
wget https://www.qstack.com.cn/xiaoniaofeifei.zip
unzip xiaoniaofeifei.zip 

#重點
docker run -d -p 83:80 -v /opt/xiaoniao:/usr/share/nginx/html nginx:latest

九、手動制作docker鏡像

制作docker鏡像步驟:

  • 1:啟動容器安裝軟體服務
  • 2:將安裝好服務的容器commit提交為鏡像
  • 3: 啟動新容器來測驗新提交的鏡像

制作支持ssh遠程登陸的docker鏡像

制作docker鏡像步驟:
1:啟動容器安裝軟體服務
docker run -it -p 1023:22 --name oldboy centos:6.9 
######
yum install openssh-server
/etc/init.d/sshd start
passwd 
或者
echo 123456|passwd --stdin root
######

2:將安裝好服務的容器commit提交為鏡像
docker commit oldboy centos6-ssh:v1
3:   啟動新容器來測驗新提交的鏡像
docker run -d -p 2022:22 centos6-ssh:v1  /usr/sbin/sshd -D
/usr/sbin/sshd -D:這個命令可以啟動ssh的同時將容器夯住,

制作支持ssh+httpd雙服務的鏡像

1:啟動容器安裝軟體服務
docker run -it --name oldgirl centos:6.9 
yum install httpd
yum install openssh-server
/etc/init.d/sshd start
passwd 

###容器啟動腳本
vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D
---
或者使用以下這個腳本
[root@dbb708722b6c /]# cat /init.sh 
#!/bin/bash
/etc/init.d/sshd start
/etc/init.d/httpd start
tail -F /var/log/httpd/access-log(可以夯住容器行程)

2:將安裝好服務的容器commit提交為鏡像
docker commit oldgirl centos6-ssh-httpd:v1

3:啟動新容器來測驗新提交的鏡像
docker run -d -p 8080:80 -p 1122:22 centos6-ssh-httpd:v1 /bin/bash /init.sh

十、dockerfile自動構建鏡像

手動docker鏡像的缺點

相對于手動制作的docker鏡像,使用dockerfile構建的鏡像有以下優點:

  • 1:dockerfile只有幾kb,便于傳輸
  • 2:使用dockerfile構建出來的鏡像,在運行容器的時候,不用指定容器的初始命令
  • 3:支持更多的自定義操作

dockerfile常用指令:

? FROM 這個鏡像的媽媽是誰?(指定基礎鏡像)

? MAINTAINER 告訴別人,誰負責養它?(指定維護者資訊,可以沒有)

? RUN 你想讓它干啥(在命令前面加上RUN即可)

? ADD 給它點創業資金(COPY檔案,會自動解壓)

? WORKDIR 我是cd,今天付訓了妝(設定當前作業目錄)

? VOLUME 給它一個存放行李的地方(設定卷,掛載主機目錄)

? EXPOSE 它要打開的門是啥(指定對外的埠)(-P 隨機埠)

? CMD 奔跑吧,兄弟!(指定容器啟動后的要干的事情)(容易被替換)

dockerfile其他指令:

? COPY 復制檔案

? ENV 環境變數

? ENTRYPOINT 容器啟動后執行的命令(無法被替換,啟容器的時候指定的命令,會被當成引數)

dockerfile實戰1:

手動制作docker鏡像步驟:
1:啟動容器安裝軟體服務
docker run -it -p 1022:22 --name oldboy centos:6.9 
######
yum install openssh-server -y
/etc/init.d/sshd start
echo 123456|passwd  --stdin root 
######
2:將安裝好服務的容器commit提交為鏡像
docker commit oldboy centos6-ssh:v1
3:   啟動新容器來測驗新提交的鏡像
docker run -d -p 2022:22 centos6-ssh:v1  /usr/sbin/sshd -D
==============================
dockerfile制作docker鏡像步驟:
1:撰寫dockerfile
vi  dockerfile
FROM  centos:6.9
RUN     yum install openssh-server -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root 
CMD     ["/usr/sbin/sshd","-D"]

2:docker build構建鏡像
docker build -t centos6-ssh:v2  .

3:   啟動新容器來測驗新構建的鏡像
docker run -d -p 1422:22 centos6-ssh:v2

dockerfile實戰2

手動制作支持ssh-http雙服務的docker鏡像
1:啟動容器安裝軟體服務
docker run -it --name oldgirl centos:6.9 
yum install httpd -y
yum install openssh-server -y
/etc/init.d/sshd start
echo 123456|passwd  --stdin root  

###容器啟動腳本
vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

2:將安裝好服務的容器commit提交為鏡像
docker commit oldgirl centos6-ssh-httpd:v1

3:啟動新容器來測驗新提交的鏡像
docker run -d -p 8080:80 -p 1122:22 centos6-ssh-httpd:v1 /bin/bash /init.sh
============================================

dockerfile制作docker鏡像步驟:
1:撰寫dockerfile
FROM  centos:6.9
RUN     yum install openssh-server httpd -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root
ADD      init.sh   /init.sh (將宿主機當前目錄下的init.sh檔案拷貝只容器的根目錄下)
CMD     [“/bin/bash",“/init.sh"]
###容器啟動腳本
vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

2:docker build構建鏡像
docker build -t centos6-ssh-httpd:v2 .

3:啟動新容器來測驗新提交的鏡像
docker run -d -p 8080:80 -p 2122:22 centos6-ssh-httpd:v2

docker 實戰3

[root@docker-01 centos6_ssh_http]# cat dockerfile 
FROM    centos:6.9
RUN     yum install openssh-server httpd -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root 
ADD     init.sh  /init.sh
EXPOSE  80 22
CMD     ["/bin/bash","/init.sh"]

[root@docker-01 centos6_ssh_http]# cat init.sh 
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

[root@docker-01 centos6_ssh_http]# docker build -t centos6-ssh-httpd:v3 .
[root@docker-01 centos6_ssh_http]# docker run -d -P centos6-ssh-httpd:v3
[root@docker-01 centos6_ssh_http]# docker ps -a -l
[root@docker-01 centos6_ssh_http]# docker exec -it objective_pike  /bin/bash

docker實戰4

[root@docker-01 centos6_ssh_http]# cat dockerfile 
FROM    centos:6.9
RUN     yum install openssh-server httpd -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root 
ADD     init.sh  /init.sh
EXPOSE  80 22
WORKDIR /root
CMD     ["/bin/bash","/init.sh"]

[root@docker-01 centos6_ssh_http]# docker build -t centos6-ssh-httpd:v5 .
[root@docker-01 centos6_ssh_http]# docker run -d -P centos6-ssh-httpd:v5

[root@docker-01 centos6_ssh_http]# docker ps -a -l
[root@docker-01 centos6_ssh_http]# docker exec -it pensive_tesla /bin/bash
[root@23b7958b721e ~]# pwd
/root

docker 容器實戰5

[root@docker-01 centos6_ssh_http]# cat dockerfile 
FROM    centos:6.9
RUN     yum install openssh-server httpd -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root 
ADD     init.sh  /init.sh
EXPOSE  80 22
WORKDIR /root
ENV     SSH_PASSWD=123456
CMD     ["/bin/bash","/init.sh"]

[root@docker-01 centos6_ssh_http]# cat init.sh 
#!/bin/bash
echo $SSH_PASSWD|passwd --stdin root
/etc/init.d/httpd start
/usr/sbin/sshd -D
[root@docker-01 centos6_ssh_http]# docker build -t centos6-ssh-httpd:v6 .
[root@docker-01 centos6_ssh_http]# docker run --env "SSH_PASSWD=oldboy123" -d -P centos6-ssh-httpd:v6
[root@docker-01 centos6_ssh_http]# docker ps -a -l
[root@docker-01 centos6_ssh_http]# ssh [email protected] -p 32779

docker 容器實戰6

[root@docker-01 centos6_ssh_http]# cat dockerfile 
FROM    centos:6.9
RUN     yum install openssh-server httpd -y
RUN     /etc/init.d/sshd start
RUN     echo 123456|passwd --stdin root 
ADD     init.sh  /init.sh
EXPOSE  80 22
WORKDIR /root
ENV     SSH_PASSWD=123456
ENTRYPOINT  ["/bin/bash","/init.sh"]

[root@docker-01 centos6_ssh_http]# cat init.sh 
#!/bin/bash
echo $SSH_PASSWD|passwd --stdin root
/etc/init.d/httpd start
/usr/sbin/sshd -D
[root@docker-01 centos6_ssh_http]# 

[root@docker-01 centos6_ssh_http]# docker build -t  centos6-ssh-httpd:v7 .
[root@docker-01 centos6_ssh_http]# docker run -d -P centos6-ssh-httpd:v7 sleep 10
[root@docker-01 centos6_ssh_http]# docker ps -a -l
#這里的sleep 10沒有起作用,作用的是的entrypoint 后的執行腳本,

十一、dockerfile構建php專案

把專案封裝成docker鏡像的步驟

把專案封裝成docker鏡像的步驟:
1:先運行一個基礎容器,手動制作docker鏡像
2:撰寫dockerfile,構建鏡像
3:測驗運行
=============
dockerfile常用指令:
	FROM 這個鏡像的媽媽是誰?(指定基礎鏡像)
	MAINTAINER 告訴別人,誰負責養它?(指定維護者資訊,可以沒有)
	RUN 你想讓它干啥(在命令前面加上RUN即可)
	ADD 給它點創業資金(COPY檔案,會自動解壓)
	WORKDIR 我是cd,今天付訓了妝(設定當前作業目錄)
	VOLUME 給它一個存放行李的地方(設定卷,掛載主機目錄)
	EXPOSE 它要打開的門是啥(指定對外的埠)(-P 隨機埠)
	CMD 奔跑吧,兄弟!(指定容器啟動后的要干的事情)(容易被替換)
	
dockerfile其他指令:	
	COPY 復制檔案
	ENV  環境變數
	ENTRYPOINT  容器啟動后執行的命令(無法被替換,啟容器的時候指定的命令,會被當成引數)

手工啟動容器:

[root@docker-01 centos6_ssh_http]# docker rm -f `docker ps -a -q`
[root@docker-01 centos6_ssh_http]# docker run -it -p 80:80 centos:6.9

yum install httpd php php-cli unzip php-gd php-mbstring -y
/etc/init.d/httpd start
 cd /var/www/html/
 curl -o kodexplorer4.40.zip http://static.kodcloud.com/update/download/kodexplorer4.40.zip
 unzip kodexplorer4.40.zip 
 chmod -R 777 /var/www/html/

docker專案制作dockerfile檔案:

curl -o kodexplorer4.40.zip http://static.kodcloud.com/update/download/kodexplorer4.40.zip
[root@docker-01 kop]# ll
total 13580
-rw-r--r-- 1 root root      259 Apr 12 18:27 dockerfile
-rw-r--r-- 1 root root       69 Apr 12 18:29 init.sh
-rw-r--r-- 1 root root 13894810 Apr 12 18:28 kodexplorer4.40.zip

[root@docker-01 kop]# cat dockerfile 
FROM centos:6.9
RUN  yum install httpd php php-cli unzip php-gd php-mbstring -y
WORKDIR /var/www/html
COPY kodexplorer4.40.zip .
RUN  unzip kodexplorer4.40.zip
RUN  chmod -R 777 /var/www/html/
ADD  init.sh  /init.sh
EXPOSE 80 22
CMD  ["/bin/bash","/init.sh"]
[root@docker-01 kop]# cat init.sh 
#!/bin/bash
/etc/init.d/httpd start
tail -F /var/log/http/access_log

[root@docker-01 kop]# docker build -t kod:v1 .

[root@docker-01 kop]# docker run -d -P kod:v1

[root@docker-01 kop]# docker ps -a -l

十二、dockerfile鏡像的分層

docker鏡像的分層

有變化的資料變化的都會被封裝成一層,

鏡像分層的好處

分層的好處:

共享資源,節省資源,

有多個鏡像都從相同的 base 鏡像構建而來,那么 Docker Host 只需在磁盤上保存一份 base 鏡像;同時記憶體中也只需加載一份 base 鏡像,就可以為所有容器服務了,

dockerfile中run的原理:

運行臨時的容器,運行程序中可以另開視窗,docker ps -a -l 查看,docker ps -a -l --no--trunc 查看資訊資訊,

docker 容器的總結

十三、容器間的互聯和應用

docker容器間的互聯

容器間互聯的方法:--link  單方向的
docker run -d --name oldboy  httpd:latest 
docker run -it --link oldboy:web01 centos:6.8
測驗:
curl   oldboy
curl  web01

原理:
cat /etc/hosts

========
[root@docker-01 kop]# docker run -d --name oldboy httpd:latest
[root@docker-01 kop]# docker run -it --link oldboy:web01 centos:6.9
[root@docker-01 ~]# docker inspect oldboy 
[root@006f2289cc04 /]# curl -I 172.17.0.3
[root@006f2289cc04 /]# curl -I oldboy
[root@006f2289cc04 /]# cat /etc/hosts
172.17.0.3	web01 5f2c3eab08d8 oldboy
172.17.0.4	006f2289cc04
[root@006f2289cc04 /]# 

容器間互聯的應用(zabbix安裝實體)

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

配置監控的docker02主機:

[root@docker-02 ~]# rpm -qa | grep docker
docker-ce-19.03.5-3.el7.x86_64
docker-ce-cli-19.03.5-3.el7.x86_64
[root@docker-02 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.5/rhel/7/x86_64/zabbix-agent-5.0.0-0.4alpha4.el7.x86_64.rpm
[root@docker-02 ~]# vim /etc/zabbix/zabbix_agentd.conf 
修改:server=10.0.0.11
[root@docker-02 ~]# systemctl restart zabbix-agent.service 
打開網頁監控docker02

十四、docker私有倉庫registry

運行docker私有倉庫

運行docker私有倉庫:
docker run -d -p 5000:5000 --restart=always  -v /opt/myregistry:/var/lib/registry  registry

當容器啟動完成,私有倉庫就可以使用了

上傳鏡像到私有倉庫

上傳到私有倉庫的步驟:
a:給要上傳的鏡像打tag
10.0.0.12:5000/httpd:latest (手動給它打tag)

b:上傳
docker push 10.0.0.12:5000/httpd:latest 

報錯解決方法:
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries": ["10.0.0.12:5000"]
}
systemctl restart docker

帶base認證的私有倉庫

a:base認證密碼檔案準備
yum install httpd-tools -y
mkdir /opt/registry-var/auth/ -p
htpasswd  -Bbn oldboy 123456  >> /opt/registry-var/auth/htpasswd

b:啟動docker私有倉庫
docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry 

十五、容器編排docker-compose

安裝docker-compose

安裝:
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y python2-pip
pip install docker-compose
或者pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose
檢查是否安裝成功
docker-compose -v
===============================

[root@docker-01 opt]# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    510      0 --:--:--  0:00:01 --:--:--   511
  0 15.4M  100 15.4M    0     0   191k      0  0:01:22  0:01:22 --:--:--  201k
▽root@docker-01 opt]# chmod +x /usr/local/bin/docker-compose
[root@docker-01 opt]# docker-compose -v
docker-compose version 1.24.1, build 4667896b

[root@docker-01 mywordpress]# vim docker-compose.yml
vi docker-compose.yml
version: '3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - web_data:/var/www/html
     ports:
       - "80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
    web_data:

==================

[root@docker-01 mywordpress]# docker-compose up
[root@docker-01 mywordpress]# docker-compose up -d
[root@docker-01 mywordpress]# docker-compose scale wordpress=3(啟動3個容器)
[root@docker-01 mywordpress]# docker ps 

nginx安裝

啟動的3個容器對外提供一個服務:配置nginx反向代理:
[root@docker-02 repositories]# sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

[root@docker-02 repositories]# sudo yum install -y nginx
組態檔:
涉及配置:upstream,location
[root@docker-02 nginx]# cat nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
upstream wordpress {
    server 10.0.0.11:32769;
    server 10.0.0.11:32770;
    server 10.0.0.11:32771;
}
    server {
          listen       80;
          server_name  localhost;
          location / {
              proxy_pass       http://wordpress;
              proxy_set_header Host $host;
              proxy_set_header X-Real-Ip $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }	
  }
}
[root@docker-02 nginx]# 
[root@docker-02 nginx]# systemctl start nginx

在目錄下配置測驗檔案

[root@docker-01 _data]# pwd
/var/lib/docker/volumes/mywordpress_web_data/_data
[root@docker-01 _data]# cat info.php 
<?php phpinfo(); ?>
[root@docker-01 _data]# 
不停重繪頁面發現地址代理地址不同:
http://10.0.0.12/info.php

restart: always---每次重啟docker服務,這個容器也會重啟

docker volume ls

docker network ls

十六、容器的四種網路型別

None:不為容器配置任何網路功能,--net=none

Container:與另一個運行中的容器共享Network Namespace,--net=container:containerID

Host:與主機共享Network Namespace,--net=host

Bridge:Docker設計的NAT網路模型(默認)

[root@docker-01 _data]# docker run -it --network none busybox:latest
檢查網路型別:
docker ps -a -l
docker inspect competent_lewin

----
[root@docker-01 _data]# docker run -d httpd:latest
dbf395b9b91dbc83fdf16535d686a2e3172520022fe9142edbef0461ea11f53c
[root@docker-01 _data]# docker run -it --network container:charming_antonelli 10.0.0.12:5000/centos:6.8 ([root@docker-01 ~]# docker ps -a -l
查出name)
[root@dbf395b9b91d /]# netstat -lntp
[root@docker-01 ~]# docker ps -a -l
CONTAINER ID        IMAGE                       COMMAND             CREATED              STATUS              PORTS               NAMES
f09de4357455        10.0.0.12:5000/centos:6.8   "/bin/bash"         About a minute ago   Up About a minute                       charming_feynman
[root@docker-01 ~]# docker inspect f09de4357455
network為空,

host:
[root@docker-01 _data]# docker run -it --network host 10.0.0.12:5000/centos:6.8
[root@docker-01 ~]# docker inspect (網路型別為host)
[root@docker-01 /]# ifconfig 
跟宿主機共用,

十七、跨主機通信之macvlan

macvlan定義:

macvlan 本身是 linux kernel 模塊,其功能是允許在同一個物理網卡上配置多個 MAC 地址,即多個 interface,每個 interface 可以配置自己的 IP,

macvlan 本質上是一種網卡虛擬化技術

使用macvlan實作容器跨主機通信:

創建macvlan:(兩臺主機都需要)
docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1

測驗:
docker01:
docker run -it --network macvlan_1 --ip=10.0.0.111 busybox:latest /bin/sh
ping 10.0.0.112
docker02:
docker run -it --network macvlan_1 --ip=10.0.0.112 busybox:latest /bin/sh

ping 10.0.0.111

[root@docker-01 _data]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
41476f94745165b43591760a9fe4541d0bf13d1c3498f84bd4daa8aa14fafe0f
[root@docker-01 _data]# docker network ls
NETWORK ID          NAME                  DRIVER              SCOPE
e3f7c473d255        bridge                bridge              local
ed8ed81588ce        host                  host                local
41476f947451        macvlan_1             macvlan             local
e8e53247c464        mywordpress_default   bridge              local
e6e9a262ab5f        none                  null                local
[root@docker-01 _data]# docker run -it --network macvlan_1 --ip=10.0.0.111 busybox:latest /bin/sh



[root@docker-02 nginx]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
2644c26dbacfe64add4eba8a792fcaee04384d08255918590367569fe5058cd9
[root@docker-02 nginx]# 
[root@docker-02 nginx]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e60a56edfd03        bridge              bridge              local
85abdf640cbc        host                host                local
2644c26dbacf        macvlan_1           macvlan             local
daa49e0aaede        none                null                local
[root@docker-02 nginx]# docker run -it --network macvlan_1 --ip=10.0.0.112 busybox:latest /bin/sh

開啟混雜模式:
[root@docker-01 _data]# ip link set eth0 promisc on
[root@docker-01 _data]# ip link show eth0 
相互可以ping通,

十八、跨主機容器間通信之overlay

1)準備作業
docker03上:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

docker01、02上:
vim  /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "cluster-store": "consul://10.0.0.13:8500",
  "cluster-advertise": "10.0.0.11:2376",(本機地址)
  "insecure-registries": ["10.0.0.11:5000"]
}
修改內容:
vi /usr/lib/systemd/sytem/docker.serveice
ExecStart=/usr/bin/dockerd

systemctl daemon-reload
systemctl restart docker
2)創建overlay網路
docker network create -d overlay ol1

3)啟動容器測驗
docker run -it --network ol1 --name oldboy02  busybox:latest /bin/sh
docker run -it --network ol1 --name oldboy01  busybox:latest /bin/sh
默認vxlan的地址不要和宿主機相同,docker network create -d overlay--subnet 172.16.1.0/16 ol4 執行vxlan容器的地址,
用于容器間的通信,另一塊網卡172.18.0.0/24用于外部通信,
相互可以ping通域名和ip地址,

overlay型別原理圖

十九、企業級私有倉庫harbor

harbor-offline-installer-v1.5.1.tgz
鏈接:https://pan.baidu.com/s/1Z9I7zYXSt-8ve3lFT2YCeg 
提取碼:iuqj 

第一步:安裝docker和docker-compose

第二步:下載harbor-offline-installer-v1.5.1.tgz

第三步:上傳到/opt,并解壓

第四步:修改harbor.cfg組態檔
hostname = 10.0.0.11
harbor_admin_password = 123456
docker rm -f `docker ps -a -q`
第五步:執行install.sh
###
./install.sh

訪問harbor:
瀏覽器中輸入:10.0.0.11

推送鏡像:
[root@docker-02 _data]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://registry.docker-cn.com"
  ],
"insecure-registries": ["10.0.0.12:5000"],
"insecure-registries": ["10.0.0.11"]
[root@docker-02 _data]# systemctl restart docker
先登錄:(admin,123456)
docker login 10.0.0.11

[root@docker-02 kop]# docker images 
[root@docker-02 kop]# docker image tag busybox:latest 10.0.0.11/library/busybox:latest(library專案名稱)
[root@docker-02 kop]# docker images 
[root@docker-02 kop]# docker push 10.0.0.11/library/busybox:latest
登錄web頁面檢查,是否推送成功,
下載鏡像:
修改下載主機的信任資訊:
[root@docker-02 _data]# vim /etc/docker/daemon.json 
"insecure-registries": ["10.0.0.11"]
[root@docker-02 _data]# systemctl restart docker
直接復制web頁面,讓后在需要主機上黏貼,

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

標籤:其他

上一篇:請問djongo-html怎么改為html

下一篇:【趙強老師】使用Docker UI

標籤雲
其他(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