Docker概述 镜像-容器基本操作

Docker 概述

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker 是什么?

docker是一个go语言开发的应用容器引擎,用来运行容器里的应用。docker是用来管理容器和镜像的一种的工具。

DOCKER是一个容器引擎(容器的运行时),而非容器。

容器引擎: docker  containerd  podman  rocket

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

容器化越来越受欢迎,因为容器
●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

Docker与虚拟机的区别【重中之重】

特性容器虚拟机
内核隔离性所有容器共享宿主机内核每个虚拟机都有独立的操作系统和内核
资源隔离性使用namespace隔离资源,使用cgroup限制资源的最大使用量完全隔离,每个虚拟机都有独立的硬件资源
启动速度秒级启动速度分钟级启动速度
计算能力损耗容器相当于宿主机的进程,性能几乎没有损耗需要hypervisor虚拟机管理程序对宿主机资源虚拟访问,至少有20~50%资源损耗
系统支持量(单机)单机容量能够支持成百上千个容器单机容量只能支持最多几个虚拟机

容器在内核中支持2种重要技术
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

Linux Namespace提供了以下命名空间(docker六大命名空间) 【重中之重】

1.PID命名空间:使得每个进程只能看到自己及其子进程的进程树
2.网络命名空间:使得每个进程只能看到自己的网络接口和路由表,从而实现网络隔离
3 IPC命名空间:使得每个进程只能看到自己和同一命名空间中的进程的进程间通信(IPC)机制
4.UTS命名空间:使得每个进程只能看到自己的主机名和域名
5.挂载命名空间:使得每个进程只能看到自己的文件系统挂载点和文件系统层次结构
6.用户命名空间:使得每个进程只能看到自己和同一命名空间中的进程的用户和用户组

Docker版本

注意:一年一个版本,23年为24版

 

Docker三大核心概念【重中之重】

●镜像
Docker的镜像是创建容器的基础,也是一个只读的模板文件,里面包含容器中的应用程序所需要的所有内容(包含程序运行文件、配置文件、运行库文件、操作系统、依赖包)
,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

●容器
Docker的容器是用镜像运行的实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离
、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

●仓库
Docker仓库是用来集中保存镜像的地方,有公有仓库和私有仓库之分。
当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 




安装 Docker

目前 Docker 只能支持 64 位系统。

关闭防火墙

systemctl stop firewalld.service
setenforce 0

安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

设置阿里云镜像源

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

安装 Docker-CE并设置为开机自动启动

若yum安装
yum install -y docker-ce docker-ce-cli containerd.io
若tgz安装包安装
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

添加systemctl启停脚本

cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload

运行并开启开机自启

systemctl start docker.service
systemctl enable docker.service 

查看 docker 版本信息

docker version

docker 信息查看

docker infoClient:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers: 0                       # 容器数量Running: 0Paused: 0Stopped: 0Images: 1                           # 镜像数量Server Version: 24.0.4              # server 版本Storage Driver: overlay2            # docker 使用的是 overlay2 文件驱动Backing Filesystem: xfs            # 宿主机上的底层文件系统Supports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfs             # Cgroups 驱动Cgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2Default Runtime: runcInit Binary: docker-initcontainerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939brunc version: ff819c7e9184c13b7c2607fe6c30ae19403a7affinit version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-693.el7.x86_64        # 宿主机的相关信息Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 976.3MiBName: localhost.localdomainID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDTDocker Root Dir: /var/lib/docker             # docker 数据存储目录Debug Mode: falseRegistry: https://index.docker.io/v1/        # registry 地址Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:                            # 加速站点https://6ijb8ubo.mirror.aliyuncs.com/Live Restore Enabled: false




Docker 镜像操作

搜索镜像

格式:docker search 关键字

docker search nginx

获取镜像

格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

docker pull nginx

镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 使用阿里云的镜像,获取镜像加速器配置

将加速地址替换为自己的地址。

mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker

查看镜像信息

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

查看下载到本地的所有镜像

docker imagesREPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    021283c8eb95   2 weeks ago   187M
--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------

根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号
docker inspect 021283c8eb95

●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点

为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest mynginx:web

添加标签后的镜像共用同一个ID(两个标签,为别名。本质上是一个文件) 

docker images | grep nginx

删除镜像

docker rmi 仓库名称:标签    当一个镜像有多个标签时,只是删除其中指定一个的标签,直至所有标签全部删除才会删除镜像
或者
docker rmi 镜像ID号         会直接删除该镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

docker rmi mynginx:web

批量删除镜像

docker image ls -q #只显示镜像ID↓
docker rmi $(docker image ls -q)↓
docker rmi $(docker image ls -q) -f #直接删除 有时镜像可能有多个别名导致无法直接删除

存出镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像
docker save -o mynginx nginx:latest     #存出镜像命名为nginx存在当前目录下
ls -lh

 载入镜像:将镜像文件导入到镜像库中

格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
docker load < mynginx

镜像 存出save      导入load

容器 导出export    导入import

上传镜像到官方仓库

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest soscscs/nginx:xue #给官方镜像更改自己的标签
#添加新的标签时必须在前面加上自己的dockerhub的usernamedocker login                                #登录公共仓库
Username:soscscs
password:abc123456docker push soscscs/nginx:xue               #上传镜像

 




Docker 容器操作

create 容器创建(docker create):就是将镜像加载到容器的过程。

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

格式:docker create [选项] 镜像常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell --name 指定名字(不写这个选项name字段会随机分配。name不能相同)
docker create -it nginx:latest /bin/bash
#/bin/bash为附加的命令可加可不加 看需求

ps 查看容器的运行状态 (此时为create状态还未运行)

docker ps -a            #-a 选项可以显示所有的容器 不加-a只能显示正在运行的CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
2df4f725e3df   nginx:latest   "/docker-entrypoint.…"   4 seconds ago   Created             friendly_agnesi容器的ID号       加载的镜像     运行的程序               创建时间       当前的状态  端口映射  名称

start 启动容器(docker start)

格式:docker start 容器的ID/名称

docker start 2df4f725e3df
docker ps -a

run 创建并启动容器(docker run = create+start  会自行退出,需要加上-d保持后台运行

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。

注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。

docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。


当利用 docker run 来创建容器时, Docker 在后台的标准运行过程【重要】

  1. 检查本地是否有镜像(如果有则使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器)
  2. 利用镜像创建并启动一个容器;
  3. 在只读的镜像层外面挂载一层可读写层(分配一个文件系统给容器);
  4. 从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中(docker0);
  5. 分配一个地址池中的 IP 地址给容器;(1-5启动过程)
  6. 执行用户指定的应用程序,执行完毕后容器被终止运行。(6 运行程序)

docker run centos:7 /usr/bin/bash -c ls /
docker run centos:7 ls  
容器后接命令,
第一条命令为执行/usr/bin/bash,所以要 -c 再指定 ls命令
第二条命令为直接执行ls 就用不着-c了
若是shell脚本(例如for while)等只能在bash运行的,则只能/usr/bin/bash -c [脚本]#查看容器状态
docker ps -a
会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

由于镜像设置中一般指定了默认启动命令,若不手动指定命令,则启动容器时执行默认启动命令(此处为前台启动NGINX)

并且在命令执行完成后容器会退出

docker run -it centos:7 bash
不加 -d(后台启动) 选项会创建容器后直接进入容器进行交互,但是退出容器,容器也会停止docker ps -a



在后台持续运行 docker run 创建的容器(-d后台运行)

需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式后台运行。并且容器所运行的程序不能结束

/usr/bin/bash -c 执行后跟的单条命令  -d持续运行

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"==========================================================================docker ps -a                    #可以看出容器始终处于 UP,运行状态CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS         PORTS     NAMES
4c1257795390   centos:7   "/usr/bin/bash -c 'w…"   About a minute ago   Up About a minute                      wonderful_morse

 -it 进入容器进行交互 -d持续运行

创建容器并持续运行容器
docker run -itd centos:7 bash
docker run -itd --name test1 centos:7 /bin/bash   #-name指定名称

 --rm 执行完成后自动删除容器

docker run -d --name auto_delete --rm centos:7 /usr/bin/bash -c "sleep 10"
--name 指定名称auto_delet
--rm 执行完成后自动删除容器

-p 指定端口用于容器与外界相连 

docker run -d --name test1 -P nginx                #随机映射端口(从32768开始)
docker run -d --name test2 -p 43000:80 nginx       #指定 主机端口:容器端口 映射-P                            #使用随机端口映射,从32768开始-p  宿主机端口:容器端口        #指定端口映射

run命令总结 

docker run [--name 容器名] [--rm] [-it] [-d] [-p 宿主机端口:容器端口 ] 镜像名:标签  [容器启动命令]--name 指定容器名--rm   执行后删除-it    进入容器进行交互-d     保存后台运行不退处-P     随机端口映射,从32768开始-p     宿主机端口:容器端口 指定端口映射

终止容器运行

格式:docker stop 容器的ID/名称
docker stop b88e15b37d83 #30秒等待自行退出
或
docker kill b88e15b37d83 #强杀

查看容器状态 

docker ps -aSTATUS Exited(0) 1 second ago #正常退出

查看容器详细信息 

docker inspect b88e15b37d83

查看容器的输出和日志信息

docker logs 容器的ID/名称 

进入容器

docker exec进入容器

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。 

格式:docker exec -it 容器ID/名称 /bin/bash-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。/bin/bash 使用bash环境登录容器中。 /bin/bash 或是 sh 。
但是不是所有容器都可以用bash或sh进入,要看容器有没有内置

进入容器前,确保容器正在运行 

docker start b88e15b37d83

 进入容器

docker exec -it b88e15b37d83 /bin/bash # 使用bash环境登录到容器中
或
docker exec -it b88e15b37d83 sh        lsexit                #退出容器后,容器仍在运行


 docker attach进入容器 (attach退出容器会把容器停止运行。一般不用)

docker attach #只能看容器输出不能操作。

文件复制到容器中【重中之重】

echo abc123 > ~/test.txt 
#创建文件以便测试
docker cp ~/test.txt b88e15b37d83:/opt/

从容器复制文件到主机【重中之重】

docker cp b88e15b37d83:/opt/test.txt ~/abc123.txt

容器的导出与导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

镜像 存出save      导入load

容器 导出export    导入import

导出格式:docker export 容器ID/名称 > 文件名 

docker export b88e15b37d83 > centos7.tar #后缀名可有可无,便于区分即可
或是
docker export -o centos7.tar b88e15b37d83


导入格式:cat 文件名 | docker import – 镜像名称:标签

cat centos7.tar | docker import - centos7:test #导入后会生成镜像,但不会创建容器
或是
docker import centos7.tar -- centos7:test

删除容器

格式:docker rm [-f] 容器ID/名称

docker stop b88e15b37d83
docker rm b88e15b37d83
#删除已经终止状态的容器
docker rm -f b88e15b37d83
#强制删除正在运行的容器

--rm 执行完成后自动删除容器 

docker run -d --name auto_delete --rm centos:7 /usr/bin/bash -c "sleep 10"
--name 指定名称auto_delet
--rm 执行完成后自动删除容器

批量删除容器

docker ps -a↓
docker ps -a -q #只显示容器ID↓
docker rm $(docker ps -a -q)               #删除没有在运行的容器↓
docker rm $(docker ps -a -q) &> /dev/null  #删除没有在运行的容器,不输出提示信息↓
docker rm -f $(docker ps -a -q)            #即使正在运行的容器也强制删除

批量删除镜像

docker image ls -q #只显示镜像ID↓
docker rmi $(docker image ls -q)↓
docker rmi $(docker image ls -q) -f #直接删除 有时镜像可能有多个别名导致无法直接删除

 以下的命令与上方功能相同。区别仅为没有使用 -q 选项(只显示ID)。所以就需要使用awk进行筛选。

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash            #批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stopdocker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash              #批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rmdocker images | awk 'NR>=2{print "docker rmi "$3}' | bash            #批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi      #删除none镜像

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

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

相关文章

Docker 安装 和 GPU 支持

一、Docker安装过程&#xff08;ubuntu18.04环境&#xff09; 清华镜像 docker 安装&#xff1a;docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 1、由于apt官方库里的docker版本可能比较旧&#xff0c;所以先卸载可能存在的旧版本&…

MySQL(一)基本架构、SQL语句操作、试图

MySQL系列文章 MySQL&#xff08;一&#xff09;基本架构、SQL语句操作、试图 MySQL&#xff08;二&#xff09;索引原理以及优化 MySQL&#xff08;三&#xff09;SQL优化、Buffer pool、Change buffer MySQL&#xff08;四&#xff09;事务原理及分析 MySQL&#xff08;五&a…

异步任务——CompletabelFuture

本专栏学习内容又是来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在学习CompletableFuture之前&#xff0c;必须要先了解一下Future Future 概念 Future接口&#xff08;FutureTask实现类&#xff09;定义了操作异步任务执行的一些方法&#xff0c;如获取异…

前端学习——Vue (Day2)

指令补充 指令修饰符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

每月进度总结 7月1日~7月22日

一个月已经过了三分之二了&#xff0c;感觉这个月是在学校学的很多。也是最充实的三个星期。其中也有发呆&#xff0c;也有过懊悔&#xff0c;今天状态为什么这么差&#xff0c;就学了这一点。但是还有学到知识的喜悦。总之是认识到了自己的很多不足&#xff0c;也找到了相对正…

【笔试强训选择题】Day28.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

基础 | 日志 | 体系介绍

INDEX 总览图上图的说明 总览图 上图的说明 日志体系的结构大约可以概括为 日志门面日志绑定层日志实现日志桥接层 slf4j 是 日志门面&#xff0c;所谓日志门面可以理解为日志总接口 slf4j-log4j、log4j-slf4j-impl 是 日志绑定层&#xff0c;日志绑定层的作用是将 日志门面…

C#using关键字的使用方法

这篇日志记录下C#中using关键字的使用方法。 Using的使用大致分别以下三种&#xff1a; 1&#xff1a;using指令&#xff08;命名空间&#xff09; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; …

【stable diffusion】保姆级入门课程03-Stable diffusion(SD)图生图-涂鸦(绘图)的用法

目录 0.本章素材 1.涂鸦有什么用 2.涂鸦的使用场景是什么 3.操作面板 4.提示词与涂鸦 5.涂鸦与重绘幅度 6.涂鸦的其他用法(自由创作) 7.课后训练 0.本章素材 Realistic Vision V3.0模型(真实系模型)百度网盘链接&#xff1a;https://pan.baidu.com/s/1HkSKW2t4L6wMg…

Day52: 84.柱状图中最大的矩形

84.柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 思路 本题是要找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;所以从栈头&#xff08;元素从栈头弹出&#xff09;到栈底的顺序是从大到小的顺序。例&#xff1a; 三种情况&a…

Kubernetes 使用 helm 部署 NFS Provisioner

文章目录 1. 介绍2. 预备条件3. 部署 nfs4. 部署 NFS subdir external provisioner4.1 集群配置 containerd 代理4.2 配置代理堡垒机通过 kubeconfig 部署 部署 MinIO添加仓库修改可配置项 访问nodepotingress 1. 介绍 NFS subdir external provisioner 使用现有且已配置的NFS…

百度智能汽车负责人储瑞松离职,智驾重心转向ANP3

作者 | 王博 HiEV从多个信息源获悉&#xff0c;百度集团副总裁、百度智能汽车事业部总经理储瑞松将从百度离职。一位知情人士透露&#xff0c;储瑞松「即将启程&#xff0c;返回美国」。 继百度Apollo技术骨干郭阳离职后&#xff0c;储瑞松的变动&#xff0c;更加直白地反映出百…

【贪心算法part05】| 435.无重叠区间、763.划分字母区间、56.合并区间

目录 &#x1f388;LeetCode435. 无重叠区间 &#x1f388;LeetCode763.划分字母区间 &#x1f388;LeetCode 56.合并区间 &#x1f388;LeetCode435. 无重叠区间 链接&#xff1a;435.无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, …

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向&#xff1a;数据仓库围绕特定的主题或业务领域进行建模…

使用Nacos将单体服务注册成微服务的步骤以及相关问题解决

目录 1.改造单体服务的配置文件。 2.添加Nacosw相关的pom依赖 3.在nacos的配置列表中创建配置列表 4.相关问题的解决 1.改造单体服务的配置文件。 &#x1f516;创建一个bootstrap.yml的配置文件该文件通常放置在src/main/resources目录中&#xff0c;并且优先于applicati…

Spring:xml 配置

Bean 配置xml 配置反射模式工厂方法模式Factory Bean 模式配置 在 Spring 中,配置 bean 实例一般使用 xml 配置方式或注解(Annontation) 方式进行配置。 xml 配置 在 xml 配置中分为三种方式,分别为反射模式、工厂方法模式和 Factory Bean 模式。 反射模式:指通过指定 …

C++类与对象(上部曲)

目录 面向过程和面向对象初步认识 类的引入 类的定义 类的两种定义方式&#xff1a; 1. 声明和定义全部放在类体中 2. 类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 类的访问限定符及封装 1 访问限定符 2 封装 类的实例化 类对象的存储方式 this指针 …

已解决-使用Adobe Acrobat去除PDF水印

这个方法只能去带颜色的水印&#xff0c;灰色的去不了&#xff0c;等我有空时候&#xff0c;再写一篇使用PS去除水印的方法&#xff0c;也非常简单。敬请期待 安装软件 网上下载安装Adobe Acrobat Pro DC 安装Adobe PDF打印机 点击“添加打印机” 选择“我的打印机未列出”…

Hadoop——HDFS的Java API操作(文件上传、下载、删除等)

1、创建Maven项目 2、修改pom.xml文件 <dependencies><!-- Hadoop所需依赖包 --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.0</version></dependency&…

【C++】引用

1.引用的基本语法 2.引用注意事项 int &b&#xff1b;//错误 int &ba&#xff1b;//正确 3.引用做函数参数 int temp a&#xff1b; ab&#xff1b; btemp&#xff1b; 4.引用做函数返回值 出现问题&#xff1a; https://www.bilibili.com/video/BV1et411b73Z?p…