Docker学习笔记(九)---DockerFile

2023-05-16

DockerFile

文章目录

  • DockerFile
    • DockerFile介绍
    • DockerFile构建过程
      • 基础知识:
    • DockerFile的指令
      • 实战测试
      • CMD 和 ENTRYPOINT 区别
  • Docker其他学习笔记

DockerFile介绍

dockerfile是用来构建docker景象的文件!命令参数脚本!
构建步骤:

  1. 编写一个dockerfile 文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像(Docker Hub ,阿里云镜像仓库!)

查看一下官方是怎么做的?
在这里插入图片描述

很多官方镜像都是基础包,很多功能都没有,我们通常会自己搭建自己的镜像!

官方既然可以制作镜像,那我们也可以!

DockerFile构建过程

基础知识:

  1. 每一个保留关键字(指令)都是必须是大写字母
  2. 执行从上到下顺序执行
  3. #表示注释
  4. 每一个指令都会创建提交一个新的镜像成,并提交!

在这里插入图片描述

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为了企业交付的标准,必须要掌握!

步骤:开发,部署,运维…缺一不可!

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务器

DockerFile的指令

以前的话我们就是使用别人的,现在我们知道了这些指令后,我们来联系自己写一个镜像

FROM												# 基础镜像,一切从这里开始构建		centos
MAINTAINER									# 镜像是谁写的 姓名+邮箱
RUN													# 镜像构建的时候需要运行的命令
ADD													# 步骤,tomcat镜像,这个tomcat压缩包!添加内容,add命令会自动解压
WORKIR											# 镜像的工作目录
VOLUME											# 挂载到那个位置-》挂在目录
EXPOST											# 保留暴露端口=-p			
CMD													# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYOINT										# 指定这个容器启动的时候要运行的命令.可以追加命令
ONBUILD											# 当构建一个被继承DockerFile这个是欧就会运行ONBUILD的指令,触发命令.
COPY												# 类似ADD,将我们文件拷贝到镜像中
ENV													# 构建的时候设置环境变量!

在这里插入图片描述

实战测试

Docker Hub中99%镜像都是从这个镜像中过来的 FROM scratch,然后配置需要的软件和配置来进行的构建

在这里插入图片描述

创建一个自己的centos

# 1.编写Dockerfile的文件
[root@aZang dockerfile]# cat mydockerfile
FROM centos
MAINTAINER azang

ENV MYPATH /usr/local
WORKDIR SMYPATH

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

EXPOSE 80

CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
[root@aZang dockerfile]# 
# 2.通过这个文件构建镜像
# 命令docker build -f dockerfile文件路径 -t 镜像名:[tag]

[root@aZang dockerfile]# docker build -f mydockerfile -t azang/centos:0.1 .
Sending build context to Docker daemon  2.048kB
Step 1/10 : FROM centos
 ---> 300e315adb2f
Step 2/10 : MAINTAINER azang
 ---> Running in a5bac01270e6
Removing intermediate container a5bac01270e6
 ---> cfcec5f1b7ef
Step 3/10 : ENV MYPATH /usr/local
 ---> Running in 70c56fc1338e
Removing intermediate container 70c56fc1338e
 ---> e1e827378f1c
Step 4/10 : WORKDIR SMYPATH
 ---> Running in 15dd5d7c4457
Removing intermediate container 15dd5d7c4457
 ---> 644b206ba7a3
Step 5/10 : RUN yum -y install vim
 ---> Running in 3924f2666a7f
CentOS Linux 8 - AppStream                      1.9 MB/s | 7.4 MB     00:03    
CentOS Linux 8 - BaseOS                          82 kB/s | 2.6 MB     00:32    
CentOS Linux 8 - Extras                         3.3 kB/s | 9.6 kB     00:02    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-15.el8         appstream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-17.el8             appstream       39 k
 vim-common          x86_64      2:8.0.1763-15.el8         appstream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-15.el8         appstream       48 k
 which               x86_64      2.21-12.el8               baseos          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm        283 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 624 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             321 kB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm  1.5 MB/s | 1.4 MB     00:00    
(5/5): vim-common-8.0.1763-15.el8.x86_64.rpm    1.7 MB/s | 6.3 MB     00:03    
--------------------------------------------------------------------------------
Total                                           1.3 MB/s | 7.8 MB     00:06     
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-15.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-15.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-17.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-17.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-15.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-15.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-15.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-17.el8.x86_64         vim-common-2:8.0.1763-15.el8.x86_64    
  vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container 3924f2666a7f
 ---> 08c47fd7e777
Step 6/10 : RUN yum -y install net-tools
 ---> Running in 505a3d75b432
Last metadata expiration check: 0:00:13 ago on Thu Jun 10 15:08:41 2021.
Dependencies resolved.
================================================================================
 Package         Architecture Version                        Repository    Size
================================================================================
Installing:
 net-tools       x86_64       2.0-0.52.20160912git.el8       baseos       322 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 322 k
Installed size: 942 k
Downloading Packages:
net-tools-2.0-0.52.20160912git.el8.x86_64.rpm   1.5 MB/s | 322 kB     00:00    
--------------------------------------------------------------------------------
Total                                           367 kB/s | 322 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 
  Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 
  Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 

Installed:
  net-tools-2.0-0.52.20160912git.el8.x86_64                                     

Complete!
Removing intermediate container 505a3d75b432
 ---> 3d184c88a241
Step 7/10 : EXPOSE 80
 ---> Running in fed7c7edc87c
Removing intermediate container fed7c7edc87c
 ---> f9ca05896d03
Step 8/10 : CMD echo $MYPATH
 ---> Running in 50c7eda21ca9
Removing intermediate container 50c7eda21ca9
 ---> c98f98fd1080
Step 9/10 : CMD echo "---end---"
 ---> Running in b5e7c57e570e
Removing intermediate container b5e7c57e570e
 ---> f5b00198661e
Step 10/10 : CMD /bin/bash
 ---> Running in e43c86088525
Removing intermediate container e43c86088525
 ---> 2b1119b73bdd
Successfully built 2b1119b73bdd
Successfully tagged azang/centos:0.1

# 3.测试运行

[root@aZang dockerfile]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
azang/centos   0.1       2b1119b73bdd   3 minutes ago   295MB
redis          latest    bc8d70f9ef6c   4 weeks ago     105MB
mysql          latest    c0cdc95609f1   4 weeks ago     556MB
azang/centos   1.0       639ccb37770a   4 weeks ago     209MB
mysql          5.7       87eca374c0ed   7 weeks ago     447MB
nginx          latest    62d49f9bab67   8 weeks ago     133MB
centos         latest    300e315adb2f   6 months ago    209MB
[root@aZang dockerfile]# docker run -it azang/centos:0.1
[root@a7cf78c85e3c SMYPATH]# pwd
/SMYPATH
[root@a7cf78c85e3c SMYPATH]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.4  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:04  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 656 (656.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@a7cf78c85e3c SMYPATH]# vim test
[root@a7cf78c85e3c SMYPATH]# 

对比:之前原生的
在这里插入图片描述

我们可以列出本地镜像的变更历史

# 查看历史构内容
# 命令: docker history 镜像id

[root@aZang ~]# docker history 2b1119b73bdd
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
2b1119b73bdd   10 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B        
f5b00198661e   10 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
c98f98fd1080   10 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
f9ca05896d03   10 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
3d184c88a241   10 minutes ago   /bin/sh -c yum -y install net-tools             24.8MB    
08c47fd7e777   10 minutes ago   /bin/sh -c yum -y install vim                   60.4MB    
644b206ba7a3   11 minutes ago   /bin/sh -c #(nop) WORKDIR /SMYPATH              0B        
e1e827378f1c   11 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B        
cfcec5f1b7ef   11 minutes ago   /bin/sh -c #(nop)  MAINTAINER azang             0B        
300e315adb2f   6 months ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      6 months ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      6 months ago     /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB  

我们平时拿到一个镜像,可以研究一下他是怎么做到的

CMD 和 ENTRYPOINT 区别

CMD 和 ENTRYPOINT 区别

CMD													# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYOINT										# 指定这个容器启动的时候要运行的命令.可以追加命令
  • 测试CMD
# 编写dockerfile文件
[root@aZang dockerfile]# vim dockerfile-cmd-test
# FROM centos
# CMD ["ls","-a"]

# 构建镜像
[root@aZang dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos
 ---> 300e315adb2f
Step 2/2 : CMD ["ls","-a"]
 ---> Running in 939dde5445e9
Removing intermediate container 939dde5445e9
 ---> 93f2c68b8848
Successfully built 93f2c68b8848
Successfully tagged cmdtest:latest

# run运行,发现我们的ls -a 命令生效
[root@aZang dockerfile]# docker run  93f2c68b8848
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

# 想追加一个命令-l ls -al
[root@aZang dockerfile]# docker run  93f2c68b8848 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container: context canceled 

# cmd的情况下 -l替换了CMD ["ls","-a"]命令,-l不是命令所以报错!
# 正确使用方式时使用完整的命令替换
[root@aZang dockerfile]# docker run  93f2c68b8848 ls -al
total 56
drwxr-xr-x   1 root root 4096 Jun 16 11:13 .
drwxr-xr-x   1 root root 4096 Jun 16 11:13 ..
-rwxr-xr-x   1 root root    0 Jun 16 11:13 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Jun 16 11:13 dev
drwxr-xr-x   1 root root 4096 Jun 16 11:13 etc
drwxr-xr-x   2 root root 4096 Nov  3  2020 home
lrwxrwxrwx   1 root root    7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Nov  3  2020 lib64 -> usr/lib64
drwx------   2 root root 4096 Dec  4  2020 lost+found
drwxr-xr-x   2 root root 4096 Nov  3  2020 media
drwxr-xr-x   2 root root 4096 Nov  3  2020 mnt
drwxr-xr-x   2 root root 4096 Nov  3  2020 opt
dr-xr-xr-x 107 root root    0 Jun 16 11:13 proc
dr-xr-x---   2 root root 4096 Dec  4  2020 root
drwxr-xr-x  11 root root 4096 Dec  4  2020 run
lrwxrwxrwx   1 root root    8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3  2020 srv
dr-xr-xr-x  13 root root    0 May 11 14:05 sys
drwxrwxrwt   7 root root 4096 Dec  4  2020 tmp
drwxr-xr-x  12 root root 4096 Dec  4  2020 usr
drwxr-xr-x  20 root root 4096 Dec  4  2020 var
  • 测试ENTRYPOINT
# 编写dockerfile文件
[root@aZang dockerfile]# vim dockerfile-cmd-entrypoint
# FROM centos
# ENTRYPOINT ["ls","-a"]

# 构建镜像
[root@aZang dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos
 ---> 300e315adb2f
Step 2/2 : ENTRYPOINT ["ls","-a"]
 ---> Running in cfff9236df9c
Removing intermediate container cfff9236df9c
 ---> 5dee28b973dd
Successfully built 5dee28b973dd
Successfully tagged entrypoint-test:latest

# run运行,发现我们的ls -a 命令生效
[root@aZang dockerfile]# docker run 5dee28b973dd
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

# 想追加一个命令-l ls -al
# 发现和CMD的不同不会顶替掉原有的,而是进行追加
[root@aZang dockerfile]# docker run 5dee28b973dd -l
total 56
drwxr-xr-x   1 root root 4096 Jun 16 11:27 .
drwxr-xr-x   1 root root 4096 Jun 16 11:27 ..
-rwxr-xr-x   1 root root    0 Jun 16 11:27 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Jun 16 11:27 dev
drwxr-xr-x   1 root root 4096 Jun 16 11:27 etc
drwxr-xr-x   2 root root 4096 Nov  3  2020 home
lrwxrwxrwx   1 root root    7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Nov  3  2020 lib64 -> usr/lib64
drwx------   2 root root 4096 Dec  4  2020 lost+found
drwxr-xr-x   2 root root 4096 Nov  3  2020 media
drwxr-xr-x   2 root root 4096 Nov  3  2020 mnt
drwxr-xr-x   2 root root 4096 Nov  3  2020 opt
dr-xr-xr-x 110 root root    0 Jun 16 11:27 proc
dr-xr-x---   2 root root 4096 Dec  4  2020 root
drwxr-xr-x  11 root root 4096 Dec  4  2020 run
lrwxrwxrwx   1 root root    8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3  2020 srv
dr-xr-xr-x  13 root root    0 May 11 14:05 sys
drwxrwxrwt   7 root root 4096 Dec  4  2020 tmp
drwxr-xr-x  12 root root 4096 Dec  4  2020 usr
drwxr-xr-x  20 root root 4096 Dec  4  2020 var
[root@aZang dockerfile]# 

Dockerfile中很多的命令都十分的相似,我们需要了解他们的区别,我们最好的学习就是对比他们然后测试效果!

Docker其他学习笔记

Docker学习笔记(一)—安装启动hello world
Docker学习笔记(二)—底层原理
Docker学习笔记(三)—常用命令
Docker学习笔记(四)练习—安装nginx
Docker学习笔记(五)练习—安装tomcat
Docker学习笔记(六)—可视化
Docker学习笔记(七)----镜像
Docker学习笔记(八)—数据容器卷
Docker学习笔记(九)—DockerFile
Docker学习笔记(十)—发布自己的镜像
Docker学习笔记(十一)–docker网络

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker学习笔记(九)---DockerFile 的相关文章

  • grub rescue救援模式的处理

    grub rescue救援模式的处理 来源 xff1a https www cnblogs com itcomputer articles 4182344 html 我的linux在调整分区后 xff0c 出现了grub rescue gt
  • gitlab自定义头像设置

    这里写自定义目录标题 选一个自己喜欢的头像放在自建nginx服务中 可放在gitlab的nginx中 xff1a 设置gitlab修改配置 etc gitlab gitlab rb 重新加载gitlab配置最终效果 选一个自己喜欢的头像放在
  • 【无标题】

    https www cnblogs com liujuncm5 p 6713784 html 一 依赖安装 yum install y gcc c 43 43 pcre pcre devel zlib zlib devel openssl
  • shell:批量下载epel源rpms

    span class token keyword for span span class token for or select variable i span span class token keyword in span span c
  • linux静动态依赖

    安装glibc static usr bin ld cannot find lpthread usr bin ld cannot find lc
  • 修改ftp根目录

    修改 etc vsftpd vsftpd conf xff0c 加入如下三行 xff1a local root 61 chroot local user 61 YES anon root 61 local root表示使用本地用户登录到ft
  • 基于深度学习的医学图像配准综述

    原文转自 xff1a https blog csdn net weixin 41699811 article details 84314070 版权声明 xff1a 本文为CSDN博主 Timmymm 的原创文章 xff0c 遵循 CC 4
  • C语言实现生产者消费者模型(线程、信号量、互斥锁)

    三个概念 xff1a 生产者消费者模型 线程 信号量 1 生产者消费者模型 利用生活中的例子 xff0c 生产者生产商品 xff0c 商品放在超市 xff0c 消费者去超市购买 使用 商品 xff0c 也就是生产者消费者模型 生产者生成一定
  • Linux Deepin [解决] - 您也许需要运行“apt --fix-broken install”来修正上面的错误。

    问题来源 Os Linux Deepin 20 社区 在星火商店下载了网易云音乐的包 xff0c 用深度安装器安装 xff0c 能用能调节窗口大小 xff0c 但是字体大小不能调剂 emmm高分屏用户哭了后悔自己买那么高的玩意 于是右键卸载
  • C++判断素数(求素数)

    一个大于1的自然数 xff0c 且除了1和它本身外 xff0c 不能被其他自然数整除的数叫素数 换句话说就是 xff0c 除了1和该数本身以外不再有其他的因数的数被称为素数 判断m是否是素数的算法是 xff1a m在区间 1 xff0c s
  • Arch Linux wine 微信、heidissql、chrome - AUR heplers - yay

    Intro span class token function uname span a Linux arch 5 10 16 arch1 1 span class token comment 1 SMP PREEMPT Sat 13 Fe
  • C语言-基础例题55道

    1 简单程序设计 编程写程序 xff0c 在屏幕上输出信息 xff1a Happy New Year 输出图形 include lt stdio h gt void main printf 34 Happy New Year n 34 2
  • Python 端口扫描器

    目录 前言一 TCP全连接二 程序编写1 获得主机名和端口2 解析主机名和端口3 抓取应用的Banner4 线程扫描5 信号量机制 总结 前言 任何一个靠谱的网络攻击都是起步于侦查的 在这里 xff0c 我们将使用Python来编写一个扫描
  • linux 实现开机自动登陆

    1 Linux实现开机自动登陆 可以指定登陆的账户 在登陆Linux系统的时候 xff0c 在登陆界面往往需要输入密码后进行登陆 xff0c 如果想实现Linux锡系统开机后自动登陆某个账户 xff0c 可以进行如下的设置 xff1a 可以
  • python中@statimethod和@clasmetod的简单理解

    1 64 statimethod xff1a 加上这一句话 xff0c 不需要实例化即可调用类方法 举例如下 xff1a 但我发现 xff0c 只要定义方法时加了self 再用静态方法会一直报错 实例化和非实例化都会报错 2 64 clas
  • 长文慎入,如何快速开发区块链游戏

    长文慎入 xff0c 如何快速开发区块链游戏 译者注 xff1a 原文 xff1a 初始发行Enjin整合初始整合客户端SDK GUI客户端SDK APIEnjin的API是GraphQL Enjin推荐使用服务器排列你的物品并分批发送存储
  • Nginx配置文件(nginx.conf)配置详解

    Nginx配置文件nginx conf中文详解 定义Nginx运行的用户和用户组user www www nginx进程数 xff0c 建议设置为等于CPU总核心数 worker processes 8 全局错误日志定义类型 xff0c d
  • 【有机】提纲整理1——化学基础

    周环反应 元素 xff08 磷硫硅 xff09 金属有机 生物有机 天然产物 含氮化合物 含氧化合物 醇 酚 醚 醛 酮 醌 羧酸及其衍生物 卤代烷 碳氢化合物 烷烃 烯烃 炔烃 苯 历史 结构 命名 波谱 立体化学 1 原子结构与化学键的
  • 求二叉树的高度

    二叉树高度是二叉树的重要知识点 xff0c 在日常练习中我们会经常碰见这种类型的题目 求解二叉树的高度可以用递归方式 递归求解二叉树高度 int GetHeight BinTree BT int h1 int h2 if BT return
  • Linux开启ssh远程登录

    Linux配置ssh 开启远程登录 你好 xff01 这里介绍了Linux系统Centos Ubuntu环境下开启ssh的方法 一 CentOS开启SSH服务 安装openssh server xff1b yum list installe

随机推荐

  • Python 中if...else语法和作用、执行流程

    一 if else语法 作用 xff1a 条件成立执行if下方的代码 xff0c 条件不成立执行else下方的代码 案例说明 xff1a 比如拿成年网吧上网的例子 xff0c 如果成年 xff0c 就允许上网 xff0c 如果不成年 xff
  • Ubuntu20.04安装ssh并开启远程访问登录

    1 安装openssh server 打开终端安装openssh server软件包 xff1a span class token function sudo span span class token function apt span
  • pixhawk在启动jmavsim时,启动不了

    lcg 64 ubuntu src Firmware sudo make px4 sitl jmavsim 1 1 cd home lcg src Firmware build cg src Firmware build px4 sitl
  • 数据转换成tfrecord类型并完成读取

    前提 xff1a tensorflow 1 13 1 numpy 1 16 2 python 3 6 5 本例转换 泰坦尼克号数据集 链接 密码 xff1a n8wz 数据预览 xff1a 字段说明 xff1a PassengerId xf
  • Notepad++如何配置NppFTP连接FTP服务器远程编辑

    Notepad 43 43 是很强大的文本编辑工具 xff0c 通过NppFTP插件可以远程连接FTP服务器 xff0c 实现文件的在线编辑 不需要FTP下载文件后再进行编辑 xff0c 配置好与FTP服务器的连接后 xff0c 使用起来会
  • Ubuntu install Chrome

    wget https dl google com linux direct google chrome stable current amd64 deb sudo dpkg i google chrome stable current am
  • 简易输出六十天干地支

    每行十个输出六十天干地支 public static void main String args int i 61 0 count 61 0 step 61 0 String top 61 34 甲 34 34 乙 34 34 丙 34 3
  • 小记:Xshell 简单STP上传下载文件

    小记 xff1a Xshell 简单STP上传下载文件 目录 xff1a 1 Xshell连接远程系统 2 STP连接 3 put get上传下载文件 工具说明 xff1a 本地Windows 10系统 远程Linux系统 xff1a Ce
  • info函数与describe函数

    info 函数与describe 函数 一 xff0c info 函数 功能 xff1a 给出样本数据的相关信息概览 xff1a 行数 xff0c 列数 xff0c 列索引 xff0c 列非空值个数 xff0c 列类型 xff0c 内存占用
  • 快速排序(java代码)

    文章目录 一 快排核心思想二 实例三 代码实现 xff08 java xff09 一 快排核心思想 快排核心思想就是 xff1a 首先在待排序数组中随便选择一个数作为节点 xff08 pivot xff09 xff0c 然后从最后面 xff
  • C# List集合查找删除指定数据

    C List集合查找删除指定数据 文章目录1 实体类2 操作第一个负荷条件数据3 操作所有符合条件数据4 优质源码 文章目录 1 实体类 public class FaultLevelModel public string LBWJ get
  • java.lang.IllegalArgumentException: Unable to instantiate factory class

    前提 xff1a 这两天在搭springboot后台框架的时候 xff08 用的JDK1 8和eclipse xff09 xff0c 折腾了半天 xff0c 在搞泛型的时候会有一些报错 xff0c 原来IDEA上的代码 xff0c 在ecl
  • 发声单元的原理/扬声器的工作原理

    目前市面上常见的耳塞以及耳机的发声单元主要有三种 xff0c 分别是动圈单元 动铁单元和静电单元 静电单元由于工艺比较复杂 成本高 xff0c 单元本身比较脆弱 xff0c 所以市面上并不多见 所以下面着重介绍动圈单元和动铁单元的发声原理
  • 猿创征文|Hexo+Github搭建完全免费个人博客详细教程

    前言 完全免费的搭建个人博客 xff0c 没有任何收费 xff0c 零基础也能上手 xff0c 不需要编程基础 xff0c 跟着操作来即可 首先 xff1a 要了解一下我们搭建博客要用到的框架 xff1a Hexo是高效的静态站点生成框架
  • 3维向量的点乘叉乘运算

    目录 三维向量的点乘三维向量的叉乘点到直线的距离点到平面的距离 三维向量的点乘 点乘得到的是对应元素乘积的和 xff0c 是一个标量 xff0c 没有方向 V1 x1 y1 z1 V2 x2 y2 z2 61 x1x2 43 y1y2 43
  • Windows Server 2016修改Administrator的密码

    1 xff09 在仪表盘上 xff0c 点击 工具 菜单 xff0c 选择 计算机管理 子菜单 2 xff09 本地用户和组 gt 用户 选中Administrator xff0c 点击右键 xff0c 弹出的菜单中选择 设置密码 的子菜单
  • Ubuntu安装Tomcat 执行[./startup.sh]命令显示“ Permission denied “问题解决

    报错贴图 xff1a 根据错误提示 xff0c 为权限问题 然后我们检查权限情况 xff1a 方框中为管理员权限 xff0c 显示为rw r代表read xff08 读 xff09 xff0c w代表write xff08 写 xff09
  • 2021年7月1日:AndroidStudio集成opencv指南。

    版本声明 xff1a 1 AndroidStudio 4 2 1 2 opencv版本4 5 2 3 androidStudio创建项目选择项目类型Native C 43 43 4 下载opencv android版本解压后 xff0c 找
  • Redis(十) 布隆过滤器

    速记 为什么使用布隆过滤器 xff1f 1 为了省内存 xff0c 提高速率 2 因为1所以布隆过滤器不需要百分百正确 3 说存在不一定存在 xff0c 说不存在一定不存在 4 在解决缓存穿透的问题时 xff0c 拦截了大部分的请求 xff
  • Docker学习笔记(九)---DockerFile

    DockerFile 文章目录 DockerFileDockerFile介绍DockerFile构建过程基础知识 DockerFile的指令实战测试CMD 和 ENTRYPOINT 区别 Docker其他学习笔记 DockerFile介绍