(三)Docker----基础镜像(制作镜像),实现动静分离,本地镜像上传docker仓库

搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库 在使用Docker拉取镜像时,Docker首先默认从Docker Hub官方下载镜像,很多时候我们的镜像都是使用Dockerfile自定义私有镜像,不对外公开,而且为了安全起见,docker可能在内网环境下运行,所以我们有必要搭建一套docker本地私有镜像仓库,以供整个内网集群环境使用。搭建镜像仓库主流的有两种方法,一种是使用docker官方提供的registry镜像搭建仓库,简单快捷,但是功能有限; 阅读详情

一. Docker 镜像与制作

从镜像大小上面来说,一个比较小的镜像只有十几 MB,而内核文件需要一百多兆, 因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机的内核,而镜像本身则只提供相应的 rootfs,即系统正常运行所必须的用户空间的文件系统,比如/dev/,/proc,/bin,/etc 等目录,所以容器当中基本是没有/boot目录的,而/boot 当中保存的就是与内核相关的文件和目录。

为什么没有内核?
由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机

Docker 制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作
Docker 的镜像制作分为手动制作和自动制作(基于 DockerFile)

手动制作nginx 镜像(不建议)

下载镜像并初始化系统:
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的 centos 镜像为基础:

[root@docker-server1 ~]# docker pull centos
[root@docker-server1 ~]# docker run -it docker.io/centos /bin/bash 
[root@37220e5c8410 /]# yum install wget -y
[root@37220e5c8410 /]# cd /etc/yum.repos.d/

	#更改 yum 源
[root@37220e5c8410 yum.repos.d]# rm -rf ./* 
[root@37220e5c8410 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo 
http://mirrors.aliyun.com/repo/Centos-7.repo

[root@37220e5c8410 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo 
http://mirrors.aliyun.com/repo/epel-7.repo

yum 安装并配置 nginx:

	#yum 安装 nginx
[root@37220e5c8410 yum.repos.d]# yum install nginx –y 
	
	#安装常用命令
[root@37220e5c8410 yum.repos.d]# yum install -y vim wget pcre pcre-devel zlib \
zlib-devel openssl openssl-devel iproute net-tools iotop 

关闭 nginx 后台运行:

	#关闭 nginx 后台运行
[root@37220e5c8410 yum.repos.d]# vim /etc/nginx/nginx.conf 
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
daemon off; #关闭后台运行

自定义 web 页面:

[root@37220e5c8410 yum.repos.d]# vim /usr/share/nginx/html/index.html
[root@37220e5c8410 yum.repos.d]# cat /usr/share/nginx/html/index.html 
Docker Yum Nginx #自定义 web 界面

提交为镜像:
在宿主机基于容器 ID 提交为镜像
在另一个窗口,不能关闭上一个窗口

     -a指定邮箱
     -m 备注
     -c 指定原生的docker指令
[root@docker-server1 ~]# docker commit -m "nginx image" f5f8c13d0f9f entos-nginx:v1

在这里插入图片描述

带 tag 的镜像提交:
提交的时候标记 tag 号: #标记 tag 号,生产当中比较长用,后期可以根据 tag 标记启动不同版本启动 image启动

[root@docker-server1 ~]# docker commit -m "nginx image" f5f8c13d0f9f centos-nginx:v1

从自己镜像启动容器:

[root@docker-server1 ~]# docker run -d -p 80:80 --name my-centos-nginx jack/centos-nginx /usr/sbin/nginx
ce4ee8732a0c4c6a10b85f5463396b27ba3ed120b27f2f19670fdff3bf5cdb62

访问测试
在这里插入图片描述

DockerFile 制作nginx 镜像(建议)

DockerFile 可以说是一种可以被 Docker 程序解释的脚本,DockerFile 是由一条条的命令组成的,每条命令对应 linux 下面的一条命令,Docker 程序将这些DockerFile 指令再翻译成真正的 linux 命令,其有自己的书写方式和支持的命令,Docker 程序读取 DockerFile 并根据指令生成 Docker 镜像,相比手动制作镜像的方式,DockerFile 更能直观的展示镜像是怎么产生的,有了 DockerFile,当后期有额外的需求时,只要在之前的 DockerFile 添加或者修改响应的命令即可重新生成新的 Docke 镜像,避免了重复手动制作镜像的麻烦

在这里插入图片描述
下载镜像并初始化系统:

docker pull centos

docker run -it docker.io/centos /bin/bash 

cd /opt/ #创建目录环境

mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv

目录结构按照业务类型或系统类型等方式划分,方便后期镜像比较多的时候进行分类

cd dockerfile/web/nginx/

pwd
/opt/dockerfile/web/nginx

编写 Dockerfile
vim ./Dockerfile #生成的镜像的时候会在执行命
令的当前目录查找 Dockerfile 文件,所以名称不可写错,而且 D 必须大写

vim  Dockerfile
#My Dockerfile
	"#"为注释

	#第一行先定义基础镜像,后面的本地有效的镜像名,
	如果本地没有会从远程仓库下载,第一行很重要
	#FROM 是父镜像
FROM centos 
	#镜像维护者的信息
MAINTAINER qcq 123456@qq.com

#USER #容器运行时的用户名和 UID

#WORKDIR /a #当前工作目录
#WORKDIR b #指定工作目录,最终为/a/b

#VOLUME ["/dir_1", "/dir_2" ..] 设置容器挂载主机目录

	#容器环境变量
ENV HOST 192.168.1.120

	# RUN 命令也会使用这面指定的用户执行
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
		#自动解压压缩包
			#包文件导入
	ADD nginx-1.10.3.tar.gz /usr/local/src/ 
	RUN cd /usr/local/src/nginx-1.10.3 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install
	RUN cd /usr/local/nginx/
		#将配置好的文件导入
	ADD nginx.conf /usr/local/nginx/conf/nginx.conf
	RUN useradd nginx -s /sbin/nologin

RUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
RUN echo "test nginx page" > /usr/local/nginx/html/index.html

EXPOSE 80 443 #向外开放的端口

	#运行的命令,每个 Dockerfile 只能有一条,如果有多条则只有最后一条被执行
CMD ["nginx"] 

Dockerfile 构建的镜像里面的 CMD 命令,即指定的命令优先级更高,Dockerfile 的优先级较低一些

准备源码包与配置文件:

	 #配置文件关闭后台运行
cp /usr/local/nginx/conf/nginx.conf .
	 #nginx 源码包
cp /usr/local/src/nginx-1.10.3.tar.gz .

执行镜像构建:

如果Dockerfile有改变,重新构建就可以

	# 最后面是在那个目录下
docker build -it jack/nginx-1.10.3:v1 /opt/dockerfile/web/nginx/

在这里插入图片描述
开始构建
在这里插入图片描述
查看是否生成本地镜像
docker images

从镜像启动容器:

docker run -d -p 80:80 --name yum-nginx nginx:v2 /usr/sbin/nginx
	#只是测试一下
docker run -it --rm -p 80:80 --name yum-nginx nginx:v2 bash

在这里插入图片描述

手动制作编译版本 nginx 镜像(不建议)

过程为在 centos 基础镜像之上手动编译安装 nginx,然后再提交为镜像。

下载镜像并初始化系统:

docker pull centos
docker run -it docker.io/centos /bin/bash 、

[root@86a48908bb97 /]# yum install wget -y
[root@86a48908bb97 /]# cd /etc/yum.repos.d/
	#更改 yum 源
[root@86a48908bb97 yum.repos.d]# rm -rf ./* 
[root@86a48908bb97 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo

[root@86a48908bb97 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo

编译安装 nginx:

	#安装基础包
[root@86a48908bb97 yum.repos.d]# yum install -y vim wget tree lrzsz gcc gcc-c++ \
automake pcre pcre-devel zlib zlib-devel openssl \
openssl-devel iproute net-tools iotop 

[root@86a48908bb97 yum.repos.d]# cd /usr/local/src/
[root@86a48908bb97 src]# wget http://nginx.org/download/nginx-1.10.3.tar.gz
[root@86a48908bb97 src]# tar xvf nginx-1.10.3.tar.gz
[root@86a48908bb97 src]# cd nginx-1.10.3
[root@86a48908bb97 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --withhttp_sub_module
[root@86a48908bb97 nginx-1.10.3]# make && make install
[root@86a48908bb97 nginx-1.10.3]# cd /usr/local/nginx/

关闭 nginx 后台运行:

[root@86a48908bb97 nginx]# vim conf/nginx.conf
user nginx;
worker_processes auto;
daemon off;
	#创建软连
[root@86a48908bb97 nginx]# ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx 

创建用户及授权:

[root@86a48908bb97 nginx]# useradd nginx -s /sbin/nologin
[root@86a48908bb97 nginx]# chown nginx.nginx /usr/local/nginx/ -R

自定义 web 界面:

[root@86a48908bb97 nginx]# echo "My Nginx Test Page" > 
/usr/local/nginx/html/index.html

提交为镜像:

[root@docker-server1 ~]# docker commit -m "test nginx" 86a48908bb97 jack/nginxtest-image
sha256:fce6e69410e58b8e508c7ffd2c5ff91e59a1144847613f691fa5e80bb68efbfa


[root@docker-server1 ~]# docker commit -m "test nginx" 86a48908bb97 jack/nginx-test-image:v1
sha256:474cad22f28b1e6b17898d87f040dc8d1f3882e2f4425c5f21599849a3d3c6a2

从自己的镜像启动容器:

[root@docker-server1 ~]# docker run -d -p 80:80 --name my-centos-nginx 
jack/nginx-test-image:v1 /usr/sbin/nginx
8042aedec1d6412a79ac226c9289305087fc062b0087955a3a0a609c891e1122

访问测试
查看 Nginx 访问日志:在容器当中

装数据库

docker run -it -p 3306:3306 -d  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.34

在这里插入图片描述
在另一个窗口打开

在另一个机器上安装客户端
在这里插入图片描述
在这里插入图片描述

二. 构建基础镜像:基础的命令等

作用:用于制作指定镜像前的操作
也就是会将这个镜像提交为一个base基础镜像
制作其他镜像以这个镜像为基础

缺点:如果给最上面的镜像加东西
就得把下面所有的镜像重新构建build
在这里插入图片描述

1. 基础镜像

vim /opt/centos/Dockerfile
FROM centos

RUN yum install  vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel zip unzip zlib-devel  net-tools lrzsz tree  telnet lsof tcpdump wget libevent libevent-devel bc  systemd-devel bash-completion traceroute  -y

RUN useradd nginx -u 1101 && useradd tomcat -u 1102
  #修改 时区
RUN rm -rf /etc/localtime &&  ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

构建镜像

		在本地
docker build -t centos-base:v1 .

构建镜像---->脚本
在这里插入图片描述
执行bash build-command.sh

最后测试:主要是命令—时区

docker  run -it --rm centos-base:v1 bash

2. 构建jdk镜像

cd /opt/web/jdk

	上传 jdk 二进制包
rz

[root@ jdk]#vim Dockerfile 
	#父镜像为centos-base:v1
FROM centos-base:v1
	该文件必须在本目录下
ADD jdk-8u211-linux-x64.tar.gz /usr/local/src  
RUN ln -sv /usr/local/src/jdk1.8.0_211 /usr/local/jdk
	该文件必须在本目录下
ADD profile /etc/profile                                                                                                                       
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

通过脚本构建:

[root@docker-server1 jdk]# cat build-command.sh 
#!/bin/bash
docker build -t jdk-base:v1 .

最后测试

docker  run -it --rm jdk-base:v1 bash

在这里插入图片描述

将镜像上传到 harbor:

[root@docker-server1 jdk]# docker push 192.168.10.205/centos/centos-7.2.1511-
jdk1.7.0.79

镜像仓库验证

从其他 docker 客户端下载镜像并启动 JDK 容器: #启动的时候本地没有镜像,会从仓库下载,然后从镜像启动容器

在这里插入图片描述

3. 构建 tomcat Base 镜像

编辑 Dockerfile

[root@docker-server1 tomcat8-base]# pwd
/opt/dockerfile/system/centos/tomcat8-base
[root@docker-server1 tomcat8-base]# cat Dockerfile 
#Tomcat Base Image
FROM centos-7.5-jdk:v1

ADD apache-tomcat-8.0.49.tar.gz /apps 
RUN ln -sv /apps/apache-tomcat-8.0.49 /apps/tomcat && mkdir -p /data/tomcat/webapps 

上传 tomcat 压缩包:

[root@docker-server1 tomcat8-base]# ll apache-tomcat-8.0.49.tar.gz 
-rw-r--r-- 1 root root 9413703 Jul 2 10:06 apache-tomcat-8.0.49.tar.gz

通过脚本构建 tomcat 基础镜像:

[root@docker-server1 tomcat8-base]# cat build-command.sh 
#!/bin/bash
docker build -t tomcat-base:v1 .

执行构建:

在这里插入图片描述
测试:端口映射

docker  run -it --rm -p 8080:8080 tomcat-base:v1 bash

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

tomcat构建业务镜像 1

创建 tomcat-app1 和 tomcat-app2 两个目录,代表不同的两个基于 tomcat 的业务

准备 Dockerfile:

[root@docker-server1 tomcat-app1]# pwd
/opt/dockerfile/system/centos/tomcat-app1

[root@docker-server1 tomcat-app1]# cat Dockerfile 
#Tomcat Web Image
FROM tomcat-base:v1 

ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
		#将数据与配置分开写
RUN mkdir /data/tomcat/webapps/myapp/

ADD myapp/* /data/tomcat/webapps/myapp/

ADD server.xml  /apps/tomcat/conf
	#增加权限
RUN chown -R tomcat.tomcat /apps/tomcat/ /apps/apache-tomcat-8.5.42/  /data/tomcat/

CMD ["/apps/tomcat/bin/run_tomcat.sh"]

EXPOSE 8080 8009

需要修改server.xml文件

也就是修改<Host目录
	# 前提是自己配置好s
ADD server.xml /apps/tomcat/conf

在这里插入图片描述

准备自定义 myapp 页面:

mkdir myapp
echo "Tomcat Web Page1" > myapp/index.html

cat myapp/index.html 
Tomcat Web Page1

准备容器启动执行脚本:

[root@docker-server1 tomcat-app1]# cat run_tomcat.sh 
#!/bin/bash
echo "1.1.1.1 abc.test.com" >> /etc/hosts
echo "nameserver 223.5.5.5" > /etc/resolv.conf
/apps/tomcat/bin/catalina.sh start
su - tomcat -c "tail -f /etc/hosts"

chmod +x run_tomcat.sh

准备构建脚本:

[root@docker-server1 tomcat-app1]# cat build-command.sh 
#!/bin/bash
docker build -t tomcat-web:app1 .

执行构建
在这里插入图片描述
从镜像启动容器测试: 不需要加bash

[root@docker-server1 tomcat-app1]# docker run -it -d -p 8888:8080 tomcat-web:app1

访问测试
在这里插入图片描述

tomcat 构建业务镜像 2

准备 Dockerfile:

[root@docker-server1 tomcat-app2]# pwd
/opt/dockerfile/system/centos/tomcat-app2
[root@docker-server1 tomcat-app2]# cat Dockerfile 
#Tomcat Web2 Image
FROM tomcat-base:v1
ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
ADD myapp/* /apps/tomcat/webapps/myapp/
RUN chown www.www /apps/ -R
CMD ["/apps/tomcat/bin/run_tomcat.sh"]
EXPOSE 8080 8009

准备自定义页面:

[root@docker-server1 tomcat-app2]# mkdir myapp
[root@docker-server1 tomcat-app2]# echo "Tomcat Web Page2" > myapp/index.html
[root@docker-server1 tomcat-app2]# cat myapp/index.html 
Tomcat Web Page2

准备容器启动脚本:

[root@docker-server1 tomcat-app2]# cat run_tomcat.sh 
#!/bin/bash
echo "1.1.1.1 abc.test.com" >> /etc/hosts
echo "nameserver 223.5.5.5" > /etc/resolv.conf
su - www -c "/apps/tomcat/bin/catalina.sh start"
su - www -c "tail -f /etc/hosts"

准备构建脚本:

[root@docker-server1 tomcat-app2]# cat build-command.sh 
#!/bin/bash
docker build -t tomcat-web:app2 .

执行构建:

在这里插入图片描述
从镜像启动容器:

[root@docker-server1 tomcat-app2]# docker run -it -d -p 8889:8080 tomcat-web:app2 

访问测试

简单方法直接复制

cd /opt/dockerfile/web/tomcat/
mkdir tomcat-app2/
cp tomcat-app1/* tomcat-app2/ -pv

cd tomcat-app2/
vim myapp/index.html 
Tomcat Web Page2
cat tomcat-app2/build-command.sh
#!/bin/bash
docker build -t tomcat-app2-base:v1 .
docker run -it -d -p 8889:8080 tomcat-app2-base:v1
如果失败 给后面加一个 bash

三. haproxy 镜像

前提准备两个页面
在这里插入图片描述

准备 Dockerfile:

[root@docker-server1 haproxy]# pwd
/opt/dockerfile/system/centos/haproxy
[root@docker-server1 haproxy]# cat Dockerfile 
FROM centos-base:v1                                                                                                                            

RUN yum install make -y

ADD haproxy-1.8.17.tar.gz /usr/local/src

RUN cd /usr/local/src/haproxy-1.8.17 && make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy /usr/sbin/ && mkdir /usr/local/haproxy/run 

ADD haproxy.cfg /etc/haproxy/

ADD run_haproxy.sh /usr/bin

EXPOSE 80 9999

CMD ["/usr/bin/run_haproxy.sh"]

准备 haproxy 源码文件:

准备 haproxy 配置文件:

[root@docker-server1 haproxy]# cat haproxy.cfg 
global
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option forwardfor
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
#打开这项功能
stats uri /haproxy-status
stats auth haadmin:123456

listen web_port
bind 0.0.0.0:80
mode http
log global
balance roundrobin
server web1 192.168.100.101:8888 check inter 3000 fall 2 rise 5
server web2 192.168.100.101:8889 check inter 3000 fall 2 rise 5

运行脚本

cat run_haproxy.sh 
#!/bin/bash
haproxy -f /etc/haproxy/haproxy.cfg
tail -f /etc/hosts

chmod +x run_haproxy.sh

准备构建脚本:

[root@docker-server1 haproxy]# cat build-command.sh 
#!/bin/bash
docker build -t centos-haproxy-base:7.5-1.8.12 .

执行构建 haproxy 镜像
从镜像启动容器:

[root@docker-server1 haproxy]# docker run -it -d -p80:80 -p9999:9999 centos-haproxy-base:7.5-1.8.12

脚本如果不成功: 启动
haproxy  -f /etc/haproxy/haproxy.cfg 

web 访问验证
在这里插入图片描述

基于官方apline基础镜像制作

在这里插入图片描述
在这里插入图片描述

基于官方Ubuntu基础镜像制作

在这里插入图片描述

四. 实现动静分离

在这里插入图片描述

首先在本机实现tomcat镜像
并且在web界面访问成功
然后通过镜像打包

docker save tomcat-app1:v1 > /opt/tomcat-app1.tar.gz
docker save tomcat-app2:v1 > /opt/tomcat-app2.tar.gz

将镜像分别拷贝到101和102

scp 

然后在主机101和102
分别导入镜像

	在101
docker load -i /opt/tomcat-app1.tar.gz

	在102
docker load -i /opt/tomcat-app2.tar.gz

在100的haproxy配置后端两个tomcat的地址

最后测试

切记里面的iptables规则

一般需要备份
iptables-restore < iptables-rule.txt

五. 本地镜像上传至官方 docker 仓库

1. 阿里云

http://cr.console.aliyun.com

  1. 准备账户:
    登录到 docker hub 创建官网创建账户,登录后点击 settings 完善账户信息

在这里插入图片描述
在这里插入图片描述
然后在管理中看具体操作
在这里插入图片描述

登陆
在这里插入图片描述
打标签
在这里插入图片描述
上传
在这里插入图片描述
在这里插入图片描述

下载
在这里插入图片描述

2.docker hub

https://hub.docker.com/

在虚拟机使用自己的账号登录:
docker login https://hub.docker.com/
在这里插入图片描述
在这里插入图片描述

查看认证信息:

登录成功之后会在当前目录生成一个隐藏文件用于保存登录认证信息

给镜像做 tag 并开始上传:

docker images #查看镜像 ID
#为镜像做标记

docker tag 678e2f074b0d docker.io/zhangshijie/centos-nginx

上传至仓库

docker login #默认即登录到 docker 官方网站

docker push docker.io/zhangshijie/centos-nginx

在这里插入图片描述

下载
在这里插入图片描述

本地hub仓库(建议)

Docker之本地镜像发布到阿里云 使用docker命令基于centos创建一个带有新功能镜像,将该镜像发布到阿里云 阅读详情

相关推荐

〖Docker指南⑧〗Docker私有镜像仓库|阿里云|Registry|Harbor

Docker私有镜像仓库|阿里云|Registry|Harbor

开源项目 rich-agent、biga作者。 3698

docker打镜像时怎么使用本地镜像作为基础镜像?

背景:不知道为什么,阿里云加速器拉不下来java.openjdk1.8这个镜像了,但是还好之前本地拉去过一次,于是就用的本地镜像作为基础镜像。将FROM image1改为上面的,然后将命令修改成。就可以将本地镜像作为基础镜像进行打包。

m0_64998696的博客 1414

版电力系统故障录波_故障录波识图与典型故障波形分析

1、设置故障录波的目的故障录波装置是对电力系统运行状况进行监控的一种自动化设备。系统正常运行时,录波装置不启动录波,当系统发生故障时,通过启动录波装置迅速启动录波器录波,直接记录反应故障装置安装处系统故障的电气量。2、故障录波的作用(1)正确评价继电保护和自动装置的工作。(2)正确分析事故的原因并研究防止对侧。(3)发现继电保护和自动装置缺陷。(4)发现一次设备缺陷,及时消除隐患。(5)帮助寻找故...

weixin_42495661的博客 1万+

构建你自己的镜像

whalesay镜像可以做到的更好, 尤其是当你不知道自己想要说什么的时候. 你可以输入更多的命令来让它发声.docker run docker/whalesay cowsay boo-boo在接下来的部分, 你会改进并构建一个新的版本, 这个版本只需要非常少的命令就可以让他”自说自话”. 第一步: 写Dockerfile在此步骤中,你使用Mac文本编辑程序来编写一个简短Dockerfile。一个D

PennJ的专栏 6544

从solidworks导出URDF模型

一、下载sw_urdf_exporter插件 ROS目前提供了SolidWorks转URDF的插件,叫做sw_urdf_exporter,从http://wiki.ros.org/sw_urdf_exporter下载sw2urdfSetup.exe文件,下载后点击安装,安装完成后就能在solidworks中导出URDF模型了。 二、创建solidworks模型 下面以较为简单的四轮小车为例进行说...

weixin_45168199的博客 4万+

HTTPS接口测试翻车实录:为什么浏览器能访问而curl报证书错误?

本文深入分析了HTTPS接口测试中浏览器访问正常而curl报证书错误的典型问题。通过对比浏览器、Postman和curl的工具行为差异,结合Nginx日志与Wireshark抓包,揭示了问题根源在于网络架构中HTTPS请求被意外“降级”为HTTP传输,导致SSL握手失败。文章重点探讨了curl工具严格验证机制暴露的`Peer's Certificate issuer is not recognized`错误,并提供了网络配置修正方案与标准化测试流程。

u9v0w的博客 278

【Linux|Docker】以CentOS 7为基础镜像制作一个目标镜像(Nginx)

问题一:将代码制作进入镜像和使用卷挂载进入容器,那个方式更加好?解释:上述是使用卷。如果有些配置是需要固定到镜像里的,在制作镜像的时候就COPY进去;如果容器启动后可以加载的,就使用卷挂载进入容器使用。问题二:如何让你制作的镜像比较小?解释:1.使用基础镜像要小。2.少使用RUN和COPY,ADD。3.使用镜像启动容器后,再在里面安装软件,使用卷挂载数据。问题三:Dockerfile内容解答:q:为什么有的镜像启动需要接-it,有的不需要?

Stephen_Daa的博客 4153

模拟IC版图DRC实战:手把手教你搞定MIM电容天线错误和ESD.10g违例

本文深入解析模拟IC版图中的MIM电容天线错误和ESD.10g违例问题,提供从错误解码到实战修复的完整指南。通过电路图修改、版图优化和验证闭环等步骤,帮助工程师高效解决DRC错误,特别适用于ADC等精密模拟电路设计。文章还分享了高级排错技巧和预防性设计策略,大幅提升流片成功率。

weixin_27697385的博客 295

什么是Docker容器的基础镜像

基础镜像是一个层叠的文件系统,包含了一系列操作系统的基础层,这些层可以包含操作系统、运行时环境、工具和库等。当使用 Dockerfile 构建新的镜像时,每一个。当你创建一个新的 Docker 容器时,你可以指定一个基础镜像作为起点,然后在这个基础镜像上添加你自己的层,以构建一个新的容器镜像。这种层叠的文件系统结构使得镜像的大小可以最小化,同时保留了构建历史的可追溯性。基础镜像可以是官方 Docker Hub 上的公共镜像,也可以是私有镜像仓库中的镜像,或者是你自己在构建过程中创建的自定义镜像。

m0_61629312的博客 1670

Windows平台MuJoCo仿真环境配置与Qt集成实战

本文详细介绍了在Windows平台上配置MuJoCo物理仿真环境并与Qt框架集成的完整实战流程。内容涵盖从环境准备、库文件配置、项目创建到核心代码编写的每一步,重点解决了Windows下常见的编译链接错误和路径问题,帮助开发者在Windows系统中高效搭建机器人仿真与可视化控制开发环境。

weixin_29221753的博客 172

把群晖NAS变成游戏开发服务器:Perforce与虚幻引擎深度整合的5个关键配置(含.p4ignore模板)

本文详细介绍了如何将群晖NAS配置为游戏开发服务器,重点讲解了Perforce与虚幻引擎的深度整合。通过五个关键配置节点,包括用户权限架构、Workspace策略、资产同步优化、仓库清洁度保障和编辑器深度集成,帮助小型团队打造高效开发环境。文章还提供了实用的.p4ignore模板和优化技巧,显著提升开发效率。

weixin_30430677的博客 317

docker制作自己的基础镜像

一.本地镜像 现在把自己的开发环境打包,取名为fedora-base.tar,然后在docker中,以fedora-base.tar作为基准镜像。 1.创建自己的镜像,放置于/root目录下: # tar --numeric-owner --exclude=/root/rpmbuild ...

chengshi9304的博客 535

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3618

docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服

大家好,这是我学习docker系列的笔记文章,本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服 ,感兴趣的朋友可以看一下以前的文章。

java后端开发的博客,不仅仅是后端开发 4071

SAN存储与协议,了解SCSI、FC和ISCSI

在前面我们介绍SAN存储及iSCSI协议的时候了解到SAN存储其实是一个CS架构的系统。存储系统本身就是整个系统的服务端。以IP-SAN(也就是基于iSCSI的SAN存储)为例,其整体架构如图1所示。 图1 CS架构 对于存储系统来说,通常是由专业的存储厂商提供,比较知名的如EMC、NetAPP、IBM和日立等等。国内存储厂商也迅速崛起,比较知名的如华为、宏杉、浪潮和同友等等。另外,还有一些小的存储厂商,他们往往集中在某个领域,比如专注文件系统或者块存储等等。 除了专业的存储设备外,其实Linux

shuningzhang的专栏 2685

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Docker本地镜像发布到阿里云镜像服务的简易指南

Docker 镜像是用于创建容器的蓝图,包含了运行应用的所有依赖,如代码、运行时、库和配置文件。它们是轻量级、可移植的,确保应用在任何环境中都能一致运行。每个镜像由多个层组成,每层对应Dockerfile中的一个指令,这种分层帮助实现资源共享,优化存储和传输效率。Docker 镜像可以通过docker build创建,也可以从公共或私有仓库如Docker Hub拉取。使用docker pull命令获取镜像,通过docker push将自定义镜像上传至仓库,以便在多台机器或环境中共享和部署。

2806

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【云原生 • Docker】docker 私有仓库的搭建、配置与镜像上传

Docker 私有仓库的搭建、配置,镜像上传至私有仓库案例演示。

商务合作 | 共同学习 | 携手共进 7万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

docker/docker desktop for window环境下创建本地镜像仓库

问题现象: 最近在研究如何在window服务器环境中创建docker本地镜像仓库,由于网上几乎都是基于Linux服务器环境的,所以就能通过参考学习和实践,来完成这个目标。 问题分析: 通过自学,发现了创建docker镜像仓库的一些基本的逻辑原理,这是无论在window还是linux环境下,都肯定是一样的。 那么接下来就开始介绍: 配置:window,docker/docker desktop(window环境建议使用docker desktop) 这里讲解基于docker desktop的步骤:

weixin_42585386的博客 1万+

docker搭建本地镜像仓库

环境准备: 镜像仓库服务器(CentOS 7) 已安装完毕docker服务 搭建开始 1.拉取registry镜像 docker pull registry 2.查看registry镜像 docker images 3.创建registry容器并启动服务 首先在在主机上新建一个目录,供存储镜像 mkdir /usr/local/docke...

木冰的专栏 5195

将docker本地镜像上传远程dockerhub仓库

将docker本地镜像上传远程dockerhub仓库,实现在其他设备上无需建立dockerfile文件来制作镜像。

balabala_333的博客 2530

Docker上传镜像到阿里云或私服仓库

在本地的镜像,可以导出成 tar归档文件,可以把该文件分享给他人使用,然后在其他机器上再导入镜像,就可以使用了。 其实,也可以把本地创建好的镜像上传到公共的或者私有的镜像仓库(最常用)。 一、上传到公共的镜像仓库 这里使用阿里云账号。创建公共的镜像仓库 在“容器镜像服务”里面创建,创建好之后,仓库的基本信息,操作指南里面都有说明。 1、登录阿里云Docker Registry [root@centos7 ~]# docker images REPOSITORY ...

Charge8的博客 3046

windows10 docker 推送本地镜像

推送主要是要设置的非安全库, 本地镜像名称 = repostoty:tag,推送就很快。上传的文件多,耐心一个一个去操作。

一路向前 1453

「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像

手把手教你搭建镜像仓库 一、选择镜像仓库二、使用 Docker 官方仓库1. 注册账号并登录2. 创建私有仓库3. 设置私有秘钥3. 登录 Docker 仓库4. 上传镜像到 Docker 仓库4.1 选择使用的镜像4.2 使用 `docker tag` 命令打 tag4.3 将镜像上传到远程仓库4.4 查看远程仓库4.5 删除本地镜像4.6 下载远程仓库镜像到本地5. 退出 Docker 仓库三、使用阿里云镜像仓库1. 注册账号并登录2. 登录 Docker 仓库......

商亮的技术手册 4130

Docker之镜像上传(手把手教你在Docker中进行镜像上传)

前言 在我们做项目过程中,需要很多的配置文件,这时我们学了Docker镜像上传之后,就可以直接从阿里云服务器上直接拉取依赖下来进行操作 一、镜像上传 1、将jre资源包复制到自己所在的文件中 2、更改Dockerfile文件内容,实现alpine上传 3、使上传文件进行瘦身,使得上传文件大小更小 3、创建github账号,建立一个仓库 在github网站中切换成中文形式,自己可以去创建一个github仓库 4、进入到阿里云服务官网,进行注册镜像仓库 ...

m0_53151031的博客 2万+

docker 制作本地镜像_Docker 创建本地镜像仓库

安装仓库服务配置 https 权限支持修改 docker 配置文件:/etc/docker/daemon.json,增加内容"insecure-registries": ["11.71.91.51:5000"]{"registry-mirrors": ["https://hub-mirror.c.163.com"],"insecure-registries": ["11.71.91.51:500...

weixin_29890403的博客 994

docker镜像仓库

Docker Hub是Docker公司维护的公共Registry。用户可以将自己的镜像保存到Docker Hub免费的repository中。如果不希望比尔访问自己的镜像,也可以购买私有repository。

qq_61507096的博客 2274
上一篇: (二)Docker----安装,docker镜像加速,容器管理,docker命令inspect
下一篇: (四)Docker----本地 docker仓库harbor, 高可用harbor,harbor https配置
(─__─)
博客等级 码龄7年 1万+粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值