【Docker环境部署及基础命令操作】

news2025/1/12 20:42:27

CentOS7安装Docker(使用yum安装)

参考链接:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.1ec41b11RJ4PKS

#step 1:安装安装必要的一些系统工具
[root@node1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
[root@node1 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
[root@node1 ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
[root@node1 ~]# yum makecache fast
#安装的是默认最新版本
[root@node1 ~]# yum install docker-ce -y
# Step 5: 开启Docker服务
#配置docker镜像加速
[root@node1 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl start docker
[root@node1 ~]# docker info
 Registry Mirrors:
  https://registry.docker-cn.com/
出现该内容表示镜像加速配置成功
如果显示如下内容:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@node1 ~]# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
#从配置文件/etc/sysctl.conf加载内核参数设置
[root@localhost ~]# sysctl -p 


# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

docker基础命令操作

一、镜像操作

1、搜索官方仓库镜像 docker search

[root@node1 ~]# docker search nginx
NAME                                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                                             Official build of Nginx.                        18885     [OK]       
unit                                              Official build of NGINX Unit: Universal Web …   8         [OK]       
nginxinc/nginx-unprivileged                       Unprivileged NGINX Dockerfiles                  111                  
nginx/nginx-ingress                               NGINX and  NGINX Plus Ingress Controllers fo…   76                   
nginx/nginx-prometheus-exporter                   NGINX Prometheus Exporter for NGINX and NGIN…   33                   
nginx/unit                                        NGINX Unit is a dynamic web and application …   64                   
nginxinc/nginx-s3-gateway                         Authenticating and caching gateway based on …   1                    
nginx/nginx-ingress-operator                      NGINX Ingress Operator for NGINX and NGINX P…   0                    
nginxinc/amplify-agent                            NGINX Amplify Agent docker repository           1                    
nginx/nginx-quic-qns                              NGINX QUIC interop                              1                    
nginxinc/ingress-demo                             Ingress Demo                                    4                    
nginxproxy/nginx-proxy                            Automated Nginx reverse proxy for docker con…   101                  
nginxproxy/acme-companion                         Automated ACME SSL certificate generation fo…   122                  
bitnami/nginx                                     Bitnami nginx Docker Image                      171                  [OK]
bitnami/nginx-ingress-controller                  Bitnami Docker Image for NGINX Ingress Contr…   29                   [OK]
ubuntu/nginx                                      Nginx, a high-performance reverse proxy & we…   97                   
nginxinc/nginmesh_proxy_debug                                                                     0                    
nginxproxy/docker-gen                             Generate files from docker container meta-da…   12                   
nginxinc/mra-fakes3                                                                               0                    
kasmweb/nginx                                     An Nginx image based off nginx:alpine and in…   6                    
rancher/nginx-ingress-controller                                                                  11                   
nginxinc/ngx-rust-tool                                                                            0                    
nginxinc/mra_python_base                                                                          0                    
nginxinc/nginmesh_proxy_init                                                                      0                    
rancher/nginx-ingress-controller-defaultbackend                                                   2                    

参数说明
NAME镜像名称
DESCRIPTION镜像说明
STARS点赞数量
OFFICIAL是否是docker官方发布的
AUTOMATED是否是自动构建的

2、拉取镜像 docker pull

Docker Hub上有大量的高质量的镜像可以用。从Docker镜像仓库获取镜像的命令是docker pull,其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

docker镜像仓库地址:地址的格式一般是<域名/IP>:[端口号],默认地址是Docker Hub。

仓库名:仓库名是两段式名称,即<用户名>/<软件名>。对于Docker Hub,如果不给出用户名,则默认为library,也就是官方镜像。

一个仓库会包含同一个软件不同版本的镜像, 而标签就常用于对应该软件的各个版本。

根据镜像名称(tag指定版本)拉取镜像

#alpine 版本:构建容器小镜像的发型版本
[root@node1 ~]# docker pull nginx:1.14-alpine
1.14-alpine: Pulling from library/nginx
bdf0201b3a05: Pull complete 
3d0a573c81ed: Pull complete 
8129faeb2eb6: Pull complete 
3dc99f571daf: Pull complete 
Digest: sha256:485b610fefec7ff6c463ced9623314a04ed67e3945b9c08d7e53a47f6d108dc7
Status: Downloaded newer image for nginx:1.14-alpine
docker.io/library/nginx:1.14-alpine

#标记本地镜像,将其归入某一仓库
[root@node1 ~]# docker tag nginx:1.14-alpine test/nginx:v1

[root@node1 ~]# docker images
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
nginx        1.14-alpine   8a2fb25a19f5   4 years ago   16MB
test/nginx   v1            8a2fb25a19f5   4 years ago   16MB

#查看镜像的层数
[root@node1 ~]# docker history nginx:1.14-alpine
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
8a2fb25a19f5   4 years ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B        
<missing>      4 years ago   /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B        
<missing>      4 years ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
<missing>      4 years ago   /bin/sh -c #(nop) COPY file:ebf4f0eb33621cc0…   1.09kB    
<missing>      4 years ago   /bin/sh -c #(nop) COPY file:4c82b9f10b84c567…   643B      
<missing>      4 years ago   /bin/sh -c GPG_KEYS=B0F4253373F8F6F510D42178…   10.5MB    
<missing>      4 years ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.14.2     0B        
<missing>      4 years ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B        
<missing>      4 years ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
<missing>      4 years ago   /bin/sh -c #(nop) ADD file:2e3a37883f56a4a27…   5.53MB 
#从下载过程中可以看到镜像是由多层存储所构成,下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的ID的前12位。并且下载结束后,给出该镜像完整的sha256的摘要,以确保下载一致性。

3、查看当前主机镜像列表 docker image

[root@node1 ~]#  docker images
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
nginx        1.14-alpine   8a2fb25a19f5   4 years ago   16MB
test/nginx   v1            8a2fb25a19f5   4 years ago   16MB
#列表包含了仓库名、标签、镜像ID、创建时间以及所占用的空间。
#其中镜像ID则是镜像的唯一标识,一个镜像可以对应多个标签。

[root@node1 ~]# docker image ls
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
nginx        1.14-alpine   8a2fb25a19f5   4 years ago   16MB
test/nginx   v1            8a2fb25a19f5   4 years ago   16MB
[root@node1 ~]# docker image ls nginx
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
nginx        1.14-alpine   8a2fb25a19f5   4 years ago   16MB

(1)如果查看镜像的显示结果中出现了没有仓库名,也没有标签,均为的镜像,可能是因为旧的镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了。除了 docker pull 可能导致这种情况, docker build 也同样可以导致这种现象。 由于新旧镜像同名, 旧镜像名称被取消,从而出现仓库名、 标签均为 的镜像。 这类无标签镜像也被称为虚悬镜像 (dangling image) , 可以用下面的命令专门显示这类镜像:

[root@node1 ~]# docker image ls -f dangling=true

一般来说, 虚悬镜像已经失去了存在的价值, 是可以随意删除的, 可以用下面的命令删除。

[root@node1 ~]# docker image prune

(2)为了加速镜像构建、 重复利用资源, Docker 会利用中间层镜像。 所以在使用一段时间后, 可能会看到一些依赖的中间层镜像。 默认的 docker image ls 列表中只会显示顶层镜像, 如果希望显示包括中间层镜像在内的所有镜像的话, 需要加 -a 参数。

[root@node1 ~]# docker image ls -a

4、导出镜像 docker image save

[root@node1 ~]# docker image save nginx > docker-nginx.tar.gz
[root@node1 ~]# ls docker-nginx.tar.gz
docker-nginx.tar.gz

[root@node1 ~]# docker pull ubuntu:latest
[root@node1 ~]# docker image save -o ./ubuntu_nginx.tar.gz ubuntu:latest nginx:1.14-alpine
[root@node1 ~]# ls 
anaconda-ks.cfg  docker-nginx.tar.gz  ubuntu_nginx.tar.gz

注:
#-o:指定导出镜像的位置;
#可以同时导出多个镜像为一个文件;
#指定.tar.gz 可以导出并压缩。 

5、删除镜像 docker image rm

[root@node1 ~]# docker image rm nginx:1.14-alpine
Untagged: nginx:1.14-alpine
Untagged: nginx@sha256:485b610fefec7ff6c463ced9623314a04ed67e3945b9c08d7e53a47f6d108dc7
[root@node1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    01f29b872827   13 days ago   77.8MB
test/nginx   v1        8a2fb25a19f5   4 years ago   16MB

#也可以使用ID删除镜像
[root@node1 ~]# docker image ls -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    01f29b872827   13 days ago   77.8MB
test/nginx   v1        8a2fb25a19f5   4 years ago   16MB
[root@node1 ~]# docker image rm 01f
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:ec050c32e4a6085b423d36ecd025c0d3ff00c38ab93a3d71a460ff1c44fa6d77
Deleted: sha256:01f29b872827fa6f9aed0ea0b2ede53aea4ad9d66c7920e81a8db6d1fd9ab7f9
Deleted: sha256:bce45ce613d34bff6a3404a4c2d56a5f72640f804c3d0bd67e2cf0bf97cb950c
#查看
[root@node1 ~]# docker image ls -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
test/nginx   v1        8a2fb25a19f5   4 years ago   16MB

6、导入镜像 docker image load

[root@node1 ~]# docker image load -i ubuntu_nginx.tar.gz 
bce45ce613d3: Loading layer [==================================================>]  80.35MB/80.35MB
Loaded image: ubuntu:latest
Loaded image: nginx:1.14-alpine
[root@node1 ~]# docker images
REPOSITORY   TAG           IMAGE ID       CREATED       SIZE
ubuntu       latest        01f29b872827   13 days ago   77.8MB
nginx        1.14-alpine   8a2fb25a19f5   4 years ago   16MB
test/nginx   v1            8a2fb25a19f5   4 years ago   16MB

7、查看镜像的详细信息 docker image inspect

[root@node1 ~]# docker image inspect ubuntu

二、 容器操作

1、启动容器 docker run

docker run 镜像名
(1)格式
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
(2)options 常用命令选项
-t :打开一个终端,像使用交换机一样使用容器
-i:交互式访问
–name:容器名字
–network:指定网络
–rm:容器一停,自动删除
-d:后台运行容器,返回容器ID;否则会一直占据着终端
-p:端口映射,将容器内服务的端口映射在宿主机的指定端口,格式为:主机(宿主)端口:容器端口
-P: 随机端口映射,容器内部端口随机映射到主机的端口

(3)运行容器

[root@node1 ~]# docker run --name web1 -d -p 8888:80 nginx:1.14-alpine
6a0745591dae815edcda2a42832f00b9040e72ecaec3ff0680f7bdb18621e09a

#查询docker端口映射
[root@node1 ~]# docker port web1
80/tcp -> 0.0.0.0:8888
80/tcp -> [::]:8888

#在运行容器时,交互式进入容器
[root@node1 ~]# docker run --name ubuntu1 -it ubuntu /bin/bash
root@e41a01e5d3a7:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
root@e41a01e5d3a7:/# exit  #退出

(4)查询容器运行状态命令 docker ps

[root@node1 ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                                   NAMES
6a0745591dae   nginx:1.14-alpine   "nginx -g 'daemon of…"   4 minutes ago   Up 4 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1

#-a查询所有的容器,包括未运行的容器
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS                     PORTS                                   NAMES
e41a01e5d3a7   ubuntu              "/bin/bash"              2 minutes ago   Exited (0) 2 minutes ago                                           ubuntu1
6a0745591dae   nginx:1.14-alpine   "nginx -g 'daemon of…"   4 minutes ago   Up 4 minutes               0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
#注:容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态! 

2、停止运行的容器 docker stop/kill

docker stop 关闭运行的容器
docker kill 杀死运行的容器
-s:指定信号,和kill 用法一样;-9 强制停止容器

[root@node1 ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                                   NAMES
6a0745591dae   nginx:1.14-alpine   "nginx -g 'daemon of…"   6 minutes ago   Up 6 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@node1 ~]# docker kill web1
web1
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

3、激活关闭的容器 docker start

docker start/restart
格式
docker start [OPTIONS] CONTAINER [CONTAINER…]
Options
-a:附加到当前终端
-i:交互式

[root@node1 ~]# docker start web1
web1
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                                   NAMES
6a0745591dae   nginx:1.14-alpine   "nginx -g 'daemon of…"   8 minutes ago   Up 4 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1

4、查看容器的详细信息 docker inspect

[root@node1 ~]# docker inspect web1 | grep -i address
            "LinkLocalIPv6Address": "",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "IPAddress": "172.17.0.2",
            "MacAddress": "02:42:ac:11:00:02",
                    "IPAddress": "172.17.0.2",
                    "GlobalIPv6Address": "",
                    "MacAddress": "02:42:ac:11:00:02",
[root@node1 ~]# curl 172.17.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

通过当前虚拟机IP+端口号,可在浏览器上访问
在这里插入图片描述

6、 对运行的容器执行指定命令 docker exec

docker exec 或者 docker container exec
格式
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

options 选项
-d:在后台运行命令
-e:设置环境变量
-i:交互式
-t:打开一个终端

[root@node1 ~]# docker run --name web1 -d nginx:1.14-alpine
27d9def6c05bc9a90e2d55d965b7203d4bfc4553b6f3fff027fe5efb4c89fac6
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS     NAMES
27d9def6c05b   nginx:1.14-alpine   "nginx -g 'daemon of…"   19 seconds ago   Up 19 seconds   80/tcp    web1

[root@node1 ~]# docker exec -it web1 /bin/sh
/ # ls /
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # exit

[root@node1 ~]# docker exec web1 ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

7、 删除容器 docker rm

[root@node1 ~]# docker kill web1
web1
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS                          PORTS     NAMES
27d9def6c05b   nginx:1.14-alpine   "nginx -g 'daemon of…"   2 minutes ago    Exited (137) 4 seconds ago                web1
d48ee683c80e   eea7b3dcba7e        "/docker-entrypoint.…"   4 minutes ago    Exited (0) About a minute ago             web2
e41a01e5d3a7   ubuntu              "/bin/bash"              18 minutes ago   Exited (0) 18 minutes ago                 ubuntu1
[root@node1 ~]# docker rm web1
web1
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                          PORTS     NAMES
d48ee683c80e   eea7b3dcba7e   "/docker-entrypoint.…"   5 minutes ago    Exited (0) About a minute ago             web2
e41a01e5d3a7   ubuntu         "/bin/bash"              18 minutes ago   Exited (0) 18 minutes ago                 ubuntu1

#删除所有容器,-f强制删除
[root@node1 ~]# docker rm -f `docker ps -a -q` 
d48ee683c80e
e41a01e5d3a7
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#删除所有处于终止状态的容器
[root@localhost ~]# docker container prune 

8、容器中管理数据

数据卷是一个可供一个或多个容器使用的特殊目录, 它绕过 UFS, 可以提供很多有用的特性:

  1. 数据卷可以在容器之间共享和重用
  2. 对数据卷的修改会立马生效
  3. 数据卷的更新,不会影响镜像
  4. 数据卷默认会一直存在,即使容器被删除

注意: 数据卷的使用, 类似于 Linux 下对目录或文件进行 mount, 镜像中的被指定为挂载点的目录中
的文件会隐藏掉, 能显示看到的是挂载的数据卷 。

1、创建一个数据卷
[root@node1 ~]# docker volume create my-vol
my-vol
[root@node1 ~]# docker volume ls
DRIVER    VOLUME NAME
local     my-vol

2、查看指定数据卷的信息:
[root@node1 ~]# docker volume inspect my-vol
[
    {
        "CreatedAt": "2023-08-18T08:23:53+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": null,
        "Scope": "local"
    }
]

3、启动一个挂载数据卷的容器:
#在用 docker run 命令的时候, 使用 -v 标记来将数据卷挂载到容器里。 在一次 docker run 中可以挂载多个数据卷。
#下面创建一个名为 web 的容器, 并加载一个数据卷到容器的 /usr/share/nginx/html/ 目录。
[root@node1 ~]# docker run -d -P --name web -v my-vol:/usr/share/nginx/html nginx:1.14-alpine
b5f7c39c110079781f2833554e0f2383c6bdb4654e59948f6e095b75a42dcd1a
[root@node1 ~]# docker inspect web
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                     NAMES
b5f7c39c1100   nginx:1.14-alpine   "nginx -g 'daemon of…"   53 seconds ago   Up 52 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   web

[root@node1 ~]# docker volume rm my-vol
Error response from daemon: remove my-vol: volume is in use - [b5f7c39c110079781f2833554e0f2383c6bdb4654e59948f6e095b75a42dcd1a]
[root@node1 ~]# docker rm -f web
web
[root@node1 ~]# docker volume rm my-vol
my-vol
#数据卷是被设计用来持久化数据的, 它的生命周期独立于容器, Docker不会在容器被删除后自动删除数据卷, 并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。 如果需要在删除容器的同时移除数据卷。 可以在删除容器的时候使用 docker rm -v 这个命令。

#无主的数据卷可能会占据很多空间, 要清理请使用以下命令:
[root@node1 ~]# docker volume prune

#查看镜像、容器、数据卷所占用的空间
[root@node1 ~]#  docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          3         0         280.5MB   280.5MB (100%)
Containers      0         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/897377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【仿写框架之仿写Tomact】一、Tomcat的工作流程

文章目录 1、启动阶段2、监听阶段&#xff1a;3、请求处理阶段&#xff1a;4、发送请求处理后的响应 当涉及到Java Web应用程序的部署和运行&#xff0c;Apache Tomcat无疑是一个备受欢迎的选择。Tomcat作为一个开源的、轻量级的Java Servlet容器和JavaServer Pages (JSP) 容器…

搭建UTMFW

UTMFW 是运行在 OpenBSD 上的 UTM 防火墙 github地址&#xff1a;https://github.com/sonertari/UTMFW 下载镜像&#xff1a; 按操作步骤搭建&#xff08;基本没有差别&#xff09;&#xff1a; Welcome to the OpenBSD/arm64 6.9 installation program. (I)nstall or (S)hell…

使用 PyTorch 进行高效图像分割:第 3 部分

一、说明 在这个由 4 部分组成的系列中&#xff0c;我们将使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何使用深度可分离卷积来优化我们的 CNN 基线模型&#xff0c;以减少可训练参数的数量&#xff0c;使模型可部署在移动设备和其他边缘设备上…

阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)推送镜像全过程及总结

前提&#xff1a;安装配置好docker&#xff0c;可参考我这篇 基于CentOS7安装配置docker与docker-compose。 一、设置访问凭证 1.1 容器镜像服务ACR 登录进入阿里云首页&#xff0c;点击 产品-容器-容器镜像服务ACR 点击管理控制台 1.2 进入控制台-点击实例列表 个人容器…

numpy与matplotlib 常用日常代码

matplotlab 和 numpy 可能是python 数据处理工作中用的最多的库了&#xff0c; 官网的文档十分详细&#xff0c;但是就是因为数量庞大&#xff0c;很多时候常用的功能和生僻冷门的功能混在一起&#xff0c;找不到重点。按照二八原则&#xff0c;掌握20%的功能就已经能应付绝大多…

无法打开程序因为msvcp140.dll丢失,msvcp140.dll丢失的解决方法

前几天看到有小伙伴再问什么是msvcp140.dll文件&#xff0c;相信很多人都不知道这是什么吧&#xff0c;如果电脑msvcp140.dll文件丢失的话会怎么样呢&#xff1f;丢失了应该如何找回呢&#xff1f;其实这些都是一些比较常见的电脑知识&#xff0c;我们是需要去了解一下的&#…

Spring Framework中的Bean生命周期

目录 一.Bean生命周期的简介 1.基本概念 2.Spring生命周期的几大阶段 3.注意点及小结 4.生活案例 5.Spring容器管理JavaBean的初始化过程 二. Bean的单例选择与多例选择 1.单例选择与多例选择的优缺点 1.1单例模式的优点&#xff1a; 1.2单例模式的缺点&#xff1a; 1…

HC32L110的串口不定长接收及PCA和IRQ的部分问题

show you the code&#xff1a; https://gitee.com/yangfei_addoil/hc32-l110-b6-test 另&#xff1a;程序中使用帕斯卡命名法的是从官方例程上复制的&#xff1b;使用下划线命名法的是博主的&#xff1b; 串口不定长接收 注意串口要自己绑定/指定到一个定时器上&#xff1b…

【仿写tomcat】一、tomcat工作流程

仿写tomcat 简介tomcat简介流程分析tomcat是怎么和访问者交互的&#xff1f;流程图 简介 作者前不久刚仿写了一个简易的tomcat&#xff0c;在此分享给各位&#xff0c;此篇为对tomcat的简介和流程分析&#xff0c;具体仿写内容后续会贴在这里 扫描java文件&#xff0c;获取带…

基于IMX6ULLmini的Linux裸机开发系列六:中断向量表

ARMv7-A 一级查表 等中断真正发生的时候&#xff0c;自动跳转指定位置(基址偏移) 习惯放在代码的起始地方&#xff0c;复位中断放在代码的零地址&#xff0c;被定义的指定中断放在代码的第四个字节的位置 addrTYPEFUNCTIONMODE0x00Reset复位中断SVC0x04Undefined instructi…

Vue-13.创建完整的Vue项目(vue+vue-cli+js)

前言 之前写了命令创建Vue项目&#xff0c;但是事实上我们可以直接用编译器直接创建项目&#xff0c;这里我使用webstorm&#xff08;因为我是前后端兼修的所以我习惯使用Idea家族的编译器&#xff09; 只写前端的推荐用VsCode前后端都写的推荐用webstorm 新建项目 项目初始…

31.Netty源码之客户端启动流程

highlight: arduino-light 客户端启动主要流程 如果看了服务器端的启动流程&#xff0c;这里简单看下就可以了。 java package io.netty.server; ​ import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import …

酒店要如何应对旅游旺季?报修工单管理系统哪家好?

酒店在高峰旅游时期是其最为繁忙的阶段&#xff0c;这时要处理的报修事项比较多&#xff0c;因此应对措施变得尤为重要。填补酒店房间、应对设备故障等情况&#xff0c;造成了来宾数量和压力的急增&#xff0c;因此需要考虑并采用更加有效的安全保障和服务措施&#xff0c;以确…

传输层协议——TCP(上)

文章目录 1. TCP协议1.1 TCP协议段格式1.2 确认应答(ACK)机制1.3 16位窗口大小1.4 6位标志位1.4.1 TCP三次握手 1.5 确认应答(ACK)机制1.6 超时重传机制1.7 连接管理机制1.7.1 理解TIME_WAIT状态1.7.2 理解 CLOSE_WAIT 状态 1. TCP协议 TCP全称为传输控制协议&#xff0c;意思…

Unity 找不到 Navigation 组件的解决

当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时&#xff0c;有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办&#xff1f; 请确保你的项目中已经导入了Unity的AI模块。要导入该模块&#xff0c;请打开"Project Settings"&am…

论文学习——PixelSNAIL:An Improved Autoregressive Geenrative Model

文章目录 引言论文翻译Abstract问题 Introduction第一部分问题 第二部分问题 Model Architecture网络结构第一部分问题第二部分问题 Experiments实验问题 Conclusion结论问题 总结参考 引言 这篇文章&#xff0c;是《PixelSNAIL:An Improved Autoregressive Geenrative Model》…

在自定义数据集上使用 Detectron2 和 PyTorch 进行人脸检测

本文讲讲述如何使用Python在自定义人脸检测数据集上微调预训练的目标检测模型。学习如何为Detectron2和PyTorch准备自定义人脸检测数据集&#xff0c;微调预训练模型以在图像中找到人脸边界。 人脸检测是在图像中找到&#xff08;边界的&#xff09;人脸的任务。这在以下情况下…

STM32F40X系列FSMC8路驱动LCD显示屏(LY-TFT30-39P-1509 芯片hx8352)

hx8352_8080_8bit_FMSC板级驱动 1.LCD相关1.1LCD参数1.2 LCD引脚1.3 LCD实物1.4 LCD引脚解释 2.接线关系3.STM32F40x基于FMSC16bit修改1)地址偏移2)删除多余GPIO3)修改FMSC的配置4&#xff09;LCD初始化寄存器 3.板驱动程序4.运行结果 1.LCD相关 1.1LCD参数 LCD控制芯片&…

C数据结构与算法——无向图(最小生成树) 应用

实验任务 (1) 掌握Kruskal最小生成树算法&#xff1b; (2) 掌握Prim最小生成树算法。 实验内容 (1) 随机生成一个无向网 G ( V, E )&#xff0c;V { A, B, C, D, E, F }&#xff0c;| E | 11&#xff0c;边的权值取值范围为 [ 1, 40 ]&#xff1b; (2) 使用Prim算法求出图…

离散化思想——只处理有效数据的优化思想

离散化思想——只处理有效数据的优化思想 什么是离散化离散化题目——校门外的树&#xff08;超强版&#xff0c;1e9&#xff09;题目描述输入格式输出格式样例样例输入样例输出 提示 思路分析朴素做法离散化&#xff01;&#xff01;代码分析数组循环 什么是离散化 离散化思想…