当前位置: 首页 > news >正文

第三节 docker基础之---Commit+Dockerfile制作

docker目前镜像的制作两种方法:

1,基于docker Commit制作镜像

2,基于dockerfile制作镜像,Dockerfile 为主流的制作方式

如果不制作镜像删除容器之后则里面配置的文件也随之删除:


[root@docker ~]# docker images  查看本地
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       7         eeb6ee3f44bd   16 months ago   204MB[root@docker ~]# docker run -it centos:7 /bin/bash  进入容器[root@ab18198ba0a3 /]# cd /home/[root@ab18198ba0a3 home]# mkdir xdclass  创建一个目录[root@ab18198ba0a3 home]# yum install net-tools -y  安装执行ifconfig查看ip[root@2b86fd5ea318 home]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 3835  bytes 27628549 (26.3 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3315  bytes 182288 (178.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@2b86fd5ea318 home]#
[root@docker ~]# docker ps  查看运行
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
7d4c97ddb0ba   centos:7   "/bin/bash"   3 minutes ago   Up 2 minutes             busy_banzai[root@docker ~]# docker restart 7d4c97ddb0ba  进行重启
7d4c97ddb0ba
[root@docker ~]#[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
7d4c97ddb0ba   centos:7   "/bin/bash"   6 minutes ago   Up 3 minutes             busy_banzai
[root@docker ~]#
[root@docker ~]#[root@docker ~]# docker rm -f 7d4c97ddb0ba   删除docker
7d4c97ddb0ba[root@docker ~]# docker ps  查看
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES#删除之后重新拉取一个新的则无

1,dockerCommit制作镜像

开启容器创建文档安装net-tools:


[root@docker ~]# docker run -itd centos:7[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
cc5a01178967   centos:7   "/bin/bash"   33 seconds ago   Up 32 seconds             vigorous_pike[root@docker ~]# docker exec -it cc5a01178967 /bin/bash
[root@cc5a01178967 /]#
[root@cc5a01178967 /]#
[root@cc5a01178967 /]# cd /home/
[root@cc5a01178967 home]# mkdir xdclass
[root@cc5a01178967 home]# yum install net-tools -y
[root@cc5a01178967 home]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 2210  bytes 27541329 (26.2 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 2024  bytes 112678 (110.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

进行构建Commint:


[root@docker ~]# docker commit -a 'lyx' -m 'mkdir /home/xdclass net-tools' cc5a01178967 mycentos:v1 sha256:64e6184ab6d4aeeb3c1c1ade6892cfdad76c630efbaec28d2ea800ad9788abfe
commit代表制作成镜像
-a属性表示制作人我写的lyx
-m属性表示这个文件大致内容我则用来保存的是安装net-tools
输入ID
mycentos命名和v1版本[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mycentos     v1        64e6184ab6d4   3 minutes ago   403MB  #这个则是咱们制作成功的
centos       7         eeb6ee3f44bd   16 months ago   204MB
[root@docker ~]#[root@docker ~]# docker ps  查看运行
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
cc5a01178967   centos:7   "/bin/bash"   11 minutes ago   Up 11 minutes             vigorous_pike[root@docker ~]# docker rm -f cc5a01178967  进行删除
cc5a01178967[root@docker ~]# docker ps  查看运行无
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@docker ~]# docker images  查看制作成功的mycentos
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mycentos     v1        64e6184ab6d4   5 minutes ago   403MB
centos       7         eeb6ee3f44bd   16 months ago   204MB[root@docker ~]# docker run -itd mycentos:v1 /bin/bash  进行启动容器
a893d4021f98b4c2294d313b5d5285ad109de173295f6106d5db0de624626f63[root@docker ~]# docker ps  查看运行
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
a893d4021f98   mycentos:v1   "/bin/bash"   6 seconds ago   Up 6 seconds             magical_gould
[root@docker ~]# docker exec -it a893d4021f98 /bin/bash  进入容器[root@a893d4021f98 /]# cd /home/  进入home目录[root@a893d4021f98 home]# ls  查看之前创建的xdclass
xdclass
[root@a893d4021f98 home]# ifconfig 查看网卡是否运行成功
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 8  bytes 656 (656.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@a893d4021f98 home]#

实验:Docker commit构建带sshd服务自定义镜像

查看本地镜像:


[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       7         eeb6ee3f44bd   17 months ago   204MB
[root@docker ~]#

利用centos镜像建立容器,并进入该容器:


[root@docker ~]# docker run -dit --name my-centos1 centos:7
b2cb61f3b58d74c36d753aa907c4e6a1569edd1ade3944ba10b9e9761b8a9556
[root@docker ~]#
[root@docker ~]# docker exec -it my-centos1 /bin/bash
[root@b2cb61f3b58d /]#

net-tools,openssh-server:


[root@b2cb61f3b58d /]# yum -y install openssh-server net-tools

创建ssh所需的目录,并在根目录下创建sshd启动脚本:


[root@b2cb61f3b58d /]# mkdir -pv /var/run/sshd
mkdir: created directory '/var/run/sshd'
[root@b2cb61f3b58d /]#
[root@b2cb61f3b58d /]#
[root@b2cb61f3b58d /]# echo "/usr/sbin/sshd -D" > /auto_sshd.sh
[root@b2cb61f3b58d /]# cat /auto_sshd.sh
/usr/sbin/sshd -D
[root@b2cb61f3b58d /]# chmod +x /auto_sshd.sh
[root@b2cb61f3b58d /]#

修改容器内root的账户密码:


[root@b2cb61f3b58d /]# echo "root:lyx" | chpasswd
[root@b2cb61f3b58d /]# 设置密码为lyx

生成ssh主机密钥文件:

1,生成rsa_key


[root@b2cb61f3b58d /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
SHA256:Hsivc33BCDDF64qWk7K87gWe+BrBUOD75Dlb+WLPeTY root@b2cb61f3b58d
The key's randomart image is:
+---[RSA 2048]----+
|...    o.        |
|..    o .        |
|..     o .       |
|o .  . .o        |
|.o..  o.S. o     |
| ++o. .o... o    |
|o o=.* .o.   .   |
| +..Xo=.oE. .    |
|.+B*..+Bo ..     |
+----[SHA256]-----+
[root@b2cb61f3b58d /]#

2,生成ecdsa_key


[root@b2cb61f3b58d /]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
Generating public/private ecdsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key.
Your public key has been saved in /etc/ssh/ssh_host_ecdsa_key.pub.
The key fingerprint is:
SHA256:0HFmAoFJNpWUJ1fcX7rBOE/ERiySHsN6xxfNAxnqs00 root@b2cb61f3b58d
The key's randomart image is:
+---[ECDSA 256]---+
|   .+===o+=o *=o |
|   .o.+.o*B +.*.+|
|      .+.o * B +.|
|       .. + = B  |
|        S. + E o |
|            = o  |
|           . .   |
|                 |
|                 |
+----[SHA256]-----+
[root@b2cb61f3b58d /]#

3,生成ed25519_key


[root@b2cb61f3b58d /]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
The key fingerprint is:
SHA256:u2MOmiR0BSfUmfGYGtyuRgsVGSFWx7SGB+i66zJj93E root@b2cb61f3b58d
The key's randomart image is:
+--[ED25519 256]--+
|  o+XB=+         |
| ..o.X==         |
| .  = O .        |
|  .. B           |
| .o + . S        |
|.. + o   .       |
| .. =..E.        |
|=. = oo.o.       |
|==. +. oo.       |
+----[SHA256]-----+
[root@b2cb61f3b58d /]#

退出容器,并生成新的Docker镜像:


[root@b2cb61f3b58d /]# exit
exit
[root@docker ~]# docker commit my-centos1 centos_sshd:7.0
sha256:6cfc9c28a7774889f6987cfca6d28a8b8153b3d4265bae40c4ecfe8333c09d00
[root@docker ~]#
[root@docker ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
centos_sshd   7.0       6cfc9c28a777   23 seconds ago   405MB
centos        7         eeb6ee3f44bd   17 months ago    204MB
[root@docker ~]#

启动新的容器,并查看容器是否构建:


[root@docker ~]# docker run -dit --name centos_7.0-1 centos_sshd:7.0
0ec5851688175a9a06a3596513cef8ee1f255455f2a5b7806971dedace852163
[root@docker ~]# docker ps
CONTAINER ID   IMAGE             COMMAND       CREATED          STATUS          PORTS     NAMES
0ec585168817   centos_sshd:7.0   "/bin/bash"   6 seconds ago    Up 6 seconds              centos_7.0-1
b2cb61f3b58d   centos:7          "/bin/bash"   10 minutes ago   Up 10 minutes             my-centos1
[root@docker ~]#

进入容器,查看IP地址,并运行脚本:


[root@0ec585168817 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 8  bytes 656 (656.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@0ec585168817 /]# ./auto_sshd.sh

测试ssh:


[root@docker ~]# ssh root@172.17.0.3
The authenticity of host '172.17.0.3 (172.17.0.3)' can't be established.
ECDSA key fingerprint is SHA256:0HFmAoFJNpWUJ1fcX7rBOE/ERiySHsN6xxfNAxnqs00.
ECDSA key fingerprint is MD5:21:ce:10:d6:f3:53:c4:16:1d:76:cd:05:4e:f9:22:54.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.3' (ECDSA) to the list of known hosts.
root@172.17.0.3's password:  # 输入密码lyx
[root@0ec585168817 ~]#  登录成功

2,dockerfile构建镜像实战

dockerfile文档内容如下:

# this is a dockerfile
FROM centos:7
MAINTAINER LYX 123456@qq.com
RUN echo '正在构建镜像'
WORKDIR /home/xdclass
COPY 123.txt /home/xdclass
RUN yum install net-tools -y

文档详解:

#  注释
FROM    基于哪个镜像
MAINTAINER   注明含义
COPY  复制
ADD  复制文件到容器里面而copy只是单纯复制
而add如果复制一个压缩包进入容器并且解压
WORKDIR   指定一个路径作为工作目录如果路径不存在自定创建
ENV  环境变量
EXPOSE   暴露容器端口给宿主机
RUN  执行后面的命令
ENTRYPOINT  输出在容器启动之后  如写多条只执行最后一条
CMD    输出在容器启动之后   在末尾  可以被覆盖
如执行:docker run mycentos:v1
命令格式:shell命令格式:RUN yum install net-tools -yexec命令格式:['RUN','yum','install','net-tools','-y']
进行构建dockerfile:

[root@docker ~]# docker images   查看原有镜像
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mycentos     v1        64e6184ab6d4   28 minutes ago   403MB
centos       7         eeb6ee3f44bd   16 months ago    204MB[root@docker ~]# vi dockerfile
# this is a dockerfile
FROM centos:7
MAINTAINER LYX 123456@qq.com
RUN echo '正在构建镜像'
WORKDIR /home/xdclass
COPY 123.txt /home/xdclass
RUN yum install net-tools -y
#wq 保存退出[root@docker ~]# docker build -t mycentos:v2 .      那个点.代表当前路径


[root@docker ~]# docker images  进行查看
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mycentos     v2        380079b451ef   5 minutes ago    403MB  #制作完成
mycentos     v1        64e6184ab6d4   38 minutes ago   403MB
centos       7         eeb6ee3f44bd   16 months ago    204MB[root@docker ~]# docker run -it mycentos:v2 /bin/bash  进入v2容器[root@b3bced1b5262 xdclass]# ls  查看是否把123.txt文档拷贝进去
123.txt  # 已经拷贝[root@b3bced1b5262 xdclass]# ifconfig   查看net-tools是否执行成功
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 8  bytes 656 (656.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@b3bced1b5262 xdclass]# exit  退出
exit
[root@docker ~]#

实验:Dockerfile构建带sshd服务的自定义镜像

建立/user/sshd目录,并切换到该目录:


[root@docker ~]# mkdir -p /user/sshd
[root@docker ~]# cd /user/sshd
[root@docker sshd]#

编写Dockerfile文件,注意文件的首字母必须大写。


[root@docker sshd]# cat Dockerfile
FROM centos:7
MAINTAINER lyx lyx@qq.com
RUN yum -y install openssh-server openssh-clients net-tools
RUN echo 'root:lyx' | chpasswd
RUN /usr/sbin/sshd-keygen
EXPOSE 22
CMD /usr/sbin/sshd -D
[root@docker sshd]#

利用docker build命令构建自定义镜像,镜像名为sshd:v1.0。


[root@docker sshd]# docker build -t sshd:v1.0 .

启动容器:


[root@docker sshd]# docker run -dit --name test_sshd sshd:v1.0
3d0879e584d9b55f23db1f6e707e96a489341f8af4f96e5f6c72b57f3bbeaa01
[root@docker sshd]#

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS          PORTS     NAMES
3d0879e584d9   sshd:v1.0   "/bin/sh -c '/usr/sb…"   12 minutes ago   Up 12 minutes   22/tcp    test_sshd
[root@docker ~]#从docker ps –a命令的显示现象可以看到
容器名为test_sshd的容器状态为UP状态,表示容器创建成功,并且正常运行。

进入test_sshd容器,查看IP地址:


[root@docker sshd]# docker exec -it test_sshd /bin/bash
[root@3d0879e584d9 /]#
[root@3d0879e584d9 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 8  bytes 656 (656.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@3d0879e584d9 /]#容器的IP地址为172.17.0.3

进行测试:


[root@docker ~]# ssh 172.17.0.2
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:iVVPtrCVsq6ae2un0QboTjQgKMvQ0eLrstgar3UI9Z0.
ECDSA key fingerprint is MD5:ae:a7:36:47:f7:dd:64:9a:b2:a6:01:3d:42:ce:54:55.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
root@172.17.0.2's password: # 输出密码lyx
[root@3d0879e584d9 ~]# 登录成功

镜像分层结构解析

[root@docker ~]# docker rmi mycentos:v2  删除v2
Untagged: mycentos:v2
Deleted: sha256:380079b451ef871139544588e61e119d552bdc09ab75d4f67059de0939240be8[root@docker ~]# docker images  查看本地镜像
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       7         eeb6ee3f44bd   16 months ago   204MB[root@docker ~]# docker history mycentos:v1
IMAGE          CREATED         CREATED BY                                       SIZE      COMMENT
401a8637ecf7   2 minutes ago   RUN /bin/sh -c yum install net-tools -y # bu…   199MB     buildkit.dockerfile.v0
<missing>      3 minutes ago   COPY 123.txt /home/xdclass # buildkit            4B        buildkit.dockerfile.v0
<missing>      3 minutes ago   WORKDIR /home/xdclass                            0B        buildkit.dockerfile.v0
<missing>      3 minutes ago   RUN /bin/sh -c echo "正在构建镜像!!!" # buil…   0B        buildkit.dockerfile.v0
<missing>      3 minutes ago   MAINTAINER XD 123456@qq.com                      0B        buildkit.dockerfile.v0
<missing>      16 months ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]             0B
<missing>      16 months ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      16 months ago   /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB
[root@docker ~]#

相关文章:

第三节 docker基础之---Commit+Dockerfile制作

docker目前镜像的制作两种方法&#xff1a; 1&#xff0c;基于docker Commit制作镜像 2&#xff0c;基于dockerfile制作镜像&#xff0c;Dockerfile 为主流的制作方式 如果不制作镜像删除容器之后则里面配置的文件也随之删除&#xff1a; [rootdocker ~]# docker images 查看…...

通过openresty和lua实现随机壁纸

效果&#xff1a; 图片存放路径&#xff1a; /home/jobs/webs/imgs/ ├── default/ │ ├── image1.jpg │ ├── image2.png ├── cats/ │ ├── cat1.jpg │ ├── cat2.gif ├── dogs/ │ ├── dog1.jpg访问http://demo.com/imgs/default 随机返回…...

企业网站如何快速实现全站HTTPS安全访问?

当用户访问您的网站时&#xff0c;若您的企业网站仍以HTTP协议运行&#xff0c;浏览器“不安全”警告不仅会吓退潜在客户&#xff0c;还会拖累搜索引擎排名&#xff0c;直接影响业务转化和品牌声誉。实现全站HTTPS安全访问&#xff0c;已成为企业网站运营的必选项。 本文为您详…...

《花未眠》夜间四时醒来,海棠花未眠

《花未眠》夜间四时醒来&#xff0c;海棠花未眠 川端康成&#xff08;1899-1972&#xff09;日本作家。新感觉派。1968年以“敏锐的感受&#xff0c;高超的叙事技巧&#xff0c;表现日本人的精神实质”获诺贝尔文学奖。诺贝尔文学奖提名作有《雪国》《千羽鹤》《古都》。 陈德文…...

在nodejs中使用RabbitMQ(三)Routing、Topics、Headers

示例一、Routing exchange类型direct&#xff0c;根据消息的routekey将消息直接转发到指定队列。producer.ts 生产者主要发送消息&#xff0c;consumer.ts负责接收消息&#xff0c;同时也都可以创建exchange交换机&#xff0c;创建队列&#xff0c;为队列绑定exchange&#xff…...

kubeconfig存放内容有哪些

kubeconfig 文件是 Kubernetes 用于配置和认证的核心文件。它包含了关于如何访问 Kubernetes 集群的信息。以下是 kubeconfig 文件中常见的一些内容结构&#xff1a; apiVersion: 指定 kubeconfig 的版本&#xff0c;通常是 v1。clusters: 定义了集群的信息&#xff0c;包括集…...

图神经网络是什么,有什么实际应用

图神经网络是什么 图神经网络(Graph Neural Network,GNN)是一种专门用于处理图结构数据的神经网络,它能对图中的节点、边和整个图进行学习和推理,在社交网络分析、生物信息学、推荐系统等领域应用广泛。以下是其原理及示例说明: 图神经网络原理 节点表示学习:为图中每…...

如何将DeepSeek配置到离线电脑(内网)中?— 附Ollama夸克下载链接

1、在外网和内网电脑中分别安装Ollama 如下载速度较慢&#xff0c;安装包附在本文最后。 下载完成后傻瓜一键安装即可。 2、下载deepseek 在外网电脑中启动命令行输入下载命令。以下载8B为例&#xff0c;其他版本同。 ollama run deepseek-r1:8b 3、资源转移 在外网电脑…...

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情&#xff1a; 1TB的硬盘&#xff0c;分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程&#xff1a;对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...

vue项目 Axios创建拦截器

Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09; 不是一种技术&#xff0c;而是一个编程技术概念&#xff0c;核心是通过 XMLHttpReques…...

web前端第三次作业

题目 本期作业 WEB第三次作业 请使用JS实一个网页中登录窗口的显示/隐藏&#xff0c;页面中拖动移动&#xff0c;并且添加了边界判断的网页效 代码图片 效果展示 代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8&qu…...

滑动窗口算法笔记(C++)

滑动窗口算法是一种基于双指针技巧的高效算法, 常用于解决数组或字符串上的一些特定问题. 算法讲解 基本概念 滑动窗口算法可以想象成在一个数组或字符串上有一个固定大小或者可变大小的窗口, 该窗口在数组或字符串上从左到右滑动. 在滑动的过程中, 根据具体问题的要求, 对窗…...

day02冒泡排序

思路&#xff1a; 外层循环控制循环次数(i<len)&#xff0c;设置swapFlagfalse内层循环j1(j<len-i)&#xff0c;两两(j和j-1)比较&#xff0c;逆序则交换内层每次循环结束&#xff0c;没有交换&#xff0c;则break结束 内层循环j从1开始&#xff0c;小于len&#xff0c;…...

【工业场景】用YOLOv8实现火灾识别

火灾识别任务是工业领域急需关注的重点安全事项,其应用场景和背景意义主要体现在以下几个方面: 应用场景:工业场所:在工厂、仓库等工业场所中,火灾是造成重大财产损失和人员伤亡的主要原因之一。利用火灾识别技术可以及时发现火灾迹象,采取相应的应急措施,保障人员安全和…...

管式超滤膜分离技术都可以应用到哪些行业?

管式超滤膜分离技术由于其高效、稳定和适应性强的特点&#xff0c;在多个行业都有广泛的应用&#xff1a; 1. 生物制药与医药行业 纯化与浓缩&#xff1a;在生物药品的下游处理阶段&#xff0c;管式超滤膜被用来纯化抗体、疫苗、蛋白质等生物大分子&#xff0c;通过精确筛选分子…...

数智百问 | 制造企业如何降低产线检测数据的存储和管理成本?

在《“十四五”智能制造发展规划》等政策的推动下&#xff0c;以及新能源汽车、消费电子等品牌商对产品质量和供应商智能化水平要求的提升&#xff0c;半导体、电子制造、动力电池等先进制造行业企业纷纷推进产线智能化升级&#xff0c;并投入大量机器视觉检测设备以实现自动化…...

Linux中getifaddrs函数

文章目录 **函数原型****参数****返回值****释放资源****`struct ifaddrs` 结构****示例代码****输出示例****相关函数****总结**getifaddrs 是 Linux(以及其他 Unix-like 系统)中用于获取本机网络接口信息的系统调用。它提供了一种简单的方法来获取所有网络接口的地址信息,…...

Barra多因子模型

Barra模型 1. Barra模型概述1.1 Barra模型的历史与发展1.2 Barra模型在全球市场中的应用 2. Barra模型的基本原理2.1 APT理论基础2.2 Barra模型的基本原理&#xff1a;因子模型的核心假设因子暴露 β i j \beta_{ij} βij​的假设因子收益率 f j f_j fj​的假设 3. Barra模型的…...

P5:使用pytorch实现运动鞋识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境&#xff1a;python 3.7.12 编译器&#xff1a;pycharm 深度学习环境&#xff1a;tensorflow 2.7.0 数据&#xff1a;本地数据集-运动鞋 一…...

redis持久化原理相关面试题剖析

一、Redis 持久化的机制是什么&#xff1f; Redis是内存数据库&#xff0c;数据都是存储在内存中&#xff0c;为了避免进程退出导致数据的永久丢失&#xff0c;需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘&#xff1b;当下次 Redis重启时&#xff0c;利用…...

动态规划LeetCode-1049.最后一块石头的重量Ⅱ

有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&…...

Linux Media 子系统 V4l2

一 创建 V4l2 的 entity 在Linux内核的Media Controller框架中&#xff0c;V4L2设备作为实体&#xff08;entity&#xff09;的注册过程涉及以下步骤&#xff1a; 1. 初始化Media Controller结构 驱动首先创建一个media_device实例&#xff0c;并与V4L2设备&#xff08;如v4…...

民兵装备管理系统DW-S300|支持国产化、自主研发

民兵装备器材管理系统&#xff08;智装备DW-S301&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 装备接收与登记 民兵装备抵达仓库时&#…...

Pro Git --(Windows)总结

Pro Git --Windows 文章目录 Pro Git --Windows知识来源Git入门与进阶 知识来源 廖雪峰的官方网站 Git教程 Git入门与进阶 # 初步学习Git #个人建议先大致过一遍&#xff0c;对Git有个大致的理解&#xff0c;然后在实操项目# 创建一个空目录 $ mkdir learngit $ cd learngit …...

加油口,电梯门的对称性对 TCP/IP 传输协议的启示

春节期间河南穷游屡次加油站排队加油之启示。 不考虑有意的设计因素&#xff0c;汽车加油口概率性分布在车身的左边或者右边&#xff0c;这个偶然的小细节让加油机同时为两辆车加油而无需额外的加油管。 如果所有车辆加油口都在同一侧&#xff0c;加油站的加油机就只能给一边的…...

【进阶】JVM篇

为什么学习jvm 1、面试的需要 学过java的程序员对jvm应该不陌生&#xff0c;程序员为什么要学习jvm呢&#xff1f;其实不懂jvm也可以照样写出优质的代码&#xff0c;但是不懂jvm会被大厂的面试官虐的体无完肤。 2、高级程序员需要了解 jvm作用 jvm负责把编译后的字节码转换…...

【安全靶场】信息收集靶场

靶场&#xff1a;https://app.hackinghub.io/hubs/prison-hack 信息收集 子域名收集 1.subfinder files.jabprisons.com staging.jabprisons.com cobrowse.jabprisons.com a1.top.jabprisons.com cf1.jabprisons.com va.cobrowse.jabprisons.com vs.jabprisons.com c…...

新数据结构(4)——Java继承

基本概念 继承的本质&#xff1a;重复使用已经定义好的方法和域&#xff0c;实现代码的重复利用。 使用继承之后&#xff0c;创建的子类可以方便地调用父类中已经定义的方法。 一个继承的例子&#xff1a; 重载和重写 重载 重载&#xff1a;发生在同一个类里&#xff0c;指…...

大数据学习之SparkStreaming、PB级百战出行网约车项目一

一.SparkStreaming 163.SparkStreaming概述 Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. Spark Streaming 是核心 Spark API 的扩展&#xff0c;支持实时数据…...

介绍两个个电池充电管理芯片(TP4057、ME4069)

第一个是TP4057。 输入电压是4~6.5V TP4056&#xff0c;它们之间最大的区别就是TP4056最高是1A的充电电流&#xff0c;而TP4057是500ma&#xff0c;适用于更小一点的电池。 TP4057停机模式的静态电流也更小&#xff08;上图列的是待机模式&#xff0c;但查看后面的表格发现实际…...

Debezium日常分享系列之:解码逻辑解码消息内容

Debezium日常分享系列之&#xff1a;解码逻辑解码消息内容 示例配置选项 DecodeLogicalDecodingMessageContent SMT将PostgreSQL逻辑解码消息的二进制内容转换为结构化形式。当Debezium PostgreSQL连接器捕获逻辑解码消息时&#xff0c;它会将消息事件记录发送到Kafka。默认情况…...

【Linux】smp_mb__after_atomic

文章目录 背景知识smp_mb__after_atomic 的作用具体应用场景为什么需要 smp_mb__after_atomic相关宏总结 背景知识 在现代多核处理器和并发编程中&#xff0c;编译器优化和CPU乱序执行可能导致程序指令的实际执行顺序与源代码中的顺序不一致。这种现象可能会破坏多线程或进程间…...

关于conda换镜像源,pip换源

目录 1. 查看当前下载源2. 添加镜像源2.1清华大学开源软件镜像站2.2上海交通大学开源镜像站2.3中国科学技术大学 3.删除镜像源4.删除所有镜像源&#xff0c;恢复默认5.什么是conda-forge6.pip换源 1. 查看当前下载源 conda config --show channels 如果发现多个 可以只保留1个…...

【JavaEE进阶】依赖注入 DI详解

目录 &#x1f334;什么是依赖注入 &#x1f384;依赖注入的三种方法 &#x1f6a9;属性注⼊(Field Injection) &#x1f6a9;Setter注入 &#x1f6a9;构造方法注入 &#x1f6a9;三种注⼊的优缺点 &#x1f333;Autowired存在的问题 &#x1f332;解决Autowired存在的…...

鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践

文章目录 一、概述二、窗口旋转说明1、配置module.json5的orientation字段2、调用窗口的setPreferredOrientation方法 四、性能优化1、使用自定义组件冻结2、对图片使用autoResize3、排查一些耗时操作 四、常见场景示例1、视频类应用横竖屏开发2、游戏类应用横屏开发 五、其他常…...

自己部署 DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 自己…...

程序员升级进阶之路

熟悉业务、项目代码、工作流程&#xff0c;积极吸取技术资料接需求&#xff0c;画流程图&#xff0c;&#xff08;伪代码&#xff09;&#xff0c;详细设计明确职业发展方向【很重要】求精&#xff1a;写代码前的技术方案设计 写代码并不难&#xff0c;关键是要明确为什么要写…...

C/C++后端开发面经

字节跳动 客户端开发 实习 一面(50min) 自我介绍是否愿意转语言,是否只愿意搞后端选一个项目来详细谈谈HTTP和HTTPS有什么区别?谈一下HTTPS加密的具体过程&#xff1a; 非对称加密 对称加密 证书认证的方式 非对称加密是为了保证对称密钥的安全性。 对称…...

【C++】策略模式

使用场景 主要目的是定义一系列可互换的算法或行为&#xff0c;并使它们在运行时可以根据不同的情况动态地替换。它侧重于算法的封装和替换&#xff0c;让客户端可以灵活地选择不同的策略来完成特定的任务。 例如&#xff0c;在一个游戏角色的行为系统中&#xff0c;角色的攻击…...

Baklib剖析企业内容管理与内容中台的主要区别解析

内容概要 在当今数字化转型的浪潮中&#xff0c;企业内容管理和内容中台这两种系统日益受到关注。两者虽均旨在提升企业的内容管理效率与协同能力&#xff0c;但却存在明显差异。企业内容管理&#xff08;ECM&#xff09;主要聚焦于文档的创建、存储、检索和管理&#xff0c;旨…...

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…...

从零到一:基于Rook构建云原生Ceph存储的全面指南(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件1&#xff09;Rook Operator2&#xff09;Rook Discover3&#xff09;Rook Agent 2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.3 获取…...

嵌入式经常用到串口,如何判断串口数据接收完成?

说起通信&#xff0c;首先想到的肯定是串口&#xff0c;日常中232和485的使用比比皆是&#xff0c;数据的发送、接收是串口通信最基础的内容。这篇文章主要讨论串口接收数据的断帧操作。 空闲中断断帧 一些mcu&#xff08;如&#xff1a;stm32f103&#xff09;在出厂时就已经在…...

OpenGL-基础知识(更新中)

本文基于The Cherno在Youtube上的OpenGL系列视频总结出的笔记&#xff0c;等这个系列视频学习完后&#xff0c;将更加系统详细的学习《计算机图形学编程&#xff08;使用OpenGL和C 第二版&#xff09;》这本书。个人认为看cherno的视频上手速度更快&#xff0c;而且他对基本概念…...

【多模态大模型】系列2:Transformer Encoder-Decoder——BLIP、CoCa、BEITv3

目录 1 BLIP2 CoCa3 BEITv3 1 BLIP BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP是 ALBEF 原班人马做的&#xff0c;基本可以看做吸收了 VLMo 思想的 ALBEF。训练的 loss 和技巧都与 ALBEF一致&#xff…...

基于CanMV IDE 开发软件对K210图像识别模块的开发

简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件&#xff0c;它提供了强大的功能&#xff0c;帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者&#xff0c;CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…...

如何准备软考高级系统分析师考试

以下是针对软考高级系统分析师考试的详细备考方案&#xff0c;结合学习周期、阶段任务、习题选择和通过概率分析&#xff0c;帮助考生高效备考。 一、备考周期建议&#xff08;4-6个月&#xff09; 建议分为 基础阶段&#xff08;2个月&#xff09;→ 强化阶段&#xff08;2个…...

解析RK3588无线边缘盒子为工业自动化边缘推理带来的 AI 突破

在工业自动化领域&#xff0c;边缘推理的高效性和准确性对于提升生产效率和质量至关重要。RK3588 凭借强大的 AI 算力&#xff0c;为工业自动化边缘推理带来了显著的赋能效果。 RK3588 拥有出色的多核架构和高性能的 GPU &#xff0c;能够快速处理大量的数据。在工业生产线上&…...

初一说明文:我的护眼灯

本文转自&#xff1a;AI范文助手网 原文链接&#xff1a;https://www.aazhushou.com/czzw/5023.html 自爱迪生发明了灯以来&#xff0c;各种各样的灯相继问世了&#xff0c;给人一种新景象&#xff0c;其中护眼灯也问世了。 我有一盏台灯叫麦迪格护眼灯。那天我和母亲去商场&…...

归并排序(C# C++)

目录 1 归并排序的基本概念 2 算法步骤 2-1 分解阶段 2-2 合并阶段 3 代码实现 3-1 C#代码示例&#xff08;该代码在unity环境下&#xff09; 3-2 C代码示例 1 归并排序的基本概念 归并排序&#xff08;Merge Sort&#xff09;是一种经典的分治算法&#xff0c;由约翰…...