关于docker:docker如何修改容器内部文件的方法

Docker批改容器外部文件的办法一共有三种。 1、进入容器外部批改应用上面的命令以命令行的模式能够进入容器的外部对文件进行批改。 docker exec -it 容器ID /bin/bash不过外面没有vim,须要自行装置,装置代码如下所示。不过不举荐这种模式,因为里边的文件是长期的,容器被删除之后,配置就生效了,须要从新配置。 apt-get updateapt-get install vim2、通过docker cp拷贝进行批改能够通过上面的代码将须要批改的文件拷贝进去,批改实现之后再拷贝回去。这种形式其实和第一种差不多,只是不必装置vim,然而容器被删除之后,批改过的内容也会生效。而且须要重启容器能力失效(如同) #将容器中的文件拷贝进去sudo docker cp 容器ID:/etc/mysql/my.cnf /home/tom/#将容器中的文件拷贝回去sudo docker cp /home/tom/my.cnf 容器ID:/etc/mysql/3、应用-v挂载文件夹(举荐)最初一种办法是在启动的时候应用-v将容器外部的文件夹挂载(映射)到本地的某个门路下,当前当前能够间接在本地批改,不须要进入容器外部. #冒号前是本地门路(须要绝对路径),冒号后是容器中的门路$ sudo docker run -p 8000:3000 --name koaapi2 -v /home/kason/work/docker_demo/:/app -d wxm888/docker_demo_koa留神启动容器后,尽管文件会同步到容器内,然而不会失效,要进行重启容器。比方批改了本机的路由,尽管容器内文件会批改,然而申请不到,所以能够感觉在本机开发差不多了再执行挂载文件夹的命令。

January 5, 2022 · 1 min · jiezi

关于docker:Part-1面向-Javascript-开发人员的-Docker-简介基于-Nodejs

Docker开源的利用容器引擎,如果你是从事后端的开发者,置信对这门技术应该是理解或是相熟,而对于很多前端开发者,兴许只是停留在听过的阶段上,甚至不晓得是啥?或是会认为这是后端的技术,我不须要晓得,比如说我,还真的不晓得是什么,然而如果想成为一名资深前端,这部分空缺是须要填补上的。咸鱼也要有幻想嘛,兴许哪天能够跃龙门呢! 本文会通过构建带有web前端代码和mongoDB数据库的全栈node.js应用程序登程,来进一步理解Docker以及它的用处。 什么是DockerDocker 是一个开源的利用容器引擎,基于 Go 语言 并听从 Apache2.0 协定开源。Docker 能够让开发者打包他们的利用以及依赖包到一个轻量级、可移植的容器中,而后公布到任何风行的 Linux、Window 机器上,也能够实现虚拟化。听不懂,是否艰深解释Docker前世今生? 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫dotCloud(搞容器技术)的公司。后果保持不上来,于是开源,后果火了,火了得从新起个牛逼的名字呀,于是Docker就呈现了。 Docker呈现前,如何模仿一个互相隔离的零碎环境?答案就是虚拟机,大家应该都不生疏,很多开发者电脑外面都会装VMWare,通过它,咱们能够变出好几台子电脑,一个装window11、一个装CentOS,装置上我喜爱的QQ、微信等软件,多个子电脑相互隔离、互不影响,美滋滋!然而动不动就几个G、几十个G,磁盘吃不消呀,而且还启动慢。 后面说到了Docker呈现前,虚拟机在做环境隔离上是业界的网红,然而弊病是重,而Docker容器技术,其实也是一种虚拟化技术,而且轻、快、一体化,只须要MB级甚至KB级,不像虚拟机,须要模仿一个操作系统进去,Docker只须要虚构一个小规模的环境(相似“沙箱”)。 不行,我要看数据比对,我才信,安顿.... Docker外围概念上一大节,咱们理解了Docker是一种容器虚拟化技术,更轻、更快、更容易一体化,接下来咱们疾速理解一下它的外围概念后,再去进入咱们明天的主题,在编写代码才更好了解。 Docker的三大外围概念: 镜像(Image)容器(Container)仓库(Repository) 以上关系图能反映出三者之间的关系,此处须要留神的是,咱们说Docker是一种容器技术,然而Docker自身并不是容器,它是创立容器的工具,是利用容器引擎。 镜像,也就是Docker镜像,是一个非凡的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还蕴含了一些为运行时筹备的一些配置参数(例如环境变量),同时镜像不蕴含任何动态数据。 咱们能够有很多镜像,咱们想存起来,而后能够到任何中央去应用它创立容器环境,那么就须要仓库来存储,也就是Docker仓库。 有怎么一个仓库存在,那么所有人都能够往里面存镜像么?不是的,如果寄存了个有问题的镜像,那创立容器时候不就挂了么?所以须要有个负责对Docker镜像进行治理的角色,就是Docker Registry服务(相似仓库管理员)了。官网也提供了公共Registry服务,就是Docker Hub(有点像咱们的npm市场),外面寄存着很多高质量的官网镜像。 同时咱们还能够通过Dockfile文件来定制咱们的镜像,后续有介绍通过下面的介绍,置信大家对Docker应该也有了个大略的意识了,这里提供一些罕用的Docker命令, # 容器$ docker run // 创立并启动容器$ docker start // 启动容器$ docker ps // 查看容器$ docker stop // 终止容器$ docker restart // 查看容器$ docker attach // 进入容器$ docker exec // 查看容器$ docker export // 导出容器$ docker import // 导入容器快照$ docker rm // 删除容器$ docker log // 查看日志# 镜像$ docker search // 检索镜像$ docker pull // 获取镜像$ docker images // 列出镜像$ docker image ls // 列出镜像$ docker rmi // 删除镜像$ docker image rm // 删除镜像$ docker save // 导出镜像$ docker load // 导入镜像# Dockfile定制镜像以及罕用指令$ docker build // 构建镜像$ docker run // 运行镜像COPY // 复制文件ADD // 高级复制CMD // 容器启动指令ENV // 环境变量EXPOSE // 裸露接口# 服务$ docker -v // 查看docker的简要信息$ docker -version // 查看docker版本的简详细信息$ systemctl start docker // 启动docker$ systemctl stop docker // 敞开docker$ systemctl enable docker // 设置开机启动$ service docker restart // 重启docker服务$ service docker stop // 敞开docker服务创立Hello-World容器首先须要下载Docker下载地址,我下载的是Window Docker Desktop,接下来查看版本信息是否下载胜利, ...

January 5, 2022 · 3 min · jiezi

关于docker:Docker入门教程101

虚拟化技术虚拟化技术从1960年代诞生,到2000年左右成为商业产品开始蓬勃发展,比方驰名的VMWare, VirutalBox, KVM, Docker等。 目前大家熟知的虚拟化技术包含虚拟机(VM)和容器(Container)。 虚拟机技术促成了云计算的倒退,让云计算厂商能够提供大量机器实例给到用户。 容器技术促成了云原生的倒退,让运行在云环境的利用能够更好地享受云的劣势。 从传统的物理机,到进化的虚拟机,各自的逻辑架构如下所示: 虚拟机技术里的Hypervisor有2种类型: 第一种:间接和硬件交互,不通过宿主机操作系统,比方HyperKit(Mac OSX),Hyper-V(WIndows),KVM(Linux)。第二种:宿主机操作系统上的一个利用,下面虚拟机示意图示意的是这个类型的Hypervisor,比方VirtualBox/VMWare。Docker是什么Docker没有严格的定义,Docker实质上是利用容器虚拟化技术,让开发者能够将他们的利用、依赖库和配置文件打包到一个可移植的镜像文件里,而后公布到任何风行的Linux机器上运行。 运行这个镜像文件会生成一个虚构容器,应用程序在这个容器里运行,就如同在实在的物理机上运行一样。 容器化技术和Docker不能划等号,最早的容器技术是2008年公布的LXC(Linux Container),然而不够好用,Docker基于LXC做了很多对利用开发敌对的封装和改良,真正带动了容器化技术的风行。 前面随着Docker本身的技术架构演进,放弃了应用LXC,转而应用自研的libcontainer来和Linux kernel交互,前面libcontainer为了合乎OCI(Open Container Initiative)规范,又封装重构为当初驰名的runC。 Docker应用Go语言编写,底层实现上应用Namespace实现容器之间的资源隔离,应用cgroups(Control Groups)做资源限度。 容器技术的逻辑逻辑架构如下所示: 容器是被隔离的过程(isolated process),不要把容器了解为轻量级虚拟机,容器和虚拟机是2种齐全不同的虚拟化技术。 Container Runtime:示意容器运行时,任何满足OCI规范的容器运行时都能够相互替换,就类比虚拟机里的Hypervisor也有VMWare和VirtualBox等不同的实现。目前最风行的容器运行时是由Docker募捐给CNCF的runC。 Docker实现的容器技术和传统的虚拟机相比,除了有下面说的架构上的区别,其它区别如下: 个性Docker虚拟机启动速度秒级分钟级交付/部署开发,测试,生产环境统一-性能近似物理机性能损耗大镜像大小较小,KB-MB较大,GB迁徙/扩大跨平台,可复制-以Docker为代表的容器技术和虚拟机都是虚拟化技术,两者并不是相互取代的关系,它们有各自的实用场景,还能够联合在一起应用。 Docker架构Docker是c/s架构,架构图如下: Docker daemon:简称dockerd,作为服务端,解决Client发过来的申请,治理Docker镜像、容器、网络和存储。 Docker client: 作为客户端和dockerd服务端交互,应用的是RESTful API。docker命令行工具CLI和带界面的docker客户端都能够称为Docker client。Docker client能够和多个dockerd交互。 Docker Registry:镜像仓库,用来存储Docker镜像,有公共仓库(public registry)和公有仓库(private registry),相似GitHub的Public Repo和Private Repo。应用docker pull或docker run命令时,会从咱们配置的registry仓库拉取镜像。应用docker push命令,会把镜像推送到咱们配置的registry仓库。 Docker images: Docker镜像,是一个只读文件,外面有创立Docker容器的指令。一个镜像能够基于其它镜像来创立,比方咱们能够基于已有的ubuntu镜像,增加Nginx和本人的应用程序来创立一个新的镜像。如果要创立本人的镜像文件,须要创立名为Dockerfile的文件,在该文件里依照指定的语法规定来定义创立和运行镜像文件的步骤。 Docker containers:Docker容器,是镜像的运行实例,一个容器实际上就是一个被隔离的过程(isolated process)。Docker容器的生命周期如下图所示: Docker Engine:蕴含有Docker daemon, RESTful API, Docker CLI。 Docker装置装置Desktop即可,Desktop反对Mac, Windows和Linux零碎,蕴含了应用Docker所须要的所有工具集。 装置步骤参考:https://docs.docker.com/get-d... Docker应用咱们以官网的教学镜像作为简略示例。启动Desktop后,在电脑的终端上运行如下命令: docker run -d -p 80:80 docker/getting-started该命令如果发现本地没有docker/getting-started镜像文件,会从官网的镜像仓库Docker Hub上拉取镜像并运行。 ...

January 3, 2022 · 1 min · jiezi

关于docker:docker-rabbitmq-配置教程

最简略的 rabbitmq:3docker run -d -p 5672:5672 rabbitmq:3这个形式,没带治理界面,不能通过 15672 端口拜访后盾治理界面 Q:rabbitmq 的默认账号密码是什么?A:rabbitmq 的默认账号密码都是: guest带治理界面的 rabbitmq运行 rabbitmq:3-management docker run -d -p 15672:15672 -p 5672:5672 rabbitmq:3-management也能够用上面的命令指定默认的账号密码: docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management

January 1, 2022 · 1 min · jiezi

关于docker:自动化集成Docker容器入门简介

前言:该系列文章,围绕继续集成:Jenkins+Docker+K8S相干组件,实现自动化治理源码编译、打包、镜像构建、部署等操作;本篇文章次要形容Docker根底用法。 一、Docker简介1、根底形容Docker作为开源的利用容器引擎,能够把应用程序和其相干依赖打包生成一个Image镜像文件,是一个规范的运行环境,提供可继续交付的能力,通过镜像文件能够创立多个Docker容器,这里能够了解为类创建对象的原理;镜像文件能够推送到仓库Repository中,这里能够了解为Git仓库治理代码的原理。 2、外围概念 Image镜像:蕴含利用和依赖的类库,配置等;Container容器:通过镜像文件创立多个容器,运行打包利用;Repository仓库:寄存镜像文件的云端服务;镜像文件与容器,能够了解为基于快照启动虚拟机;或者类与实例对象的关系。 3、架构原理 Docker基于客户端-服务器的架构模式,Docker的守护过程(daemon)监听客户端的申请命令,从而治理镜像文件、容器等。 二、治理命令1、查docker信息# 查看根底信息docker info# 查看版本信息docker version# 查看命令阐明docker --help2、镜像文件根底命令 # 查看本地镜像列表docker images 或者 docker image ls# 搜寻镜像docker search ImageName# 拉取镜像docker image pull ImageName# 删除镜像docker image rm ImageName推送仓库 首先在云服务平台申请公有的镜像治理仓库,并配置好拜访仓库的账号和明码,通过docker命令把本地镜像文件推送到该仓库,这里以阿里云为例: # 1、登录仓库docker login --username=账户名 仓库_url提醒输入仓库明码:Login Succeeded# 2、查看本地镜像docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcloud-app latest b11d221cc3e0 13 seconds ago 662MB# 3、标记上述镜像docker tag b11d221cc3e0 仓库_url/cicada-image/cloud-app:latest# 4、执行推送命令docker push 仓库_url/cicada-image/cloud-app:latest# 5、拉取该镜像到本地docker pull 仓库_url/cicada-image/cloud-app:latest留神:cicada-image是仓库的命名空间,点击cloud-app能够查看镜像操作的步骤文档: 3、容器治理# 列出正在运行或运行过的容器docker ps -a# 进行容器运行docker stop 容器ID# 删除指定容器docker rm 容器ID# 删除全副暂停容器docker rm -f $(docker ps -a -q)4、入门案例- 拉取hello-world镜像docker image pull hello-world输入日志:Using default tag: latestlatest: Pulling from library/hello-world- 查看本地镜像docker image lsREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest feb5d9fea6a5 7 weeks ago 13.3kB- 运行hello-worlddocker container run hello-world输入日志:Hello from Docker!This message shows that your installation appears to be working correctly.三、构建镜像1、DockerfileDockerfile是一个文本文档,蕴含构建Docker镜像的指令,通过读取该脚本中的指令并执行,实现相干build过程。 ...

December 30, 2021 · 1 min · jiezi

关于docker:关于Docker-Compose的启动顺序的讨论-springboot实战电商项目mall4j

springboot实战电商我的项目mall4j (https://gitee.com/gz-yami/mall4j) java商城零碎源码 以下探讨基于Docker Compose的V2版本: 当初容器编排应用宽泛,大家都在用docker-compose进行网站部署,在部署的过程中,会应用到Mysql,Redis,JAVA后端程序,PHP后端程序之类的,会波及到一个程序的启动先后问题,个别的解决方案都是在Compose文件中,增加depends_on参数,例如: version: "2.4"services: xxl-job-mysql: container_name: xxl-job-mysql environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=123456 image: mysql:5.7 networks: xxl-job-network: ipv4_address: 192.168.189.2 ports: - 3306:3306 restart: always volumes: - ./mysql/data:/var/lib/mysql - ./mysql/initdb:/docker-entrypoint-initdb.d xxl-job-admin: container_name: xxl-job-admin environment: - PARAMS=--spring.datasource.url=jdbc:mysql://xxl-job-mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 \ --spring.datasource.username=root \ --spring.datasource.password=123456 \ --xxl.job.accessToken= image: xuxueli/xxl-job-admin:2.3.0 networks: xxl-job-network: ipv4_address: 192.168.189.3 ports: - 8080:8080 restart: always # 依赖于数据库,先启动数据库再启动JAVA程序 depends_on: - xxl-job-mysqlnetworks: xxl-job-network: driver: bridge ipam: config: - subnet: 192.168.189.0/24 name: xxl-job-network以上编排文件如同看起来没什么问题,但理论执行的时候,在数据库启动后,因为depends_on参数,会在启动数据库后马上启动JAVA程序。不论Mysql是否曾经启动实现。这时候就可能呈现数据库还没启动好,JAVA程序就曾经启动实现,并尝试去连贯数据库,造成连贯失败,JAVA程序报错。所以说,depends_on并没有真正的期待上一个程序启动实现。这个在docker官网文档也有阐明:https://docs.docker.com/compo... ...

December 29, 2021 · 3 min · jiezi

关于docker:Ubuntu20安装docker-ce

简介Docker CE 是收费的 Docker 产品的新名称,Docker CE 蕴含了残缺的 Docker 平台,非常适合开发人员和运维团队构建容器 APP 参考阿里巴巴开源镜像站 首先装置一些必要的零碎工具 sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 装置gpg证书并写入阿里源dockerce镜像信息 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -  sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 更新装置docker ce 查看docker ce 版本

December 24, 2021 · 1 min · jiezi

关于docker:CentOS-7安装dockerceyum安装

一、参考链接阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) Docker CE 镜像 CentOS 7装置docker-ce 1先装置必要零碎工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 增加阿里的源 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/do...sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo 装置 sudo yum makecache fastsudo yum -y install docker-ce    开启docker sudo service docker start 查看版本 docker version        

December 23, 2021 · 1 min · jiezi

关于docker:上传docker镜像到阿里云镜像中心实践

注册并登录阿里云账户需提前在阿里云官网,注册一个用户 进入管制后盾 进入容器镜像服务 创立集体实例 设置Registry明码 创立命名空间 创立镜像仓库 下载镜像docker pull tomcat //下载tomcat镜像 启动容器docker run -d --name="MyTomcat" -p 8888:8080 tomcat //后盾形式,以内部主机端口8888映射容器端口8080,运行Tomcat,容器别名为MyTomcat curl localhost:8888 //测试拜访显示404此处要留神,【有坑】! docker exec -it 2dd5319e4047 /bin/bash //进入容器 cp -r webapps.dist/* webapps //将webapps.dist目录下的所以文件,拷贝到webapps目录 curl localhost:8888 //测试拜访显示失常 提交生成镜像docker commit --help //查看commit帮忙 -a 作者 -m 提交的信息内容 docker commit -a "codingdgsun" -m "Init tomcat webapps" 08635d0f1579 registry.cn-hangzhou.aliyuncs.com/codingdgsun/mytomcat:1.0.0 //提交镜像,作者:codingdgsun;提交的备注信息:Init tomcat webapps;提交的容器ID:08635d0f1579;//镜像的别名:registry.cn-hangzhou.aliyuncs.com/codingdgsun/mytomcat;版本号:1.0.0留神镜像的别名必须是(registry.cn-hangzhou.aliyuncs.com/codingdgsun/mytomcat;版本号:1.0.0):其中,codingdgsun是阿里云镜像服务外面新建的命名空间,不然阿里云镜像核心不容许上传镜像 登录阿里云Docker Registrydocker login registry.cn-hangzhou.aliyuncs.com//输出阿里云用户名和registry明码进行登录docker logout registry.cn-hangzhou.aliyuncs.com //退出登录 ...

December 23, 2021 · 1 min · jiezi

关于docker:上传docker镜像到dockerhub实践

下载镜像docker pull tomcat //下载tomcat镜像 启动容器docker run -d --name="MyTomcat" -p 8888:8080 tomcat //后盾形式,以内部主机端口8888映射容器端口8080,运行Tomcat,容器别名为MyTomcat curl localhost:8888 //测试拜访显示404此处要留神,【有坑】! docker exec -it 2dd5319e4047 /bin/bash //进入容器 cp -r webapps.dist/* webapps //将webapps.dist目录下的所以文件,拷贝到webapps目录 curl localhost:8888 //测试拜访显示失常 提交生成镜像docker commit --help //查看commit帮忙 -a 作者 -m 提交的信息内容 docker commit -a "codingdgsun" -m "Init tomcat webapps" 08635d0f1579 sunjiedg/mytomcat:1.0.0 //提交镜像,作者:codingdgsun;提交的备注信息:Init tomcat webapps;提交的容器ID:08635d0f1579;//镜像的别名:sunjiedg/mytomcat;版本号:1.0.0留神镜像的别名必须是(sunjiedg/mytomcat;版本号:1.0.0):其中,sunjiedg是dockerhub注册的用户名(需提前在dockerhub官网,注册一个用户),不然dockerhub不容许上传镜像 登录dockerhubdocker login //输出dockerhub的用户名和明码docker logout //退出登录 查看dockerhub中的镜像仓库需提前在dockerhub官网,注册一个用户 上传镜像到dockerhubdocker push sunjiedg/mytomcat:1.0.0 //应用命令,上传镜像到dockehub仓库,镜像的名字必须是:dockerhub注册的用户名/镜像的别名:版本号(latest)镜像上传胜利 从dockerhub下载镜像 docker pull sunjiedg/mytomcat:1.0.0//镜像名称为:dockerhub注册的用户名/镜像的别名:版本号(latest)

December 23, 2021 · 1 min · jiezi

关于docker:在银河麒麟高级服务器操作系统V10上安装docker

河汉麒麟高级服务器操作系统 V10 是针对企业级要害业务,适应虚拟化、 云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和 实时性的需要,根据 CMMI 5 级规范研制的提供内生平安、云原生反对、国产 平台深刻优化、高性能、易治理的新一代自主服务器操作系统;同源反对飞腾、 龙芯、申威、兆芯、海光、鲲鹏等自主平台;可撑持构建大型数据中心服务器高 可用集群、负载平衡集群、分布式集群文件系统、虚拟化利用和容器云平台等, 可部署在物理服务器和虚拟化环境、公有云、私有云和混合云环境;利用于政府、 国防、金融、教育、财税、公安、审计、交通、医疗、制作等畛域。公司有个我的项目须要将零碎部署在 kylinos上,刚开始还有点头疼,胆怯各种程序无奈装置和应用,等装置好服务器进行应用的时候发现这不就是基于centos的嘛,尽管基于哪个版本不晓得,然而能够测试的,于是我一顿操作,最初发现它是基于Centos8的,零碎内核版本是 4.19,问题不大,既然是基于Centos8的,那Centos8上能跑的程序,在这必定也能跑,而后我就开始了欢快(苦楚)的装置docker之旅了。 配置阿里云Centos8镜像源之所以要配置 Centos8 的镜像源是因为在装置docker的时候须要额定的一些依赖,而这些依赖在麒麟官网的源外面是没有的。 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo配置阿里云 docker 镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo定义 yum 变量&批改 repo批改 centos 和 docker repo文件中的 $releasever 为 centos_version ,起因是在麒麟服务器操作系统V10中 $releasever被批改为了 10,而咱们须要应用 centos 8的镜像源,如果你不替换,基本上仓库的每一个地址都是404。 echo "8" > /etc/yum/vars/centos_versionsed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.reposed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/CentOS-Base.repo建设yum缓存没啥可说的 yum makecache查看docker-ce 版本yum list docker-ce --showduplicates | sort -rdocker-ce.x86_64 3:20.10.9-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.8-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.7-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.6-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.5-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.4-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.3-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.2-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.1-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.12-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.11-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.10-3.el8 docker-ce-stabledocker-ce.x86_64 3:20.10.0-3.el8 docker-ce-stabledocker-ce.x86_64 3:19.03.15-3.el8 docker-ce-stabledocker-ce.x86_64 3:19.03.15-3.el8 @docker-ce-stabledocker-ce.x86_64 3:19.03.14-3.el8 docker-ce-stabledocker-ce.x86_64 3:19.03.13-3.el8 docker-ce-stable装置docker这里要装置 docker-ce 19.03 版本,因为我在应用最新版 20.10 启动容器时呈现了未知的权限问题,而麒麟服务器操作系统材料绝对较少,我未能找到相应的解决方案,只好退而求其次,换到上一个稳固版本。 ...

December 22, 2021 · 2 min · jiezi

关于docker:如何用Docker-Compose部署项目

[TOC] 前言之前咱们用docker部署了springboot,redis,mysql的我的项目,然而是部署在三个不同的容器里,还须要先晓得redis和mysql的ip地址,手动配置到springboot利用容器里,我只是想疾速在本地进行测试啊,这样老本太高了,有没有什么方法,把他们集中管理呢?比方把它构建成为一个镜像。 方法总是有的,那就是Docker Compose。 之前的我的项目地址:https://github.com/Damaer/Dem... Docker Compose1. Docker Compose是什么?Docker Compose其实就是用来定义和运行简单利用的Docker工具,什么叫简单利用,比方后面写的springboot+redis+mysql,外面就有三个容器,这种多个容器的,用一个工具来治理,它不香么? docker compose 通过配置文件来治理多个 Docker 容器,在配置文件中,所有的容器通过service来进行定义,而后应用docker-compose脚本来启动、进行、重启利用以及利用中的服务和所依赖的容器等。2. Docker Compose 的具体步骤个别是三个步骤: 应用Dockerfile 来定义应用程序的环境在 docker-compose.yml 定义形成应用程序的服务,这样它们能够在隔离环境中一起运行。执行 docker-compose up 命令来启动并运行整个应用程序。我应用的是Mac OS,装Docker的时候曾经把Docker Compose也装置好了,不须要独自装置。 3. 如何在IDEA我的项目外面应用Docker Compose首先pom.xml文件中须要留神配置小写的artifactId: <groupId>com.aphysia</groupId> <artifactId>dockerdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dockerdemo</name> <packaging>jar</packaging>除此之外还须要配置插件: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!-- 将插件绑定在某个phase执行 --> <executions> <execution> <id>build-image</id> <!-- 用户只需执行mvn package ,就会主动执行mvn docker:build --> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>除此之外,Dockerfile是必要的,下面的插件中曾经配置了咱们dockerFile须要放在<dockerDirectory>src/main/docker</dockerDirectory>这个地位,DockerFile外面配置如下: ...

December 21, 2021 · 3 min · jiezi

关于docker:DOCKER特性-LIVE-RESTORE

咱们都晓得Docker是C/S模式架构,通过客户端(CLI)拜访Docker Daemon来创立和治理容器的。在默认状况下,当daemon终止的时候,会进行所有运行的容器。 因而咱们须要对Docker Daemon进行降级或者某些须要重启的保护操作时,都须要导致运行着的容器跟着重新启动。 Live Restore其实,Docker提供了一个个性,能够使得在Daemon不可用的时候,放弃容器持续运行,这样就缩小了在Daemon进行降级或者呈现问题的时候容器的停机工夫。那这个个性就叫做Live Restore 。 通过为Docker Daemon减少以下配置来开启Live Restore个性。在Linux上,默认的配置文件 /etc/docker/daemon.json 里增加 { "live-restore": true}而后重启docker服务。如果应用systemd治理服务,能够通过reload来防止重启docker服务 sudo systemctl reload docker.service其余状况下,能够发送 SIGHUP 信号给dockerd过程。 对于Windows和MacOS上的Docker Desktop,能够通过Desktop节目的Daemon高级配置来开启Live Restore。 配置实现后,能够尝试重启Docker Daemon来查看容器是否会放弃持续运行。重启之前查看容器的启动工夫  WSL -   mengz  docker container inspect portainer_edge_agent -f '{{ .State.StartedAt }}'2021-12-18T09:50:59.761725785Z而后执行 sudo systemctl restart docker.service,在查问一次容器的启动工夫,将发现启动工夫未发生变化,这阐明了容器并没有重启。 Live Restore的限度以后的Live Restore个性能够在进行Daemon保护,或者在Daemon产生问题导致不可用的状况,缩小容器的停机工夫,不过其也有肯定的限度。 Docker版本升级限度 Live Restore仅反对Docker补丁版本升级时可用,也就是 YY.MM.x 最初一位发生变化的降级,而不反对大版本的降级。在进行大版本升级后,可能会导致Daemon无奈从新连贯到运行中容器的问题,这时候须要手动进行运行的容器。 Daemon选项变更 也就是说Live Restore仅仅在某些Daemon级别的配置选项不产生扭转的状况工作,例如Bridge的IP地址,存储驱动类型等。如果在重启Daemon时候,这些选项产生了扭转,则可能会到Daemon无奈从新连贯运行中的容器,这时也须要手动进行这些容器。 影响容器的日志输入 如果Daemon长时间进行,会影响运行容器的日志输入。因为默认状况下,日志管道的缓冲区大小为64k,当缓冲写满之后,必须启动Daemon来刷新缓冲区。 不反对Docker Swarm Live Restore只是独立Docker引擎的个性,而Swarm的服务是由Swarm管理器治理的。当Swarm管理器不可用时,Swarm服务是能够在工作节点上持续运行的,只是不同通过Swarm管理器进行治理,直到Swarm治理复原工作。 总结通过Docker Daemon的 live-restore 个性,咱们能够运行无守护过程(daemonless)的容器,这能够减小容器利用在对Docker Daemon进行保护时候的停机工夫,不过在应用时也有肯定的限度,例如对于降级引擎版本的限度。如果关注无守护过程的容器,能够进一步理解 Podman 。 ...

December 19, 2021 · 1 min · jiezi

关于docker:K8S-生态周报-Helm-新版本发布增强对-OCI-的支持

「K8S 生态周报」内容次要蕴含我所接触到的 K8S 生态相干的每周值得举荐的一些信息。欢送订阅知乎专栏「k8s生态」。Docker v20.10.10 公布这个版本是 Docker v20.10 的第 10 个小版本,这个版本中没有什么太特地的共性问题,然而因为 Go 1.16 中 net/http 包对 $HTTP_PROXY 行为的变动,所以当你为 Docker daemon 设置代理的时候,请确认你曾经正确的设置了 $HTTP_PROXY 和 $HTTPS_PROXY 等。 此版本的其余变更,可参考其 ReleaseNote 。至于 Docker v21.x 短时间内还不会公布,不过外面的确减少了一些值得一提的个性,后续新版本快公布前再跟大家分享。 Helm v3.7 正式公布Helm v3.7 是一个个性版本,咱们一起来看看有哪些值得关注的变更吧。 对 OCI Chart 的反对相干的变更helm chart export 已删除helm chart list 已删除helm chart pull 由 helm pull 代替helm chart push 由 helm push 代替helm chart remove 已删除helm chart save 由 helm package 代替另外, 如果是通过旧版本创立的 OCI chart 须要应用 Helm v3.7 进行从新打包和上传能力应用。 ...

December 19, 2021 · 2 min · jiezi

关于docker:使用-Docker-快速搭建单机版的-Kubernetes-集群

随着容器化、微服务、服务网格、服务编排、DevOps 等云原生技术的风行,咱们也要跟上时代的步调,那么咱们须要怎么上车呢?此时就须要一个易于在本地运行且 Kubernetes 的工具,可在你的笔记本电脑上的虚拟机内轻松创立单机版 Kubernetes 集群,便于咱们应用 Kubernetes 进行日常开发与学习。那么接下让咱们轻松地搭建一个更贴近实在的 K8s 环境。 工具举荐对于本地试验,还能够应用各种 Kubernetes 实现以运行 Kubernetes 群集,如 Kind (https://kind.sigs.k8s.io/)Minikube (https://minikube.sigs.k8s.io/docs/)MicroK8s (https://microk8s.io/)在线体验 K8s (https://labs.play-with-k8s.com/)Dockerized (https://github.com/y0ngb1n/dockerized) 举荐我的集体我的项目,欢送 Star应用下面任一工具的指标都能疾速运行一个本地学习的 Kubernetes 群集,其中我集体最喜爱的是 Kind。 搭建 K8s 集群上面别离尝试 Kind 与 Minikube 创立单机版 Kubernetes 集群。 先装置 kubectl无论应用哪个工具,都须要先正确装置 kubectl Kubernetes 命令行工具,否则装置完 Kind、Minikube 等环境后无奈执行 kubectl 命令。 装置文档:https://kubernetes.io/zh/docs...应用 Kind 创立 K8s 集群kind is a tool for running local Kubernetes clusters using Docker container “nodes”.装置 kindKind 提供了多种装置形式,反对以下形式: On macOS via HomebrewOn macOS via MacPortsOn Windows via ChocolateyInstalling From Release BinariesInstalling From Source这里将在 Linux 环境下以 Installing From Release Binaries 形式进行装置: ...

December 18, 2021 · 3 min · jiezi

关于docker:Dockerfile创建Ubuntu镜像实践

手动装置Linux命令下载Ubuntu镜像docker pull ubuntu 启动一个ubuntu容器docker run -it --name myubuntu01 ba6acccedd29 /bin/bash 查看Ubuntu版本cat /etc/issue//Ubuntu 20.04.3 LTS \n \l 查看ubuntu中根本命令,都无奈应用vim //文本编辑ifconfig //显示或配置网络设备ping //因特网包摸索器,用于测试网络连接量的程序 手动装置命令apt-get update //更新源列表apt-get install -y vim //装置文本编辑命令 apt-get install -y net-tools //装置显示或配置网络设备命令apt-get install -y iputils-ping //装置ping命令 命令装置胜利,测试没问题 应用Dockerfile创立Ubuntu镜像编写dockerfileFROM ubuntuMAINTAINER sunjiedgsunENV MYPATH /usr/localWORKDIR $MYPATHRUN apt-get updateRUN apt-get install -y vim RUN apt-get install -y net-toolsRUN apt-get install -y iputils-pingEXPOSE 80CMD /bin/bash 生成镜像docker build -f dockerfile01 -t myubuntu:1.0.0 . ...

December 17, 2021 · 1 min · jiezi

关于docker:Dockerfile创建CentOS镜像实践

手动装置Linux命令下载CentOS镜像docker pull centos 启动一个centos容器docker run -it --name mycentos01 5d0da3dc9764 /bin/bash 查看CentOS版本cat /etc/redhat-release//CentOS Linux release 8.4.2105 查看centos中根本命令,都无奈应用clear //清屏vim //文本编辑ifconfig //显示或配置网络设备 手动装置命令yum -y install vim //装置文本编辑命令yum install -y net-tools //装置显示或配置网络设备命令yum install -y ncurses //装置清屏命令 命令装置胜利,测试没问题 应用Dockerfile创立CentOS镜像编写dockerfileFROM centosMAINTAINER sunjiedgsunENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum install -y net-toolsRUN yum install -y ncursesEXPOSE 80CMD /bin/bash 生成镜像docker build -f dockerfile01 -t mycentos:1.0.0 . 查看镜像的创立历史过程docker history 1bf47dff9310 应用刚刚生成的镜像,启动一个容器,并测试相干命令,都能够应用

December 17, 2021 · 1 min · jiezi

关于docker:Docker-系列docker-学习十一docker-总结和面试题整理

应用 Docker 容器化封装应用程序的益处:Docker 环境Docker 引擎对立了基础设施环境,包含硬件配置,操作系统的版本,运行时环境的异构 Docker 镜像Docker 引擎对立了程序打包(装箱)的形式,例如 java 程序,go 程序,python 程序等等 Docker 容器Docker 引擎对立了程序部署(运行)形式,例如 java 的部署运行形式为 java -jar...,或者 python 的部署运行 python manage.py runserver,go 的部署运行 go run ... 当初应用 Docker 容器,对立应用 docker run … 应用 Docker 容器化封装应用程序的害处:Docker 是单机应用的,无奈无效集群随着容器数量的回升,治理的老本也越来越高没有无效的容灾或者自愈机制没有预设编排模板,无奈实现疾速,大规模容器调度没有批准的配置管理核心没有容器生命周期的管理工具没有图形化运维工具 等等Docker 如何集群部署,不应用 k8s 的话:docker compose 是单机部署的,应用集群部署咱们能够应用 docker stack 例如 docker compose 部署单机是这个样子的: docker-compose up -d xxx.yml 应用 docker stack 的时候,咱们能够这样: docker stack depoly xxx.yml 咱们来看看 docker stack是什么? Docker 在进行多服务部署和治理时通常会应用Docker Stack来解决大规模部署治理问题 Docker引擎在1.12 版本集成了Docker Swarm, 内置新的容器编排工具docker stack,通过提供冀望状态、滚动降级、简略易用、扩缩容、健康检查等个性简化了利用的治理 ...

December 17, 2021 · 2 min · jiezi

关于docker:如何基于-Docker-快速搭建-Springboot-Mysql-Redis-项目

[TOC] 前言有时候咱们须要疾速启动一些我的项目,然而环境往往折腾了良久,因而弄一个能够重用的疾速搭建的教程,docker几乎就是这方面的神器,Docker 是一个开源的利用容器引擎,让开发者能够打包他们的利用以及依赖包到一个可移植的镜像中,而后公布到任何风行的 Linux或Windows操作系统的机器上,也能够实现虚拟化。 本教程基于的前提条件: 机器曾经装置配置好JDK1.8,并且环境变量曾经配置胜利Maven曾经配置好,IDEA中我的项目应用的默认Maven也配置胜利本地机器装置好Docker顺便提一句,我用navicat作为数据库可视化操作工具我的项目地址:https://github.com/Damaer/Dem... 我的项目目录├── src :源代码| ├── main| | ├── java| | | ├── com.aphysia.springbootdemo| | | | ├── config:配置| | | | | ├── RedisConfig:redis配置| | | | ├── constant:常量| | | | | ├── RedisConfig:redis常量| | | | ├── controller:控制器| | | | ├── mapper:数据库操作接口| | | | ├── model:实体类| | | | ├── service:逻辑解决层,包含接口以及实现类| | | | | ├── impl:接口实现类| | | | ├──util:工具类| | | | | ├── RedisUtil:redis工具类| | | | ├──SpringdemoApplication:启动类| | ├── resource| | | ├── mapper 数据库操作sql| | | ├── application.yml:全局配置类| | | ├── user.sql: 初始化mysql| ├── test: 测试类 ├── pom.xml :我的项目maven依赖关系整体的目录如下: ...

December 17, 2021 · 10 min · jiezi

关于docker:Dockerfile使用入门

应用Dockerfile生成镜像,并挂载数据卷编写Dockerfile 留神:命令单词全副大写FROM ubuntuVOLUME ["volume1","volume2"]CMD echo "------Done------"CMD /bin/bash 查看docker build帮忙docker build --help //查看docker build帮忙 -f //dockerfile文件门路 -t //镜像别名:版本号 生成镜像并挂载数据卷docker build -f /Users/sunjie/Desktop/test-dockerfile/dockerfile01 -t my_ubuntu:1.0.0 . //执行dockerfile生成镜像 启动一个容器docker run -it bbef8a39891f /bin/bash 在容器一个挂载卷中,新建文件 查看容器元数据,挂载卷的里面主机的目录docker inspect 1c259b42fc70 查看里面物理主机相应目录内容,留神,在Mac上,此处有坑cd /var/lib/docker/volumes/568d0c3e0d3267bbace8e99c0a75b1d0e2037a919b2e629861727d5889624582/_data//提醒找不到目录或文件 no such file or directory: /var/lib/docker/volumes/568d0c3e0d3267bbace8e99c0a75b1d0e2037a919b2e629861727d5889624582/_data 解决方案docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh //执行此命令 跳转目录,找到物理主机相应目录内容

December 16, 2021 · 1 min · jiezi

关于docker:关于MySQL的容器数据卷挂载实践

对于MySQL的容器数据卷挂载实际下载mysql 5.7 镜像docker pull mysql:5.7 //下载mysql 5.7 镜像 启动mysql容器,并挂载相应目录docker run -d -p 3307:3306 -v /Users/sunjie/Desktop/conf:/etc/mysql/conf.d -v /Users/sunjie/Desktop/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=112233 --name="mysql01" mysql:5.7 //后盾形式运行mysql:5.7,数据库明码为:112233,容器别名:mysql01//内部主机端口3307映射到容器中的3306端口//将内部主机/Users/sunjie/Desktop/conf目录与容器中/etc/mysql/conf.d目录进行映射//将内部主机/Users/sunjie/Desktop/data目录与容器中/var/lib/mysql目录进行映射 应用MySQLWorkBench连贯容器中的MySQL 在容器数据库中新建一个数据库 内部主机数据文件夹和容器内数据文件夹比照 删除容器后,内部主机数据文件夹还在,没有失落

December 15, 2021 · 1 min · jiezi

关于docker:Docker容器数据卷挂载使用

Docker容器数据卷挂载应用docker run --help //查看运行容器帮忙 docker run -it -v /Users/sunjie/Desktop:/home tomcat //以交互方式运行tomcat容器,并将内部主机的/Users/sunjie/Desktop与tomcat容器的/home目录进行映射 docker exec -it 7ff84fa6ad4c /bin/bash //进入容器查看目录内容 查看内部主机目录内容 docker inspect 7ff84fa6ad4c //查看容器元数据信息,确认数据卷挂载是否胜利 在容器内目录创立文件,在内部主机目录能够查看到 在内部主机目录创立文件,在容器内目录能够查看到 留神删除容器后,内部主机挂载目录外面的文件还在,没有失落

December 15, 2021 · 1 min · jiezi

关于docker:Golang实战-查询docker-search-name的镜像标签

背景应用docker search mysql这个命令能够显示有哪些镜像,但不能显示有哪些tag,可是咱们应用docker pull mysql:TAG下载镜像的时候却必须要指定标签,而且很多时候咱们要指定特定的版本,标签只能从docker hub下面找: https://hub.docker.com/_/mysql?tab=tags 这样太累了,咱们来搞个我的项目间接在命令行中查问指定镜像的标签。 示例最终成果见: https://github.com/safeie/docker-search-tag docker-search-tag mysql显示后果: Tags for mysql:TAG SIZE(MB) LASTPUSHlatest 144 2021-12-02T11:43:26Z8.0.4-rc 83 2018-03-14T08:42:43Z8.0.4 83 2018-03-14T08:42:43Z8.0.3 107 2018-02-17T09:43:00Z8.0.1 86 2017-06-24T13:36:11Z8.0.0 126 2017-04-10T23:29:13Z8.0 144 2021-12-02T11:43:21Z8 144 2021-12-02T11:43:20Z5.7.36 147 2021-12-02T11:43:09Z5.7.35 147 2021-10-12T16:42:35Z5.6.28 106 2016-02-02T22:41:46Z5.6.27 106 2015-12-17T03:17:56Z5.6 98 2021-12-02T11:43:04Z5.5 63 2019-05-10T23:43:32Z5 147 2021-12-02T11:42:49Z基本思路就是,hub.docker.com这里的查问页面有提供JSON的后果,咱们能够通过剖析JSON数据,打印出想要的后果。 编码结构命令行参数咱们结构的命令行参数心愿是这样的: Usage: docker-search-tag NAME [NUM]反对两个参数: NAME 镜像名称NUM 标签数量,可选参数func main() { var name, num string if len(os.Args) < 2 || len(os.Args[1]) == 0 { fmt.Println("Usage: docker-search-tag NAME [NUM]") return } name = os.Args[1] num = "100" if len(os.Args) == 3 && len(os.Args[2]) > 0 { num = os.Args[2] } fmt.Println(name, num)}通过 os.Args来判断输出的参数,第零个参数是程序自身,第一个为 NAME,第二个为 NUM,第二个参数可省略,如果没有输出参数,那么给出提醒并终止程序。 ...

December 15, 2021 · 4 min · jiezi

关于docker:提交Docker镜像

提交Docker镜像docker pull tomcat //下载tomcat镜像 docker run -d --name="MyTomcat" -p 8888:8080 tomcat //后盾形式,以内部主机端口8888映射容器端口8080,运行Tomcat,容器别名为MyTomcat curl localhost:8888 //测试拜访显示404此处要留神,【有坑】! docker exec -it 2dd5319e4047 /bin/bash //进入容器 cp -r webapps.dist/* webapps //将webapps.dist目录下的所以文件,拷贝到webapps目录 curl localhost:8888 //测试拜访显示失常 docker commit --help //查看commit帮忙 -a 作者 -m 提交的信息内容 docker commit -a "codingdgsun" -m "Init tomcat webapps" 27db1b0306bd mytomcat:1.0.0 //提交镜像,作者:codingdgsun;提交的备注信息:Init tomcat webapps;提交的镜像ID:27db1b0306bd;镜像的别名:mytomcat;版本号:1.0.0

December 15, 2021 · 1 min · jiezi

关于docker:可视化图形工具Portainer

Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer能够轻松构建,治理和保护Docker环境。 而且完全免费,基于容器化的装置形式,不便高效部署。docker run -d -p 8888:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer //下载并运行portainer localhost:8888 //测试查看网站 创立用户,进行登录 抉择查看治理本地容器

December 14, 2021 · 1 min · jiezi

关于docker:Docker实践及命令梳理

docker装置筹备工作 卸载旧版本的docker$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine零碎要求 Docker 反对 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但因为内核版本比拟低,局部性能(如 overlay2 存储层驱动)无奈应用,并且局部性能可能不太稳固。 应用yum装置 sudo yum install -y yum-utils 鉴于国内网络问题,强烈建议应用国内源,官网源请在正文中查看。 执行上面的命令增加 yum 软件源: $ sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo# 官网源# $ sudo yum-config-manager \# --add-repo \# https://download.docker.com/linux/centos/docker-ce.repo如果须要测试版本的 Docker 请执行以下命令: 如果须要测试版本的 Docker 请执行以下命令:更新 yum 软件源缓存,并装置 docker-ce。 ...

December 14, 2021 · 1 min · jiezi

关于docker:Docker上部署服务应用

部署Nginxdocker pull nginx //下载Nginx镜像 docker run -d --name="MyNginx01" -p 3090:80 nginx //后盾形式,以内部主机端口3090映射容器端口80,运行Nginx,容器别名为MyNginx01 curl localhost:3090 //在内部主机测试容器Nginx服务 docker exec -it 53c01c475a1e /bin/bash //进入容器whereis nginx //查看Nginx所在位置 部署Tomcatdocker run -it --rm -p 8888:8080 tomcat:9.0 //交互方式,以内部主机端口8888映射容器端口8080,运行Tomcat。用完后,退出容器后,立刻删除镜像,个别用于测试应用。ctrl + c //退出,查看镜像,的确隐没了 docker pull tomcat //下载Tomcat镜像 docker run -d --name="MyTomcat" -p 8888:8080 tomcat //后盾形式,以内部主机端口8888映射容器端口8080,运行Tomcat,容器别名为MyTomcat curl localhost:8888 //测试拜访显示404此处要留神,【有坑】! docker exec -it 2dd5319e4047 /bin/bash //进入容器 cp -r webapps.dist/* webapps //将webapps.dist目录下的所以文件,拷贝到webapps目录 curl localhost:8888 //测试拜访显示失常 部署Elasticsearchdocker run -d --name="MyElasticsearch" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2 //下载并运行elasticsearch ...

December 14, 2021 · 1 min · jiezi

关于docker:彻底搞懂容器技术的基石-namespace-下

大家好,我是张晋涛。 目前咱们所提到的容器技术、虚拟化技术(不管何种抽象层次下的虚拟化技术)都能做到资源层面上的隔离和限度。 对于容器技术而言,它实现资源层面上的限度和隔离,依赖于 Linux 内核所提供的 cgroup 和 namespace 技术。 咱们先对这两项技术的作用做个概括: cgroup 的次要作用:治理资源的调配、限度;namespace 的次要作用:封装形象,限度,隔离,使命名空间内的过程看起来领有他们本人的全局资源;这是一个系列文章,对此系列感兴趣的小伙伴能够查看: 彻底搞懂容器技术的基石:cgroup彻底搞懂容器技术的基石:namespace(上)本篇咱们将持续聊 namespace。 Namespace 类型咱们先来总览一下 namespace 的类型,上篇中曾经为大家介绍过 Cgroup , IPC, Network 和 Mount 等 4 种类型的 namespace。咱们持续聊残余的局部。 namespace名称应用的标识 - Flag管制内容CgroupCLONE_NEWCGROUPCgroup root directory cgroup 根目录IPCCLONE_NEWIPCSystem V IPC, POSIX message queues信号量,音讯队列NetworkCLONE_NEWNETNetwork devices, stacks, ports, etc.网络设备,协定栈,端口等等MountCLONE_NEWNSMount points挂载点PIDCLONE_NEWPIDProcess IDs过程号TimeCLONE_NEWTIMEBoot and monotonic clocks启动和枯燥时钟UserCLONE_NEWUSERUser and group IDs用户和用户组UTSCLONE_NEWUTSHostname and NIS domain name主机名与 NIS 域名PID namespaces咱们晓得在 Linux 零碎中,每个过程都会有本人的独立的 PID,而 PID namespace 次要是用于隔离过程号。即,在不同的 PID namespace 中能够蕴含雷同的过程号。 ...

December 14, 2021 · 4 min · jiezi

关于docker:Docker-容器-100-问

Docker 容器之间通信? 容器连贯 host 的mqLinux主机中起了一个 rabbitmq 容器,又起了一个 xxx 服务容器,这个 xxx 怎么连贯到 rabbitmq 容器?因为都是在一台 Linux 中,我在 xxx 服务容器中填写 localhost + 端口貌似不行,把 localhost 改成 内网 ip 就行,比方 (192.168.31.100),然而写死为内网IP不行呀,因为内网IP会变动Q: Docker 容器日志如何收集?A: Q: 通过 docker-compose 的 env_file 选项,是复制 .env 文件到容器中,还是只是简略的设置环境变量? A: 只是简略的设置环境变量,并不会把宿主机中的 .env 文件复制到容器中,而只是把 .env 中的条目配置问容器的环境变量。 能够应用上面的代码自行测试 main.py import os# print(os.environ)print(os.environ['HOST'], type(os.environ['HOST']))print(os.environ['PORT'], type(os.environ['PORT']))print(os.getcwd())print(os.listdir())构建镜像 sudo docker build -t "testing/docker_log" . Dockerfile FROM python:3.9.9-slimENV PYTHONUNBUFFERED 1RUN mkdir /codeWORKDIR /codeCOPY main.py /code/运行容器 docker-compose up docker-compose.yaml version: "3"services: docker_log_service: container_name: docker_log_service image: testing/docker_log network_mode: "host" env_file: - .env command: python main.py

December 13, 2021 · 1 min · jiezi

关于docker:docker容器高性能之文件句柄

一、前言 前段时间共事遇到了一个容器内文件句柄透露的问题,容器外部偶发性呈现Too many open files报错。过后的文件句柄配置如下: 问题是不是来了,主机的文件句柄和容器的文件句柄数有关系吗?是什么关系呢?这就是以下要探索探讨的问题。 两头记录了试验的过程,导致篇幅有点长,心急的小伙伴们能够间接跳转至四章节《论断剖析》。 二、docker容器启动流程 docker是典型的client-server类型的利用,能够应用docker version命令查看服务端和客户端的信息: docker启动容器的大抵流程如下: 注: 右边黄色文字框中对应的是在Linux下的常驻过程名称;重点在runc创立容器子过程的时候,会传入相干的namespace参数进行资源隔离(用户隔离是基于Linux的CLONE_NEWUSER这个namespace); 三、本地试验过程 正好本地有个现成的war包,就用了tomcat容器来测试,用Dockerfile将war拷贝到webapps下就行了。Dockerfile如下: FROM tomcat:8.5.72-jdk8RUN useradd dockertester -m -d /home/dockertester \ && gpasswd -a dockertester dockertester \ && chown dockertester:dockertester -R /usr/local/tomcatADD --chown=dockertester pftest.war /usr/local/tomcat/webappsUSER dockertesterCMD ["catalina.sh", "run"]CentOS Linux release 7.4.1708 (Core)docker-19.03.9tomcat:8.5.72-jdk8(一)应用Linux默认配置,2000并发测试环境筹备1: 应用Dockerfile构建利用镜像;应用locust【比拟省资源】进行并发申请,须要本人写压测脚本;ulimit -n查看以后文件句柄数限度(默认普通用户都是1024): [root@localhost ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7216 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7216 virtual memory (kbytes, -v) unlimited file locks (-x) unlimitedcat /proc/sys/fs/file-max查看零碎最大句柄数限度(默认181953);[root@localhost ~]# cat /proc/sys/fs/file-max181953在容器内查看java过程以后文件句柄数限度状况(以后容器内java过程文件句柄数最大为1048576,这数值哪来的前面解释):dockertester@9798be4fb19c:/usr/local/tomcat$ cat /proc/$(ps -A | grep java | awk '{print $1}')/limits | grep "files"Max open files 1048576 1048576 files 测试执行2分钟,没有任何报错。 ...

December 12, 2021 · 2 min · jiezi

关于docker:Docker-系列docker-学习十Compose-编写规则及wp-实战

yaml 规定docker-compose.yaml 是 Compose 的外围,咱们肯定要学会 yaml 编写的规定 当然,咱们还是查看官网文档,compose 局部 compose file yaml 文件的构造分为三层: version版本号 services服务名 其余配置,如网络,挂载等公共的货色version:'' # 版本号services: 服务器1 web: 以后服务的配置,这个局部就能够和DockerFile 写的差不多了 build depends_on ... 服务2 redis: ... 服务n mongodb: network:volume:...其余配置下面说的到版本号在哪里找呢?进入 dockerhub 网页,https://docs.docker.com/compo... 官网上的这些都是能够应用的版本,如官网给出的例子: version: "3.9"services: redis: image: redis:alpine ports: - "6379" networks: - frontend deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure ... networks: frontend: backend:volumes: db-data:services 和 其余命令都能够写什么呢?services 上面能够写的命令十分的多,文档上也讲的十分的具体 Service configuration reference build # 构建容器的门路 ...

December 11, 2021 · 2 min · jiezi

关于docker:搞懂容器技术的基石-namespace-上

大家好,我是张晋涛。 目前咱们所提到的容器技术、虚拟化技术(不管何种抽象层次下的虚拟化技术)都能做到资源层面上的隔离和限度。 对于容器技术而言,它实现资源层面上的限度和隔离,依赖于 Linux 内核所提供的 cgroup 和 namespace 技术。 咱们先对这两项技术的作用做个概括: cgroup 的次要作用:治理资源的调配、限度;namespace 的次要作用:封装形象,限度,隔离,使命名空间内的过程看起来领有他们本人的全局资源;在上一篇文章中,咱们重点聊了 cgroup 。本篇,咱们重点来聊 namespace 。 Namespace 是什么?咱们援用 wiki 上对 namespace 的定义: Namespaces are a feature of the Linux kernel that partitions kernel resources such that one set of processes sees one set of resources while another set of processes sees a different set of resources. The feature works by having the same namespace for a set of resources and processes, but those namespaces refer to distinct resources.namespace 是 Linux 内核的一项个性,它能够对内核资源进行分区,使得一组过程能够看到一组资源;而另一组过程能够看到另一组不同的资源。该性能的原理是为一组资源和过程应用雷同的 namespace,然而这些 namespace 实际上援用的是不同的资源。 ...

December 10, 2021 · 4 min · jiezi

关于docker:Docker容器中使用GPU

背景 容器封装了应用程序的依赖项,以提供可反复和牢靠的应用程序和服务执行,而无需整个虚拟机的开销。如果您已经花了一天的工夫为一个迷信或 深度学习 应用程序提供一个蕴含大量软件包的服务器,或者曾经破费数周的工夫来确保您的应用程序能够在多个 linux 环境中构建和部署,那么 Docker 容器十分值得您破费工夫。 装置增加docker源 [root@localhost ~]# sudo yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoLoaded plugins: fastestmirror, langpacksadding repo from: https://download.docker.com/linux/centos/docker-ce.repograbbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.reporepo saved to /etc/yum.repos.d/docker-ce.repo[root@localhost ~]#[root@localhost ~]# cat /etc/yum.repos.d/docker-ce.repo[docker-ce-stable]name=Docker CE Stable - $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stableenabled=1gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-stable-debuginfo]name=Docker CE Stable - Debuginfo $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/stableenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-stable-source]name=Docker CE Stable - Sourcesbaseurl=https://download.docker.com/linux/centos/$releasever/source/stableenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-test]name=Docker CE Test - $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/$basearch/testenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-test-debuginfo]name=Docker CE Test - Debuginfo $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/testenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-test-source]name=Docker CE Test - Sourcesbaseurl=https://download.docker.com/linux/centos/$releasever/source/testenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-nightly]name=Docker CE Nightly - $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/$basearch/nightlyenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-nightly-debuginfo]name=Docker CE Nightly - Debuginfo $basearchbaseurl=https://download.docker.com/linux/centos/$releasever/debug-$basearch/nightlyenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[docker-ce-nightly-source]name=Docker CE Nightly - Sourcesbaseurl=https://download.docker.com/linux/centos/$releasever/source/nightlyenabled=0gpgcheck=1gpgkey=https://download.docker.com/linux/centos/gpg[root@localhost ~]#下载安装包 ...

December 9, 2021 · 3 min · jiezi

关于docker:阿里云镜像使用阿里云Docker-CE-镜像安装Docker

一、参考链接阿里巴巴开源镜像站:阿里巴巴开源镜像站 Docker CE 镜像:Docker CE 镜像 二、Docker CE简介Docker CE 是收费的 Docker 产品的新名称,Docker CE 蕴含了残缺的 Docker 平台,非常适合开发人员和运维团队构建容器 APP。下载链接:https://mirrors.aliyun.com/docker-ce/ 三、应用阿里云Docker CE镜像装置Docker1、SSH连贯CentOS 7零碎 2、基于CentOS 7装置配置Docker(应用 yum 进行装置)# step 1: 装置必要的一些零碎工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 增加软件源信息sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# Step 4: 更新并装置Docker-CEsudo yum makecache fastsudo yum -y install docker-ce# Step 4: 开启Docker服务sudo service docker start# 留神:# 官网软件源默认启用了最新的软件,您能够通过编辑软件源的形式获取各个版本的软件包。例如官网并没有将测试版本的软件源置为可用,您能够通过以下形式开启。同理能够开启各种测试版本等。# 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]1、装置必要的一些零碎工具 ...

December 7, 2021 · 2 min · jiezi

关于docker:docker安装ELK

Elasticsearch装置1. 下载Elasticsearch 7.6.2 的docker镜像: docker pull elasticsearch:7.6.22. 批改虚拟内存区域大小,否则会因为过小而无奈启动: sysctl -w vm.max_map_count=2621443. 应用如下命令启动Elasticsearch服务: docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \-e "discovery.type=single-node" \-e "cluster.name=elasticsearch" \-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \-d elasticsearch:7.6.24. 启动时会发现 /usr/share/elasticsearch/data 目录没有拜访权限,只须要批改 /mydata/elasticsearch/data 目录的权限,再重新启动即可; chmod 777 /mydata/elasticsearch/data/docker restart elasticsearch5. 装置中文分词器IKAnalyzer,并重新启动: docker exec -it elasticsearch /bin/bashelasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip6. 重启elasticsearch: docker restart elasticsearch7. 开启防火墙: firewall-cmd --zone=public --add-port=9200/tcp --permanentfirewall-cmd --reload8. 拜访会返回版本信息:http://虚拟机IP:9200 Logstash装置1. 下载Logstash 7.6.2 的docker镜像: docker pull logstash:7.6.22. 创立 /mydata/logstash 目录,并将Logstash的配置文件 logstash.conf 拷贝到该目录: ...

December 7, 2021 · 2 min · jiezi

关于docker:docker安装MySQLRedisRabbitMQ

MySQL装置1. 下载MySQL 5.7 的docker镜像: docker pull mysql:5.72. 应用如下命令启动MySQL服务: docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7参数阐明-p 3306:3306:将容器的3306端口映射到主机的3306端口-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机-v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机-e MYSQL_ROOT_PASSWORD=root:初始化root用户的明码3. 进入运行MySQL的docker容器: docker exec -it mysql /bin/bash4. 应用MySQL命令关上客户端: mysql -uroot -proot --default-character-set=utf85. 创立一个 reader:123456 帐号并批改权限,使得任何ip都能拜访: grant all privileges on *.* to 'reader' @'%' identified by '123456';Redis装置1. 下载Redis 5.0 的docker镜像: docker pull redis:52. 应用如下命令启动Redis服务: docker run -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-d redis:5 redis-server --appendonly yes3. 进入Redis容器应用 redis-cli 命令进行连贯: ...

December 7, 2021 · 1 min · jiezi

关于docker:Centos7安装Docker环境

Docker环境装置装置 yum-utils yum install -y yum-utils device-mapper-persistent-data lvm2为yum源增加docker仓库地位 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo装置docker yum install docker-ce装置docker systemctl start docker

December 7, 2021 · 1 min · jiezi

关于docker:docker技巧集锦持续更新

1. docker 中执行:apt-get update 报错:E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)起因:进入docker权限不够 docker exec -u 0 -it 容器id /bin/bash2. 容器打包成镜像docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]options选项:-a :提交的镜像作者;-c :应用Dockerfile指令来创立镜像;-m :提交时的阐明文字;-p :在commit时,将容器暂停。示例: docker commit 容器id jenkins:v1.0实现后,应用docker images能够看见该镜像 3. 打包镜像docker save [OPTIONS] IMAGE [IMAGE...]示例: docker save -o my_jenkins.tar jenkins:1.0生成一个tar文件 4. 新服务器载入镜像docker load [OPTIONS]-option选项:–input,-i 指定导入的文件–quiet,-q 精简输入信息 示例: docker load --input my_jenkins.tar实现后run容器即可 5. 拷贝文件进dockerdocker cp 文件 容器ID:docker内指标门路6. 创立jenkins容器docker run -d --name [jenkins别名] -p [外拜访端口]:[内容器端口] -v [外地址]:[内地址] [别名]-d:后盾运行容器,并返回容器ID ...

December 6, 2021 · 1 min · jiezi

关于docker:不借助-Docker-Desktop-在Mac上开发容器应用

镜像下载、域名解析、工夫同步请点击 阿里巴巴开源镜像站 Docker Desktop是最为风行的开发者工具,Docker公司在 8/31 发表对Docker Desktop的用户协定进行了变更,对集体开发者持续收费,然而对商业开发者采取了免费策略。最近很多同学来征询我相干的问题,我也就此做一个阐明 解决方案 对于为 Docker Desktop 付费流程,咱们曾经和团体洽购团队进行沟通,然而Docker公司的License受权有些简单,如果是洽购Pro版本,须要每个开发者本人付费,不反对批量洽购。而Business版本,反对批量洽购,然而咱们也不须要。还在跟进其余可行性,咱们会继续和大家沟通。如果您只是须要运行K8s环境,用阿里云容器服务ACK是最举荐的计划,没有之一 :-)如果您须要一个收费的本地开发环境,也有较好的入手能力,能够参考本文内容 Minikube 简介Minikube是社区一个风行的开源Kubernetes开发环境。为了帮忙国内的同学能够更加高效和无障碍地应用minikube进行日常开发,Minikube能够反对阿里云作为容器镜像的mirror site。进一步,在v1.24.0的官网 Minikube 中,曾经合并了由阿里云团队提交的一个计划,能够完满反对 Minikube 丰盛的 addon 组件! Minikube能够借助不同的 driver 实现,在MacOS/Windows/Linux环境中创立Kubernetes运行环境。 本文将借助 hyperkit驱动来在MacOS上创立一个虚拟机来配置Minikube环境。 首先卸载 Docker Desktop关上 Preference -> TroubleShoot 页面,点击 Uninstall 装置配置 Minikube以及相应 Docker 环境装置 hyperkit, Minikube,以及 Docker 命令行工具 (注:不蕴含运行时环境) $ brew install hyperkit$ brew install minikube$ brew install docker体验 Minikube 上面的 Kubernetes创立Kubernetes环境最简略的计划是应用如下命令 minikube start --image-mirror-country='cn'minikube start 命令提供了十分多的配置参数, 罕用配置参数如下 --cpus=2: 为minikube虚拟机调配CPU核数--memory=2048mb: 为minikube虚拟机分配内存数--registry-mirror=***: 为了晋升拉取Docker Hub镜像的稳定性,能够为 Docker daemon 配置镜像减速,参考阿里云镜像服务 相干加速器配置--kubernetes-version=***: minikube 虚拟机将应用的 kubernetes 版本。比方,创立 minikube 环境并且调整默认资源配置创立 minikube 运行环境 ...

November 30, 2021 · 2 min · jiezi

关于docker:Docker-系列docker-学习七DockerFile-编写和实战

咱们开始来一起学习 DockerFile 的知识点 DcokerFile 是用来构建 docker 镜像的文件,是一个命令参数脚本 个别 docker 镜像的构建步骤: 1、编写一个 dockerfile 文件 2、docker build 构建成为一个镜像 3、docker run 运行镜像 4、docker push 公布镜像(咱们能够公布到 DockerHub,也能够公布到阿里云下面) 咱们来看看官网的镜像是咋玩的 例如咱们在 DockerHub 上搜寻 ubuntu ,看看官网的 DockerFile 是啥样子的 https://hub.docker.com/_/ubuntu 点击链接咱们会进入到 git 仓库上,也是 DockerFile 咱们看到就 3 行 Docker 命令,是官网做成镜像的 DockerFile,所以这个官网的 ubuntu 镜像是非常简单的,阉割版本的,甚至连 clear 命令都没有,ll命令也没有 很多的官网镜像包都是非常简单的,很多性能都是没有的,咱们通常会本人搭建本人的镜像来满足咱们的各种需要 DockerFile 的构建过程官网能构建镜像,咱们也能够本人的镜像 DockerFile 的基础知识: 每个 DockerFile 的保留字(指令),都必须是大写的DockerFile 脚本执行是依照程序执行的# 示意正文每一个指令都会创立提交一个新的镜像层,并提交能够在网络上找到这样的图片,能够看到镜像是一层一层的,能够在浏览器上搜寻到 DockerFile 外面的指令解释 dockerfile 是面向开发的,咱们当前在做我的项目的时候,是间接公布一个镜像,交付的是一个镜像,就须要编写 DockerFile 文件,这个文件十分的简略! 咱们必须要把握 Docker 镜像,逐步成为企业交付的规范了。 ...

November 28, 2021 · 3 min · jiezi

关于docker:docker-部署nginxphp

docker 部署nginx+php最近在学习docker,筹备搭建 nginx + php开发环境,记录一下搭建过程,先给一份的docker-compose.yml部署配置 version: '3'services: nginx: container_name: mynginx image: nginx ports: - '80:80' volumes: - '/etc/nginx/:/etc/nginx' #配置 - '/var/log/nginx/:/var/log/nginx/' #日志 - '/data/php/yxyy/html:/data/php/yxyy/html' #我的项目门路 php: container_name: myphp image: php:7.2-fpm volumes: - '/data/php/yxyy/html/:/data/php/yxyy/html/' - '/usr/local/php7.2/:/usr/local/etc/'上面是我整个搭建学习过程,dockers的装置就不记录了,上面记录nginx+php搭建过程(后面是有问题的,别照抄哦) nginx先装置一个长期 nginx 容器 docker run --name tmpnginx -d -p 80:80 nginx在浏览器上输出 127.0.0.1 呈现相熟的界面,美滋滋,进入tmpnginx容器 docker exec -it tmpnginx /bin/bash搜寻配置文件地位 find / -name nginx.conf #找到配置文件在/ect/nginx 里拷贝一份容器nginx配置到宿主 /ect/nginx 里 docker cp tmpnginx:/ect/nginx /ect/nginx批改nginx 配置,如/etc/nginx/conf.d/default.conf 的站点根目录等信息,我的我的项目在/data/php/yxyy/html 删掉tmpnginx容器并启动一个挂载自定义配置文件的容器 docker run --name mynginx -d -p 80:80 \ -v /ect/nginx:/ect/nginx \ -v /var/log/nginx/:/var/log/nginx/ \ -v /data/php/yxyy/html/:/data/php/yxyy/html/ nginx配置文件阐明 ...

November 26, 2021 · 2 min · jiezi

关于docker:Docker-简介与镜像用法

阿里云官网镜像站: https://developer.aliyun.com/mirror/?utm_content=g_1000303593 一、容器简介Docker是治理容器的引擎。 Docker为利用打包、部署平台,而非单纯的虚拟化技术。 docker容器的劣势: 对于开发人员:Build once、Run anywhere。 对于运维人员:Configure once、Run anything。 二、容器的部署docker源: [root@server1 yum.repos.d]# cat docker.repo [docker]name=docker-cebaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/gpgcheck=0因为在装置docker-ce时有许多依赖性,都是Centos源 咱们在仓库源搭建Centos源 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/re... sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo 编辑Centos仓库源:%s/$releasever/7/g装置docker-ceyum install docker-ce -y systemctl enable --now docker此时执行docker info会报错 [root@server1 sysctl.d]# pwd/etc/sysctl.d[root@server1 sysctl.d]# cat docker.conf net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1sysctl --system这下就不会报错 三、Docker镜像1.镜像的分层构造共享宿主机的kernel base镜像提供的是最小的Linux发行版 同一docker主机反对运行多种Linux发行版 采纳分层构造的最大益处是:共享资源 Copy-on-Write 可写容器层 容器层以下所有镜像层都是只读的 docker从上往下顺次查找文件 容器层保留镜像变动的局部,并不会对镜像自身进行任何批改 一个镜像最多127层 2.镜像的构建docker commit 构建新镜像三部曲 运行容器 批改容器 将容器保留为新的镜像 毛病: 效率低、可重复性弱、容易出错 使用者无奈对镜像进行审计,存在安全隐患 ...

November 25, 2021 · 2 min · jiezi

关于docker:docker-常用总结

1.对于Dockerfile本人定义 Dockerfile ,构建本人要的镜像,如下: FROM nvidia/cuda:11.4.2-runtime-ubuntu18.04#MAINTAINERRUN apt-get update && apt-get install -y git vim wget curl#goRUN cd /tmp && wget https://golang.org/dl/go1.14.6.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.14.6.linux-amd64.tar.gzRUN cd /tmp && rm go1.14.6.linux-amd64.tar.gz RUN mkdir -p /home/go/src && mkdir -p /home/go/bin && mkdir -p /home/go/pkgRUN echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profileENV LIBRARY_PATH /usr/local/cuda/lib64/stubsENV NV_LIBNCCL_DEV_PACKAGE_NAME libnccl-devENV NV_LIBNCCL_DEV_PACKAGE_VERSION 2.11.4-1ENV NCCL_VERSION 2.11.4-1ENV NV_LIBNCCL_DEV_PACKAGE ${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}+cuda11.42.构建镜像 #-f:指定 Dockerfile 名称 -t:为构建的镜像打上标签docker build -f my.Dockerfile -t mydocker .3.基于镜像构建 CONTAINER ...

November 24, 2021 · 1 min · jiezi

关于docker:Docker-安全最佳实践和备忘单-IDCF

容器不是安全设备。这就是为什么咱们策动了一组易于操作的倡议来进步您的Docker 容器安全性。 多年来,Docker 容器始终是开发人员工具箱的重要组成部分,使他们可能以标准化的形式构建、散发和部署他们的应用程序。 毫无疑问,这种吸引力的减少随同着与容器化技术相干的平安问题的激增。事实上,容器也代表了攻击者的标准化攻打对象。他们能够很容易地利用谬误配置并从容器内逃逸到主机。 此外,“容器”这个词常常被误会,因为许多开发人员偏向于将隔离的概念与谬误的安全感分割起来,认为这项技术实质上是平安的。 这里的要害是容器默认没有任何平安维度。它们的安全性齐全取决于: 反对基础设施(操作系统和平台)容器自身蕴含的软件组件运行时配置容器平安是一个宽泛的话题,但好消息是,许多最佳实际都是唾手可得的成绩,能够疾速缩小其部署的攻击面。 这就是为什么咱们在构建和运行时策动了一组对于 Docker 容器配置的最佳倡议。 留神:在像 Kubernetes 这样的托管环境中,这些设置都能够被平安上下文或其余更高级别的平安规定笼罩。一、构建配置1.1 查看镜像审慎抉择您的根底镜像docker pull image:tag 您应该始终更喜爱应用受信赖的镜像,最好来自Docker 官网镜像,以加重供应链攻打。如果您须要抉择根底发行版,倡议应用 Alpine Linux,因为它是可用的最轻量级发行版之一,可确保缩小攻打范畴。 我须要应用最新的还是固定的发行版本?首先,您应该理解 Docker tag的工作形式从少到多,这就是为什么:python:3.9.6-alpine3.14 python:3.9.6-alpinepython:3.9-alpinepython:alpine如上所示,根底镜像都是一样的(在撰写本文时)。 通过十分具体并确定一个版本,您能够爱护本人免受将来任何重大更改的影响。另一方面,应用最新版本可确保修补更多破绽。这是一种衡量,但通常倡议固定到稳固版本。 思考到这一点,咱们会抉择python:3.9-alpine这里。 留神:这同样实用于在镜像构建过程中安装包。1.2 始终应用非特权用户默认状况下,容器内的过程以 root (id=0)身份运行。 为了执行最小权限准则,您应该设置一个默认用户。为此,您有两个抉择: 应用以下选项指定运行容器中不存在的任意用户 ID:docker run -u 4000 <image>留神:如果您当前须要挂载文件系统,您应该将您应用的用户 ID 与主机用户相匹配,以便拜访文件。或者通过在 Dockerfile 中创立默认用户来。FROM <base image>RUN addgroup -S appgroup \ && adduser -S appuser -G appgroup USER appuser... <rest of Dockerfile> ...肯定要留神查看在根底镜像中创立组和用户的工具1.3 应用独自的用户 ID 命名空间默认状况下,Docker 守护程序应用主机的用户 ID 命名空间。因而,容器内权限晋升的任何胜利也意味着对主机和其余容器的 root 拜访。为了升高这种危险,您应该将主机和 Docker 守护程序配置为应用带有该--userns-remap选项的独自命名空间。 ...

November 24, 2021 · 2 min · jiezi

关于docker:mac-zsh模式下安装kubectl命令自动补全工具

依照关键字“mac kubectl 命令主动补全”搜寻,后果根本都是以bash模式写的,如下:因为我当初的mac默认应用的shell是zsh,所以依照上述形式并不能装置kubectl的命令主动补全工具。傻傻的尝试了很多遍,都不失效。查阅了官网手册,终于找到了答案,亲测无效!官网链接:https://kubernetes.io/zh/docs...不用应用brew装置bash-completion,不用批改.bash_profile,简略到令人感到发指,只需执行一条指令即可!命令如下:source <(kubectl completion zsh)

November 23, 2021 · 1 min · jiezi

关于docker:学习docker看此文足以

什么是 DockerDocker 最后是 dotCloud 公司创始人  在法国期间发动的一个公司外部我的项目,它是基于 dotCloud 公司多年云服务技术的一次变革,并于 ,次要我的项目代码在  上进行保护。Docker 我的项目起初还退出了 Linux 基金会,并成立推动 。 Docker 自开源后受到宽泛的关注和探讨,至今其  曾经超过 5 万 7 千个星标和一万多个 fork。甚至因为 Docker 我的项目的火爆,在 2013 年底,。Docker 最后是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行反对;Google 也在其 PaaS 产品中广泛应用 Docker。 为什么要用 Docker作为一种新兴的虚拟化形式,Docker 跟传统的虚拟化形式相比具备泛滥的劣势。 更高效的利用系统资源 因为容器不须要进行硬件虚构以及运行残缺操作系统等额定开销,Docker 对系统资源的利用率更高。无论是利用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因而,相比虚拟机技术,一个雷同配置的主机,往往能够运行更多数量的利用。 更疾速的启动工夫 传统的虚拟机技术启动应用服务往往须要数分钟,而 Docker 容器利用,因为间接运行于宿主内核,无需启动残缺的操作系统,因而能够做到秒级、甚至毫秒级的启动工夫。大大的节约了开发、测试、部署的工夫。 统一的运行环境 开发过程中一个常见的问题是环境一致性问题。因为开发环境、测试环境、生产环境不统一,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外残缺的运行时环境,确保了利用运行环境一致性,从而不会再呈现 「这段代码在我机器上没问题啊」 这类问题。 继续交付和部署 对开发和运维()人员来说,最心愿的就是一次创立或配置,能够在任意中央失常运行。 应用 Docker 能够通过定制利用镜像来实现继续集成、继续交付、部署。开发人员能够通过  来进行镜像构建,并联合  零碎进行集成测试,而运维人员则能够间接在生产环境中疾速部署该镜像,甚至联合  零碎进行主动部署。 而且应用  使镜像构建透明化,不仅仅开发团队能够了解利用运行环境,也不便运维团队了解利用运行所需条件,帮忙更好的生产环境中部署该镜像。 ...

November 22, 2021 · 4 min · jiezi

关于docker:Docker-系列docker-学习六数据卷容器

DockerfileDockerfile 就是用来构建 docker 镜像的构建文件,对于 Dockerfile 具体的咱们在前面一期说到,此处先用用 他是一个命令脚本,通过这个脚本能够生成咱们想要的镜像,镜像是分层的,一层一层的,脚本也是一个一个的命令,每个命令就是一层 咱们能够来看一个小小的例子 本人写一个 Dockerfile 来构建本人的镜像,咱们以 ubuntu 为例子 写一个简略的 dockerfile1# vim dockerfile1FROM ubuntuVOLUME ["volume1","volume2"]CMD echo "====successfully===="CMD /bin/bash解释一下: FROM起源根底镜像为 ubuntu VOLUME挂载,能够匿名挂载,也能够是具名挂载 ,默认会挂载到 docker 专门挂载的目录 CMD指定能够应用命令 构建咱们本人的镜像# docker build -f dockerfile1 -t xiaomotong/ubuntu .Sending build context to Docker daemon 1.346GBStep 1/4 : FROM ubuntu ---> 1318b700e415Step 2/4 : VOLUME ["volume1","volume2"] ---> Running in d7b475cacb22Removing intermediate container d7b475cacb22 ---> b8ac33cfbcfdStep 3/4 : CMD echo "====successfully====" ---> Running in 35c98a625a9eRemoving intermediate container 35c98a625a9e ---> 67b6faf43370Step 4/4 : CMD /bin/bash ---> Running in b2e1e0ad8d9bRemoving intermediate container b2e1e0ad8d9b ---> b26faaedefacSuccessfully built b26faaedefacSuccessfully tagged xiaomotong/ubuntu:latest通过上述咱们能够看到 docker 构建镜像的时候是一层一层的,一个命令一个命令的执行的,一个命令就是一层 ...

November 21, 2021 · 2 min · jiezi

关于docker:docker默认IP地址冲突

一.问题形容在公司虚拟机内开了个docker容器,发现公司内网的局部IP地址是无法访问的。 二.解决步骤1.狐疑公司网络限度 运维查问发现有个IP段被禁止拜访了,如果要拜访须要独自申请。 2.狐疑本机操作问题 在不申请的状况下做了第二个操作,发现本机docker的IP地址段与该无法访问IP段比拟类似。 #ifconfig docker0docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:d4:d3:b9:28 txqueuelen 0 (Ethernet) 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批改docker 的IP地址: # vi /etc/docker/daemon.json{ "bip": "192.168.100.1/24"}留神,此时bip肯定是不能以0结尾,否则在重启docker服务时,会报错找不到网络。 操作删除原有的网络: ip link del docker0 如需长期批改IP网段:docker --bip="10.1.42.1/16" -d如果最初认为是0的话,则会报如下谬误: ...

November 19, 2021 · 1 min · jiezi

关于docker:docker搭建私有仓库

一. 装置docker1. docker一键装置命令:curl -sSL https://get.daocloud.io/docker | sh2. 启动dockersystemctl start docker二. 搭建镜像仓库拉取Registry公有镜像仓库,在咱们本地搭建一个内网的仓库,防止将一些私密我的项目裸露在公网,引发不必要的危险 1. 下载Registry镜像docker pull registry 2. 运行Registry镜像docker run -d --name registry -p 5000:5000 -v /storage/registry:/tmp/registry registry3. 查看镜像仓库中的所有镜像curl http://127.0.0.1:5000/v2/_catalog下图返回的json数据代表暂无任何仓库,因为咱们还没有上传任何镜像。 三. 配置仓库可间接通过http形式拜访docker默认是传输方式应用https协定,咱们手头上没有sttps证书,所以此处不配置https证书,间接设置可信源,使咱们内网能够通过http形式拜访 1. 批改vim /etc/docker/daemon.json,增加以下内容:没有daemon.json文件则新建. { "insecure-registries" : [ "your-server-ip:5000" ] } 2. 从新加载、重启docker、启动镜像systemctl daemon-reloadsystemctl restart dockerdocker start registry四. 上传镜像至仓库1. 查看镜像docker images2. 将要上传的镜像打Tagdocker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname 3. 把镜像推送到仓库docker push your-registry-server-ip:5000/your-image-name:tagname 4.再次验证是否推送胜利curl http://your-server-ip:5000/v2/_catalog能够看见{"repositories":["registry"]},阐明曾经推送胜利,有一个registry镜像了 五. 客户端下载镜像当初在本机测试是否下载刚刚上次的镜像,如果此处是在另一台客户机下载,留神要配置http形式拜访。 1. 批改vim /etc/docker/daemon.json增加以下内容:{ "insecure-registries" : [ "your-server-ip:5000" ] }2. 从新加载dockersystemctl daemon-reloadsystemctl restart docker3. 下载镜像docker pull 10.168.6.109:5000/registry:latest

November 18, 2021 · 1 min · jiezi

关于docker:docker基础

一.问题提出软件的运行依赖操作系统的设置,各种库和组件的装置(环境配置问题)。在不同的机器上,可能因为环境不同,软件是否运行,运行后果都会有差异。为了软件的正确运行,必须进行麻烦的环境配置。是否让软件带环境装置呢? 二.问题的解决解决办法一:虚拟机虚拟机(virtual machine)就是带环境装置的一种解决方案.能够在一种操作系统中运行另一种操作系统.如在windows中运行Linux零碎.虚拟机对于底层零碎而言就是一个文件.用户能够通过虚拟机复原软件运行环境,但也有有余:1.资源占用多.虚拟机占用的内存和硬盘资源在虚拟机运行时,不管它理论占用多少,其余机器都不能应用.2.冗余步骤多虚拟机要装置残缺的操作系统,一些零碎级别的操作步骤,往往无奈跳过,比方用户登录。3.启动慢软件必须期待系统启动后,能力开始运行. 解决办法二:Linux容器因为虚拟机存在这些毛病,Linux 倒退出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)Linux 容器不是模仿一个残缺的操作系统,而是对过程进行隔离或者说,在失常过程的里面套了一个保护层对于容器外面的过程来说,它接触到的各种资源都是虚构的,从而实现与底层零碎的隔离。 因为容器是过程级别的,相比虚拟机,根本克服了虚拟机的有余:容器启动相当于启动一个过程,启动快。只占用必要的资源。只蕴含须要的组件。所以,容器相似轻量级的过程。 三.Docker是什么?Docker 属于 Linux 容器的一种封装,提供简略易用的容器应用接口。它是目前最风行的 Linux 容器解决方案。 Docker工作原理:将应用程序与该程序的依赖,打包在一个文件外面。运行这个文件,就会生成一个虚构容器。程序在这个虚构容器里运行,就如同在实在的物理机上运行一样。Docker 的接口相当简略,用户能够不便地创立和应用容器,把本人的利用放入容器。容器还能够进行版本治理、复制、分享、批改,就像治理一般的代码一样。 四.Docker的用处(1)提供一次性的环境。比方,本地测试别人的软件、继续集成的时候提供单元测试和构建的环境。 (2)提供弹性的云服务。因为 Docker 容器能够随开随关,很适宜动静扩容和缩容。 (3)组建微服务架构。通过多个容器,一台机器能够跑多个服务,因而在本机就能够模拟出微服务架构。 五.Docker的装置1.装置docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #装置。若提醒无奈连贯到服务器,重试即可。docker version #检测装置是否胜利。若胜利,则会显示与版本无关的信息。2.Docker 是服务器---客户端架构。命令行运行docker命令的时候,须要本机有 Docker 服务启动docker服务如下: sudo systemctl start docker #启动docker服务sudo systemctl status docker#查看docker服务状态3.为防止命令执行加sudo,执行以下命令将用户退出docker用户组 sudo usermod -aG docker username #username是用户名 !!!!留神:将用户退出docker组后,肯定要从新登录,操作才会失效。六.image 文件Docker 把应用程序及其依赖,打包在 image 文件外面。只有通过这个文件,能力生成 Docker 容器。image 文件能够看作是容器的模板。Docker 依据 image 文件生成容器的实例。同一个 image 文件,能够生成多个同时运行的容器实例。 image 是二进制文件。理论开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。 ...

November 18, 2021 · 2 min · jiezi

关于docker:Nginx部署Gin

穿插编译咱们代码是在window下编写的,因而须要穿插编译再并放在linux下运行。设置GOOS和GOARCH: SET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64编译: # 我的项目目录下执行,编译胜利后生成exe文件go build创立文件夹目录构造:go_project:寄存编译后的exe文件 编写Dockerfile文件内容:WORKDIR:进入容器的起始目录COPY:将服务器本地目录内容复制到容器,因为此时咱们咱们已在WORKDIR目录下,因而容器目录写 . 即可CMD:robot_serve为go编译后的文件 FROM alpineWORKDIR /web/ginCOPY ./go_project .RUN apk add bashRUN chmod +x robot_serveEXPOSE 8081CMD [ "./robot_serve" ]构建镜像:-t:镜像名字 # 在我的项目目录下执行构建命令,以上图为例即robot_serve目录下docker build -t robot_serve .启动容器docker run -p 8081:8081 -d robot_serve

November 16, 2021 · 1 min · jiezi

关于docker:linux自动清理Docker标准输出日志

一、 背景应用docker logs 查看容器日志太多,十分不不便,每次手动清理很麻烦,写了一个批量清理的shell脚本 二、解决办法docker容器的日志都存储在 /data/docker/lib/docker/containers/目录,咱们把对应的日志删除即可,这里能够新建一个shell脚本 vim cleanDockerLog.sh把上面的内容放进去 #!/bin/shecho "======== start clean docker containers logs ========"logs=$(find /var/lib/docker/containers/ -name *-json.log)for log in $logs do echo "clean logs : $log" cat /dev/null > $log doneecho "======== end clean docker containers logs ========"三、 执行清理执行清理的命令如下所示 sh ./cleanDockerLog.sh再次查看 docker logs -f 容器ID,会发现日志曾经被状况实现 作者:汤青松 日期:2021年11月12日 微信:songboy8888

November 12, 2021 · 1 min · jiezi

关于docker:移动docker数据文件到nas共享盘释放C盘空间

[toc] 背景公司的云桌面win10零碎, 只有一个60G的C盘, 个人资料存储在nas共享盘里; 装置docker之后空间严重不足, 如何把docker的数据文件挪动到nas里? 总体思路利用nas上的空间创立虚构磁盘挪动docker数据文件到虚构磁盘创立虚拟盘计算机管理 - "磁盘治理"右键 - "创立vhd" - "地位"抉择nas上的地址 - 设置大小 - 确定; 多进去一个磁盘 - 右边题目上右键 - "初始化" - 容量条上右键 - "新建简略卷" - 依据提醒操作;实现后关上资源管理器, 多了一个分区, 比方D盘; 挪动docker数据文件办法1: mslink 符号链接存储文件在C:\Users\<user>\AppData\Local\Docker\wsl\data\ext4.vhdx, link到虚拟盘里; 退出docker-desktop退出wsl: wsl --shutdown挪动ext4.vhdx到D:\wsl\data\ext4.vhdx创立link mklink "C:\Users\yanfaqxx\AppData\Local\Docker\wsl\data\ext4.vhdx" "D:\wsl\data\ext4.vhdx"重新启动docker验证成果; 办法2: LxRunOffline.exe退出docker-destop, 再执行: wsl --shutdownLxRunOffline.exe move -n docker-desktop-data -d "D:\wsl\data"Q&A为什么不间接mslink到nas, 省去创立虚构磁盘这一步?报错: Timed out waiting for the lifecycle-server to start.

November 12, 2021 · 1 min · jiezi

关于docker:使用Docker-ComposeNginxSSH和Github-Actions实现前端自动化部署测试机

开篇,咱们先来看一下远古时代的构建部署流程。想必大家对这个都不生疏: 开发将源码通过编译、压缩打包生成打包文件将打包生成的文件上传服务器显然这个流程不仅繁琐,而且效率也不高,开发每次公布都要消耗很长的工夫在部署构建下面。 前面为了解决这个问题,就呈现了CI/CD。 接下来咱们来聊一下什么是CI/CD? CI/CD 是 Continuous Intergration/Continuous Deploy 的简称,翻译过去就是继续集成/继续部署。CD 也会被解释为继续交付(Continuous Delivery) 再具体一点就是: 继续集成:当代码仓库代码产生变更,就会主动对代码进行测试和构建,反馈运行后果。继续交付:继续交付是在继续集成的根底上,能够将集成后的代码顺次部署到测试环境、预公布环境、生产环境中聊了这么多,置信很多同学肯定会说: 这个别不都是运维搞的吗?和业务也不相干啊,理解它有什么用?全是服务器相干的货色,docker、nginx、云服务器啥的,我该怎么学习呢?很早之前,我也是这么想的,感觉与本人的业务也没啥关系,没有太大的必要去理解。 然而最近我在搞一个全栈我的项目(做这个我的项目是为了冲破本人的瓶颈)时,就遇到了这些问题,发现陷入了常识盲区。 没方法,只能一顿恶补。 然而当我通过学习这些常识和在我的项目中实际这些流程后,我在知识面上失去了很大的扩大。对操作系统,对理论的构建部署,甚至对工程化领有了全新的意识。 这里也放下后面提到的全栈我的项目的架构图吧: 这个大的我的项目以low code为外围,囊括了编辑器前端、编辑器后端、C端H5、组件库、组件平台、后盾管理系统前端、后盾管理系统后盾、统计服务、自研CLI九大零碎。其中的编辑器前端在如何设计实现 H5 营销页面搭建零碎文章中曾经有很具体的阐明。 目前整个我的项目做了 70%左右,过程中遇到了很多问题,也失去了很大的晋升。后续会有一波文章是对于我的项目中的一个个小点开展的,也都是满满的干货。 回到本篇文章的主题:应用Docker Compose、Nginx、SSH和Github Actions实现前端自动化部署测试机。本文是以后盾管理系统前端为依靠具体阐明了如何借助Docker、nginx、Github CI/CD能力自动化公布一个纯前端我的项目。选这个我的项目来解说自动化公布测试机有两个出发点: 后盾管理系统业务较简略,可将重心放在自动化部署流程上纯前端我的项目更实用于大部分前端同学现状,拿去即用整体思路 前端代码,打包进去的是动态文件,可用nginx做服务。思路: 构建一个Docker容器(有nginx)将dist/目录拷贝到Docker容器中启动nginx服务宿主机端口,对应到Docker容器端口中,即可拜访外围代码变动: nginx.conf(给Docker容器的nginx应用)Dockerfiledocker-compose.yml⚠️ 本文将采纳理论知识和理论相结合的形式,即先讲述一下对应知识点,同时会放一下与此知识点相干的我的项目代码或配置文件。上面会顺次解说Docker、docker-compose、ssh、github actions等知识点。 Docker Docker很早之前,在公众号的一篇文章谁说前端不须要学习 docker?就有过具体阐明。这里简略再论述下。 docker 能够看成是一个高性能的虚拟机,次要用于 linux 环境的虚拟化。开发者能够打包他们的利用以及依赖包到一个可移植的容器中,而后公布到任何风行的 linux 机器上。容器齐全应用沙箱机制,相互之间不会有任何接口。 在容器中你能够做任何服务器能够做的事,例如在有 node 环境的容器中运行 npm run build 打包我的项目,在有 nginx 环境的容器中部署我的项目等等。 在 centos 上装置 docker因为这次的云服务器是centos的,所以这里就提一下如何在 centos 上装置 docker: $ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo$ sudo yum install docker-ce docker-ce-cli containerd.io$ sudo systemctl start docker$ sudo docker run hello-worlddockerfiledocker 应用 Dockerfile 作为配置文件进行镜像的构建,简略看一个 node 利用构建的 dockerfile: ...

November 8, 2021 · 4 min · jiezi

关于docker:面试官你说你精通-Docker那你来详细说说-Dockerfile-吧

Docker 能够通过读取 Dockerfile 中的指令主动构建镜像。Dockerfile 是一个文本文档,其中蕴含了用户创立镜像的所有命令和阐明。 一、 变量变量用 $variable_name 或者 ${variable_name} 示意。 ${variable:-word} 示意如果 variable 设置,则后果将是该值。如果 variable 未设置,word 则将是后果。${variable:+word} 示意如果 variable 设置则为 word 后果,否则为空字符串。变量前加 \ 能够本义成一般字符串:\$foo or \${foo},示意转换为 $foo 和 ${foo}文字。 二、FROM初始化一个新的构建阶段,并设置根底镜像: FROM [--platform=<platform>] <image> [AS <name>]FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]单个 Dockfile 能够屡次呈现 FROM,以应用之前的构建阶段作为另一个构建阶段的依赖项 AS name 示意为构建阶段命名,在后续 FROM 和 COPY --from=<name>阐明中能够应用这个名词,援用此阶段构建的映像 digest 其实就是就是依据镜像内容产生的一个 ID,只有镜像的内容不变 digest 也不会变 tag 或 digest 值是可选的。如果您省略其中任何一个,构建器默认应用一个 latest 标签。如果找不到该 tag 值,构建器将返回谬误。 --platform 标记可用于在 FROM 援用多平台镜像的状况下指定平台。例如,linux/amd64、linux/arm64、 或 windows/amd64。 ...

November 8, 2021 · 2 min · jiezi

关于docker:记录片行星观后感

[TOC] 前言纪录片《行星》次要讲太阳系的所有行星其造成演变历史,相比于类宇宙通史的《宇宙时空指南》来说,《行星》更为专一。看完即能让人感叹人类的渺小,又能感叹人类的平凡 渺小在于,地球跟太阳比起来,就像一粒沙,遑论人类,而放眼整个银河系,甚至宇宙,太阳系都无异于尘埃。人类迄今为止发射的最快探测器,新视野号,达到冥王星用了9年,可见宇宙的浩渺 而平凡在于,在仅半个世纪左右的工夫里,这颗渺小星球上的人类,竟然用探测器一一探测了所有的太阳系行星,星辰大海的征途未然开启 同时《行星》领有不亚于好莱坞科幻电影般的画面特效和配乐,值得举荐 一些笔记常识 间隔太阳最近不肯定温度最高水星比金星更凑近太阳,但金星的温度比水星温度更高,因为金星大气层90%皆为二氧化碳,温室效应重大,排汇的热量无奈散去,地表温度高达465℃~485℃ 行星结构分类水星、金星、地球和火星 是岩石行星,外围以铁为主,外围次要为硅酸盐岩石木星、土星则是气态行星,90%为氢气和氦气天王星、海王星的次要组成部分则为氨、水、甲烷、硫化氢等冰质 丑陋的土星环土星环次要的成分是水冰,所以对阳光有很好的反射性,容易被人观测到。其造成要比土星更晚,大概在一亿年前,土星引力轨道上的一颗冰质卫星,超过洛希极限,受土星引力而崩溃,碎裂成冰晶,造成土星环。 最快的风暴海王星外表风速超过音速,可达每小时2000千米 最高的山脉位于火星的奥林帕斯山是太阳系所有行星中的最高山峰,高达22公里 可能领有或已经领有生命的中央火星,人类探测器先后在火星上发现水冰、公开湖。这可能预示着火星在大气层缩小之前,领有孕育生命的条件。土卫二,卡西尼号探测器发现土卫二每秒向太空喷射200公斤的氯化钠和水,预示其下存在陆地,并存在海底热泉。而海底热泉被认为是地球生命起源的摇篮 两个带状天体群小行星带火星和木星之间有泛滥围绕太阳公转的岩石小行星,已被发现的就有数十万个。以小行星带为分界,凑近太阳一侧的行星被称为太阳系内侧行星,反之则为外侧行星 柯伊伯带位于海王星的外侧,领有泛滥由甲烷、氨、水组成的冰质天体。 冥王星为什么被踢出了行星阵列被定义为行星的一个重要规范是,该行星可能清理其公转轨道。而冥王星所处的柯伊伯带中,有大量的天体,甚至有比其品质更大的天体,比方阋神星。这些领有微小品质,但未能清理出本人公转轨道的类行星被定义为矮行星,除了冥王星和阋神星之外,还有谷神星、鸟神星、妊神星 欢送关注我的集体公众号"东南偏北UP",记录代码人生,行业思考,科技评论

November 7, 2021 · 1 min · jiezi

关于docker:Docker-安装-Nginx

docker cp 85fe48a5c898:/etc/nginx/nginx.conf /root/nginx/nginx.conf简化版docker pull nginxdocker run -d -p 8887:80 --name nginx01 nginx留神:-d 是 run 命令的参数,示意:后盾运行容器,并返回容器 ID;拜访: http://192.168.47.128:8887即可。 进入容器: docker exec -it nginx01 /bin/bashwhereis nginx显示: nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx找到配置文件: 配置文件目录:/etc/nginx/nginx.conf动态文件目录:/usr/share/nginx/启动容器建设映射: docker run -p 8888:80 --name nginx01 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -d nginx具体版docker search nginxdocker pull nginxdocker run -d -p 80:80 --name nginx01 nginxdocker exec -it nginx01 /bin/bashwhereis nginxufwlsof -i:6800 Ubuntu 18.04 LTS 设置固定 iphttps://blog.csdn.net/u010039...https://blog.csdn.net/lengye7... Docker 近程连贯失败,2375 端口曾经凋谢: systemctl status firewalld# 启动防火墙 没有提醒systemctl start firewalld# 增加2375端口firewall-cmd --permanent --zone=public --add-port=2375/tcp# 防火墙重启firewall-cmd --reload# 查看凋谢的端口firewall-cmd --permanent --zone=public --list-ports关上防火墙 ...

November 6, 2021 · 1 min · jiezi

关于docker:Docker-安装-Redis

Docker 装置 Redis参考资料:Docker hub 里搜寻 Redis https://hub.docker.com/_/redis 简化版传文件 redis.conf 到虚拟机 192.168.47.128 的 /root/redis 目录下 scp redis.conf root@192.168.47.128:/root/redis批改配置 bind 0.0.0.0 启动一个 Docker 容器: docker run --name myredis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6900:6379 -d redis:latest redis-server /usr/local/etc/redis/redis.conf具体版在 Docker hub 搜寻 Redis 镜像docker search redis拉取 Redis 镜像到本地docker pull redis启动一个 Redis 容器上面的命令没有裸露对外的端口:docker run --name redis -d redis:tag (不必这一条) docker run --name redis -p 6800:6379 -d redis:latestredis:latest 示意镜像查看启动日志 docker logs -t -f 容器 id|容器名称 ...

November 6, 2021 · 1 min · jiezi

关于docker:Docker-杂项

Docker 报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 解决办法参考资料:https://www.cnblogs.com/mmzs/... systemctl daemon-reloadsudo service docker restartsudo service docker status

November 5, 2021 · 1 min · jiezi

关于docker:民间破解Windows-11安卓系统

在安卓利用方面,显然谷歌的Play商店才是王道,官网不反对,那天然有民间大神出手,开发者 ADeltaX 公布了一款名为WSAGAScript 的工具,可帮忙 Windows 11用户将 谷歌Apps装置到WSA,包含谷歌 Play。民间大神破解Windows 11安卓零碎民间大神破解Windows 11安卓零碎 上周微软公布了最新的Win11测试版,千呼万唤的安卓子系统(Windows Subsystem for Android,简称WSA)终于实装了,能够本人装置安卓利用,实测微信等利用曾经能用了。不过当初的Win11安卓子系统还有些鸡肋,除了兼容性、稳定性等bug之外,最次要的是微软在安卓上的单干对象是亚马逊而非微软,内置的利用商店也是亚马逊的,目前还只有50个利用可用。 在安卓利用方面,显然谷歌的Play商店才是王道,官网不反对,那天然有民间大神出手,开发者 ADeltaX 公布了一款名为WSAGAScript 的工具,可帮忙 Windows 11用户将 谷歌Apps装置到WSA,包含谷歌 Play。 不过这个过程有些繁琐,须要在Linux环境下对谷歌定制的安卓零碎进行批改,对普通人来说门槛有些高,为此ADeltaX还在Github上放出了具体的视频教程。 ADeltaX承诺后续开发中会进一步简化操作过程,倡议普通人别着急,反正微软的WSA还在测试中,等等欠缺了再说。 另外,国内曾经有了二次修改版,公布的WSA零碎是间接批改过的,包含了谷歌Play商店及GMS,不必在Linux下批改了,感兴趣的能够搜寻下。

November 5, 2021 · 1 min · jiezi

关于docker:Dockerfile搭建PHP8镜像dockercompose搭建LNMP环境

应用Dockerfile搭建PHP8镜像编写Dockerfilevim DockerfileFROM php:8.1.0RC5-zts-busterMAINTAINER itxiaoma <tlxma@163.com>#buster是基于Debian Linux发行的一个版本,像PHP、Python之类的语言都会应用这个版本的Debian搭建Docker根底镜像。#docker中php扩大装置形式#1、PHP源码文件目录自带扩大 docker-php-ext-install间接装置#2、pecl扩大 因为一些扩大不蕴含在PHP源码文件中,PHP 的扩大库仓库中存在。用 pecl install 装置扩大,再用 docker-php-ext-enable 命令 启用扩大#3、其余扩大 一些既不在 PHP 源码包,也不再 PECL 扩大仓库中的扩大,能够通过下载扩大程序源码,编译装置的形式装置#redis扩大 仓库地址 https://pecl.php.net/package/redisENV PHPREDIS_VERSION 5.3.4#memcached扩大 仓库地址 https://pecl.php.net/package/memcachedENV MEMCACHED_VERSION 3.1.5#mongodb扩大 https://pecl.php.net/package/mongodbENV MONGODB_VERSION 1.11.1# 设置工夫RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone# 扩大依赖RUN apt-get update \ && apt-get install -y \ vim \ curl \ wget \ git \ zip \ libz-dev \ libssl-dev \ libnghttp2-dev \ libpcre3-dev \ libmemcached-dev \ zlib1g-dev \ && apt-get clean \ && apt-get autoremove# Composer装置RUN curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && composer self-update --clean-backups# Mysqli 扩大 自带 间接装置即可(以后数据库应用的mysqli查问的)RUN docker-php-ext-install mysqli# PDO 扩大 自带 间接装置即可RUN docker-php-ext-install pdo_mysql# Bcmath 扩大 自带 间接装置即可RUN docker-php-ext-install bcmath# Redis 扩大下载 pecl本地装置 开启扩大RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tgz \ && pecl install /tmp/redis.tgz \ && rm -rf /tmp/redis.tgz \ && docker-php-ext-enable redis# memcached 扩大下载 pecl本地装置 开启扩大 后面曾经通过 apt-get装置了libmemcached-dev依赖RUN wget http://pecl.php.net/get/memcached-${MEMCACHED_VERSION}.tgz -O /tmp/memcached.tgz \ && pecl install /tmp/memcached.tgz \ && rm -rf /tmp/memcached.tgz \ && docker-php-ext-enable memcached# mongodb 扩大下载 pecl本地装置 开启扩大 后面曾经通过 RUN wget http://pecl.php.net/get/mongodb-${MONGODB_VERSION}.tgz -O /tmp/mongodb.tgz \ && pecl install /tmp/mongodb.tgz \ && rm -rf /tmp/mongodb.tgz \ && docker-php-ext-enable mongodb提交镜像docker build -f Dockerfile -t itxiaoma/php8:1.0 .docker login -u itxiaomadocker push itxiaoma/php8:1.0应用docker-compose搭建LNMP环境编写docker-compose文件vim docker-compose.ymlversion: '3.5'services: nginx: image: nginx:alpine restart: always volumes: - ./config/nginx:/etc/nginx/conf.d - ./logs/nginx:/var/log/nginx - ./workspace:/workspace ports: - 80:80 - 443:443 php: image: itxiaoma/php8:1.0 restart: always volumes: - ./workspace:/workspace stdin_open: true tty: true dbm: image: mysql:8.0.26 command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: xxx volumes: - './storage/mysql:/var/lib/mysql' ports: - 3306:3306执行 ...

November 4, 2021 · 2 min · jiezi

关于docker:离线安装Docker

前置要求1.卸载旧版本dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine2.在能够联网的机器上下载docker组件2.1.下载依赖组件wget http://mirror.centos.org/altarch/7/extras/aarch64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpmwget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.2-3.3.el7.x86_64.rpmwget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-19.03.9-3.el7.x86_64.rpmwget http://mirror.centos.org/centos/7/os/x86_64/Packages/libcgroup-0.41-21.el7.x86_64.rpm2.2.装置依赖组件将下载好的依赖组件上传到要装置docker的服务器中,如下是要装置的依赖组件。 container-selinux-2.119.2-1.911c772.el7_8.noarch.rpmcontainerd.io-1.2.2-3.3.el7.x86_64.rpmdocker-ce-cli-19.03.9-3.el7.x86_64.rpm2.3.开始装置依赖组件rpm -Uvh *.rpm --nodeps --force3.下载docker安装文件wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.9-3.el7.x86_64.rpm4.下载docker-composewget https://github.com/docker/compose/releases/download/1.28.2/docker-compose-Linux-x86_642.开始装置Dockerrpm -ivh docker-ce-19.03.9-3.el7.x86_64.rpm2.1启动Docker# 启动systemctl start docker # 查看状态systemctl status docker # docker 开机启动systemctl enable docker3.装置docker-compose3.1.上传docker-compose-Linux-x86_64文件到服务器中chmod +x docker-compose-Linux-x86_64 && mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose3.2.配置profile环境变量(可选)如果曾经配置了环境变量能够略过此步骤。 vi /etc/profile#增加如下内容export PATH=$PATH/usr/local/bin加载配置使配置失效 source /etc/profile3.3.测试是否胜利docker-compose --version4.卸载docker4.1.查看docker安装包yum list installed | grep docker4.2.卸载dockeryum remove docker*4.3.删除镜像或容器等数据rm -rf /var/lib/docke

November 3, 2021 · 1 min · jiezi

关于docker:经验分享创建docker容器后修改挂载目录的方法

 欢送关注我的公众号 [极智视界],回复001获取Google编程标准 O_o >_<  o_O O_o ~_~ o_O   本教程具体记录了在你创立好了 docker 容器后,又想批改容器的挂载目录的办法。 1、次要办法 次要有两种办法: (1)重启容器,从新挂载; (2)原始容器,批改配置。 2、办法一:重启容器,从新挂载 这个办法没啥好说的,就是 docker commit new_image,而后 docker run new_container 就好了。 3、办法二:原始容器,批改配置 这个办法认真介绍一下,因为我感觉比拟不便。 首先看一看你容器当初的挂载门路 docker inspect -f "{{.Mounts}}" container_name 而后用 docker ps -a 看看你的容器 ID docker ps -a 能够看到我的容器的 ID 为 2f18dce34e92。 而后咱们开始操作一波。 把 docker 服务进行了: systemctl stop docker.service 在 /var/lib/docker/containers/container-ID/config.v2.json 中找到 MountPoints,并批改挂载门路 vim /var/lib/docker/containers/container-ID/config.v2.json "MountPoints":{"/home":{"Source":"/path/to/your/host","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/path/to/your/host","Target":"/home"}}} 重启 docker 服务 ...

November 2, 2021 · 1 min · jiezi

关于docker:docker常用命令

常用命令 #docker中 启动所有的容器命令docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)#docker中 敞开所有的容器命令docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)杀死所有正在运行的容器docker kill $(docker ps -a -q)#docker中 删除所有的容器命令docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)docker rm $(docker ps -a -q)#docker中 删除所有的镜像 -f强制删除docker rmi $(docker images | awk '{print $3}' |tail -n +2)docker rmi $(docker images -q)#查看docker 镜像docker images#查看docker 所有的容器docker ps#查看docker 所有运行容器docker ps -a#进行docker 进行运行容器docker stop [容器id]#开始docker 运行容器docker start [容器id]#重启docker容器docker resart [容器名]#查看容器网络docker network ls#删除容器网络docker network rm [容器网络名称]#查看容器日志docker logs --tail 50 --follow --timestamps [容器名称]#进入容器docker exec -it [容器名称] /bin/bash

October 27, 2021 · 1 min · jiezi

关于docker:windows10-安装docker总结

原本想在windows上搞个linux虚拟机装docker,后果我最近刚降级win11,如同有点问题,始终不胜利。想想我也只是须要docker而已,间接装docker就得了 下载安装https://www.docker.com/get-st...下载Docker Desktop --》 download for windows下载后装置即可 开启所需的windows性能如果docker装置后启动报错,docker应该会有提示信息,指引你解决:https://docs.docker.com/deskt... 想要docker失常工作,须要开启的 WSL2和 Hyper-V 镜像地位批改为了不占用C盘地位,须要批改下镜像地位网上搜寻到的大部分都是在设置里批改,然而如果应用的WSL2,设置里是没法批改的如图这里锁死的,占用内存什么的也不能改 能够参考这篇文章用命令进行批改https://www.cnblogs.com/jiang... 配置阿里云镜像加速器https://cr.console.aliyun.com...拜访这个地址,应用本人的阿里云账号登录,有一个镜像加速器 有具体的操作形式 在这里加上加速器地址,重启docker即可 如果这里不小心改错了,会导致docker启动不起来, 这个配置文件的具体位置在 C:\Users\用户名\.docker\daemon.json改正确后再启动docker即可 开始应用docker run hello-world一切正常,能够应用啦!

October 27, 2021 · 1 min · jiezi

关于docker:WGCLOUD的docker指标CPU系统时间和用户时间是什么意思

最近用WGCLOUD来监测服务器的doker容器,看到指标CPU零碎工夫和用户工夫,不明确这两个指标是什么意思,起初找到材料分享下 用户cpu工夫: 就是执行用户指令所用的工夫。 零碎CPU工夫: 所谓的零碎,咱们晓得就是在内核中执行的工夫,没错滴,就是该过程执行内核程序所经验的工夫。

October 25, 2021 · 1 min · jiezi

关于docker:Docker构建前端项目

原文链接Docker独自部署前端我的项目和Node我的项目是十分便捷的,在这里分享一下Docker的应用,次要聊聊它的部署实际。(我是window10专业版装置Docker) DockerDocker是一种利用容器引擎技术,相似于虚拟机,不过它的实用性、通用性、便捷性更强,Docker容器能够说就是VM,不过占用资源更少,更轻量,通过操作系统级虚拟化办法,利用更加节俭的硬件资源提供给用户更多的计算资源。 Docker容器是Linux 容器的一种封装,因为容器存在独立的运行环境,Docker能够将应用程序和依赖打包容器中,启动容器即可运行程序。 Docker部署Docker容器配合 GitHub Action、Jenkins、Rancher应用十分的便捷,当然这里说到的是Docker集体部署实际,上面次要说到的是通用前端我的项目部署计划。 配置nginx在前端根目录创立 nginx.conf(与package.json同级),具体配置如下,能够依据理论我的项目调整批改: server { listen 80 default_server; server_name _; location / { root /usr/share/nginx/html/web; index index.html index.htm; try_files $uri $uri/ /index.html; } # 接口代理示例 # location /api { # proxy_pass http://xxx.com; # proxy_set_header Host $host:$server_port; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header Cookie $http_cookie; # proxy_buffering off; # proxy_cache off; # } }nginx配置的次要的作用是动态资源代理,同时接口转发。以上的配置是间接再本机运行,如果要在服务器上运行,能够将其中的配置改为: listen 80;server_name xxx.com;配置Dockerfile在根目录创立Dockerfile文件(与package.json同级) FROM node:latestCOPY package.json /RUN npm i --registry=https://registry.npm.taobao.orgRUN npm run buildFROM nginx:latest# 这里的dist/目录是你的我的项目打包后的文件目录COPY ./dist/ /usr/share/nginx/html/COPY ./nginx.conf /etc/nginx/conf.d/EXPOSE 80下面的配置文件十分的简略,次要就是将构建打包,之后装置nginx,复制nginx配置文件,复制打包后的文件,凋谢80端口。 ...

October 25, 2021 · 1 min · jiezi

关于docker:Docker相关

docker镜像减速执行以下命令,关上 /etc/docker/daemon.json 配置文件。 vim /etc/docker/daemon.json按 i 切换至编辑模式,增加以下内容,并保留。 {"registry-mirrors": [ "https://mirror.ccs.tencentyun.com"]}执行以下命令,重启 Docker 即可。示例命令以 CentOS 7 为例。 sudo systemctl restart docker或者间接 docker pull NAME --registry-mirror=https://mirror.ccs.tencentyun.com 装置docker并配置镜像减速

October 24, 2021 · 1 min · jiezi

关于docker:Docker相关

docker镜像减速执行以下命令,关上 /etc/docker/daemon.json 配置文件。 vim /etc/docker/daemon.json按 i 切换至编辑模式,增加以下内容,并保留。 {"registry-mirrors": [ "https://mirror.ccs.tencentyun.com"]}执行以下命令,重启 Docker 即可。示例命令以 CentOS 7 为例。 sudo systemctl restart docker或者间接 docker pull NAME --registry-mirror=https://mirror.ccs.tencentyun.com 装置docker并配置镜像减速

October 24, 2021 · 1 min · jiezi

关于docker:docker-系列实践工具

前言本文将介绍 Docker 的相干工具应用教训,比方 Docker-compose:容器编排工具;Portainer:容器可视化治理;以及 DockerFile 的构建。相当于是一套组合拳。让咱们能更轻松、更不便去治理 Docker。 Docker Compose应用 Docker Compose 有一个益处就是能够通过配置化的形式去编排容器。比方咱们以后有 3 个服务,其中 A 依赖于 B,B 依赖于 C,那么咱们就能够在 YML 中应用 depends_on 配置项,来指明对应依赖的服务。使得容器的编排更加人性化。上面列举了下比拟罕用的配置项: version: "3"services: redis: # 服务名 image: redis:alpine # 应用的镜像模板 container_name: my-redis # 容器名 hostname: my-redis # 容器 hostname ports: - 6379:6379 # 端口映射 volumes: # 卷映射 - ./data/redis:/data restart: unless-stopped # 容器重启策略,有 no、always、on-failure、unless-stopped 选项 depends_on: - database # 依赖的服务 database: image: postgres:latest volumes: - "/localhost/postgres.sock:/var/run/postgres/postgres.sock" - "/localhost/data:/var/lib/postgresql/data"当 YML 配置文件筹备好后,咱们就能够应用 docker-compose up命令来启动运行容器了。如果想 stop 容器,能够应用 docker-compose down 则会把以后 YML 文件里的容器服务都进行掉。 ...

October 20, 2021 · 1 min · jiezi

关于docker:docker-系列底层实现

总体架构Docker 采纳的是 C/S 架构,应用 REST API、UNIX 套接字或网络接口进行通信。个别客户端会和 Docker 服务运行在同一台机子上,像咱们平时应用的 docker build、pull、run 等命令就是发送到本地客户端上的,本地客户端再发送给 Docker 服务端。另外,客户端也能够独立部署,像 Docker Compose。 Docker 服务个别是以守护过程的模式运行,它会监听客户端的申请,并且进行容器的构建、运行和散发,上面即 Docker 的总体架构: Docker 守护过程:侦听 Docker API 申请并治理 Docker 对象,例如镜像、容器、网络和卷。守护过程还能够与其余守护过程通信以治理 Docker 服务。Docker 客户端:通过 Docker API 发送命令给 Docker 守护过程(dockerd),让守护过程执行对应的命令动作,例如发送 docker run 命令。Docker Registry:存储了 Docker 镜像。像 Docker Hub 就是一个任何人都能够应用的公共注册核心,Docker 会默认地从 Docker Hub 上查找镜像。当然,咱们也能够本人搭建个 Docker Registry。容器的演变一开始,Docker 是基于 Linux 内核提供的技术进行容器治理的,它将 Linux 简单的容器治理进行了简化,造成了本人独有的一套命令体系。起初,Docker 将底层技术进行了形象,定义了一组接口,只有实现了这组接口,那么就能够进行容器的治理,这就是 Libcontainer。 随着 Docker 的炽热,越来越多的公司退出容器技术的开发,在 2015 年谷歌、微软、Docker 等公司成立了 OCI 组织,致力于定制统一的容器规范。在 Libcontainer 的根底上推出了容器引擎: runC。 ...

October 19, 2021 · 2 min · jiezi

关于docker:docker-系列基础入门

Docker 与 容器Docker 是基于容器技术实现的,因为 Docker 的炽热风行,可能很多人会认为容器是 Docker 独有的技术。 实际上,容器技术最开始是基于 Linux Container(简称 LXC)技术实现的,通过内核提供的 Namespace 和 Cgroup 机制,实现了对应用程序的隔离以及物理资源的调配。起初随着 Docker 的发展壮大,容器技术越来越被更多的公司承受,才倒退出了规范容器技术。 容器技术和虚拟机(虚拟化)技术有点像,它们两者都提供了环境隔离的性能。不同的是。容器是运行在操作系统上的一个过程,它和其余应用程序是共享内核的,由操作系统提供虚拟化隔离性能;而虚拟机则是完完全全另起了个操作系统,将环境隔离的更加彻底。 Docker 在容器根底上倒退出了一个欠缺的生态系统,它将容器视为一种打包格局,将应用程序所需的所有,比方依赖库、运行时环境等都汇合在了在一起,使得一次构建,到处运行。 这也是 Docker 为什么能发展壮大的起因,它将开发与运维很好的交融在一起。开发人员能够很轻松的构建、打包、推送和运行应用程序。而且还容许咱们将容器视为部署单元,以模块化的形式公布,升高了零碎的运维治理难度。 Docker 基本概念镜像和容器是 Docker 的外围概念,把握了它们,也就明确了 Docker 在做什么事了。镜像是一个模板文件,就像咱们以前装置零碎时用到的光盘,有了这张光盘,就能够随时将应用程序跑起来,而不须要本人手动的去构建应用程序所须要的所有,因为它曾经在镜像里安顿的明明白白了。 而容器是镜像的运行实例,咱们能够把镜像看成是一个个的构建块,容器依据这些构建块搭建起了一个隔离的,领有整个包的应用程序。每一个容器都是一个标准化单元,确保了在不同机子上也能领有统一的行为。 Docker 的镜像是一个分层的文件系统,通过一层层的组合,使得咱们能够复用这些不同粒度的镜像文件,像 Alpine 镜像、Ubuntu 镜像等根底镜像文件。 Docker 也是一个凋谢的程序构建运行平台,当咱们将一个镜像构建实现后,就能够将其上传到一个集中存储、散发的仓库了。这样,每当咱们或其他人想要基于镜像构建程序的时候,就能够从仓库对立拉取,进行后续动作。 Docker 的仓库就像 app 的利用商店一样,制作人负责将做好的镜像上传上去,其他人只须要依据下载地址 Download 下来应用就行了。像 Docker 官网的 Docker Hub,还有阿里云的镜像仓库,都提供了此性能。当然,咱们也能够搭建公有仓库,进行访问控制。 Docker 的搭建好了,是时候开始入手搭建属于咱们的 Docker 服务了,这里咱们的环境为 Ubuntu 操作系统。 卸载旧版本如果咱们之前装置过 docker ,先卸载: sudo apt-get remove docker docker-engine docker.io containerd runc更新 apt 包索引并且增加应用 HTTPS 传输的软件包以及 CA 证书: ...

October 19, 2021 · 2 min · jiezi

关于docker:docker-安装redis

1、下载文件地址https://hub.docker.com/_/redis,找到本人想要的版本2、下载配置文件(找到对应的版本下载redis.conf)daemonize yes 改为 daemonize no3、执行命令装置(指定版本我的是4.0.14) docker run -p 9999:9999 --name redis-test -v /www/redis/redis.conf:/etc/redis/redis.conf -v /www/redis/data:/data -d redis:4.0.14 redis-server /etc/redis/redis.conf --appendonly yes4、启动(如果有谬误docker logs redis-test)

October 14, 2021 · 1 min · jiezi

关于docker:Docker-20108-搭建PHPMysqlphpmyadmin开发环境

Hi 小伙伴们大家好, 因为Mac每次降级都会搬迁我的拓展库,最初都要手动再去搞一次环境,其次每个coder实质都是懒人,所以筹备试试docker,看是否能一劳永逸的解决这个问题。 装置php:首先先在dockerhub上寻找本人想要的版本。tips:这里最好不要用latest的tag,因为不稳固。这里我用的php-7.4https://hub.docker.com/_/php?...装置:1.登陆dockerhub:docker login -u 用户名 -p 2.docker pull php:7.4.24:fpm(拉取现象) 3.docker images(看是否拉取胜利) 4.装置容器:(将拜访网站的本地文件地址映射到容器的地址)docker run --name myphp-fpm -v ~/nginx/www:/www -d php:7.4.24-fpm胜利会返回container_id 5.应用docker ps 看是否运行,如果没有查看应用docker ps -a,如果运行失败则再去仓库换一下其余的php版本。 搭建Nginx:(把8083端口映射到容器的80端口,把php并入nginx的网络中)(tips:myphp-fpm是装置php时的name)docker run --name php-nginx -p 8083:80 -d \ -v 你的网站文件地址/www:/usr/share/nginx/html:ro \-v 你的网站文件地址/conf/conf.d:/etc/nginx/conf.d:ro \--link myphp-fpm:php \nginx胜利后会返回容器id,应用docker ps 查看是否运行胜利。 而后在本地的www目录下,新增index.php文件,echo phpinfo();再curl localhost:8083,看是否有返回,有则阐明装置胜利。 装置Mysql:装置流程:https://www.runoob.com/docker...tips:mysql的装置很简略,次要是php如何拜访mysql,这里是不能用localhost作为mysql的地址的,首先先查看mysql容器的详情:docker inspect mysql_container_id找到Gateway,这个就是mysql的host地址 而后从镜像下载的php是没有mysql拓展的,须要先装置一下: 进入容器 docker exec -it php_containerid /bin/bash至目录下 cd /usr/local/bin 装置扩大 ./docker-php-ext-install pdo_mysql 装置扩大 ./docker-php-ext-install mysqli重启容器 docker restart php_containerid装置实现后:(我的mysql端口设置的3307,06在用) 最初装置phpmyadmin:dockerhub地址:https://hub.docker.com/r/phpm...用最新的就行: 个别在概述中都会有装置步骤:(能力不好的同学能够用google翻译,间接翻译网页,怎么翻墙本人多搜寻一下)操作:docker pull phpmyadmin/phpmyadmin:latestdocker run -d --name myadmin --link mysql5.7:db -p 8080:80 phpmyadmin/phpmyadmin打完出工! ...

October 13, 2021 · 1 min · jiezi

关于docker:Docker-createstartrun命令

docker run = (docker start) + (docker run) docker create: 应用image创立一个容器,在其上增加一个可读写层;并不运行该容器;docker start: 为容器创立一个隔离的过程空间;启动容器;

October 9, 2021 · 1 min · jiezi

关于docker:Docker-四类网络模式

网络模式配置阐明host-net=host容器和宿主机共享Network namspacecontainer-net=container:{Name_or_ID}容器和另外一个容器共享Network namespace,典型利用:kubernetes中pod多个容器none-net=none容器有独立的Network namespace,但没有任何网络配置bridge-net=bridge默认模式Host模式host模式下,容器与宿主机共享一个Network namespace,容器将不会虚构出本人的网卡,而是应用宿主机的IP和端口。 host模式下,容器能够间接应用宿主机IP地址与外界通信,容器内也能够间接应用宿主机的端口,不须要NAT。 host模式长处是网络性能较好,但网络隔离性不好。 Container模式container模式下,指定新创建的容器和已存在的另一个容器共享一个Network namespace,新创建的容器不会再创立网卡。 kubernetes是container模式的典型利用,pod中的多个容器共享一个Network namespace,能够通过127.0.0.1:port拜访彼此。 //bridge模式的容器$ docker run -d -P --net=bridge nginx:1.9.1$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESeb19088be8a0 nginx:1.9.1 nginx -g 3 minutes ago Up 3 minutes 0.0.0.0:32769->80/tcp,0.0.0.0:32768->443/tcp admiring_engelbart$ docker exec -it admiring_engelbart ip addr8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP group defaultlink/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ffinet **172.17.0.3**/16 scope global eth0//新建一个容器,跟之前的容器共享Network namespace,ip雷同$ docker run -it --net=container:admiring_engelbart ubuntu:14.04 ip addr...8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP group defaultlink/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ffinet **172.17.0.3**/16 scope global eth0None模式none模式下,不会为容器进行网络配置,也就是说,容器没有网卡信息(仅有lo网卡)。 ...

October 9, 2021 · 1 min · jiezi

关于docker:最新版-Harbor-在ubuntu系统上安装

最新版 Harbor 在ubuntu零碎上装置 The latest version of Harbor is installed on the ubuntu system 装置docker Install docker root@hello:~# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyunroot@hello:~#配置Docker Compose Configure Docker Compose root@hello:~# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 633 100 633 0 0 2444 0 --:--:-- --:--:-- --:--:-- 2444100 12.1M 100 12.1M 0 0 10.2M 0 0:00:01 0:00:01 --:--:-- 26.2Mroot@hello:~# sudo chmod +x /usr/local/bin/docker-composeroot@hello:~# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composeroot@hello:~# docker-compose --versiondocker-compose version 1.29.2, build 5becea4croot@hello:~#下载Docker Harbor安装包 ...

October 9, 2021 · 3 min · jiezi

关于docker:国内环境WSL2在http代理下运行minikube

因为国内环境下无法访问k8s.gcr.io,因此须要设置代理来拜访。如果没有正确设置好,在运行minikube start后会显示以下正告: ❗ This container is having trouble accessing https://k8s.gcr.io阐明这个容器不能失常拜访到k8s.gcr.io去拉取镜像 参照https://minikube.sigs.k8s.io/... 正确配置的办法为: export HTTP_PROXY=http://<proxy hostname:port>export HTTPS_PROXY=https://<proxy hostname:port>export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,192.168.49/24minikube start(官网文档漏掉了192.168.49/24) 问题就在于怎么让minikube连上windows的梯子。 假如咱们在windows关上了一个容许来自局域网连贯的HTTP代理服务,端口为10809。那么为WSL2配置代理时,咱们首先要晓得WSL2下,windows的IP地址,则须要运行 cat /etc/resolv.conf其中显示的nameserver则为WSL2连贯到windows的IP地址,假如值为172.80.18.1 因而咱们能够为WSL2设置梯子: export HTTP_PROXY=http://172.80.18.1:10809export HTTPS_PROXY=http://172.80.18.1:10809这样咱们就能在WSL2中应用到代理服务拜访外网 !然而这样也无奈让minikube连贯到外网。 因为minikube是运行在docker desktop中的,不能间接应用到WSL2的网络(有误请斧正)。而咱们在开启WSL2中运行minikube的时候,minikube的零碎会应用WSL2的网络环境变量(HTTP_PROXY, HTTPS_PROXY, NO_PROXY)作为minikube的环境变量。因而,正确的填写形式是: export HTTP_PROXY=http://host.docker.internal:10809export HTTPS_PROXY=http://host.docker.internal:10809export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,192.168.49/24minikube start其中host.docker.internal在容器中会被容器的DNS服务解析为宿主的IP地址,也就是容器与windows通信的IP地址,相似WSL2与windows通信的IP地址。这样设置,minikube就能应用到零碎代理。

October 9, 2021 · 1 min · jiezi

关于docker:Docker-entrypoint与cmd解析

entrypoint和cmd用在dockerfile中,它们都能够指定容器启动时运行的命令,在应用时,通常用entrypoint指定命令,cmd指定命令参数。 exec和shellentrypoint和cmd的写法:exec模式、shell模式 exec模式:[]的写法,举荐应用 FROM ubuntuCMD [ "top" ]容器运行时,top命令是1号过程。 shell模式:/bin/sh -c "cmd"的写法 FROM ubuntuCMD top容器运行时,sh是1号过程,top是sh创立的子过程。 典型用法:CMD简略的能够在CMD中指定:命令和参数 FROM ubuntuEXPOSE 8080CMD [ "nginx", "-s", "reload" ]典型用法:EntryPoint + CMD (举荐)通用的办法,在EntryPoint中指定命令,在CMD中指定参数 # prometheus通过CMD指定运行参数USER nobodyEXPOSE 9090VOLUME [ "/prometheus" ]WORKDIR /prometheusENTRYPOINT [ "/bin/prometheus" ] #exec写法:指定命令CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ "--storage.tsdb.path=/prometheus", \ "--web.console.libraries=/usr/share/prometheus/console_libraries", \ "--web.console.templates=/usr/share/prometheus/consoles" ] #exec写法:指定参数典型用法:kubernetes在pod的spec中,能够通过command参数笼罩镜像中的EntryPoint参数: # kubectl explain pod.spec.containers.commandDESCRIPTION: Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. 在pod的spec中,能够通过args参数笼罩镜像中的CMD参数: ...

October 8, 2021 · 1 min · jiezi

关于docker:DockerSwarm三节点部署

学习笔记1. 装置要求在开始之前,Dcoker Swarm 集群部署 机器须要满足以下几个条件: 虚构了3台机器,操作系统:Linux version 3.10.0-1127.el7.x86_64硬件配置:CPU(s)-2;3GB或更多RAM;硬盘20G左右;3台机器形成一个集群,机器之前网络互通;集群能够拜访外网,用于拉取镜像禁用swap分区2. Swarm 的工作模式2.1 集群调度图原理swarm 集群由治理节点(manager)和工作节点(work node)形成。 2.2 Swarm集群调用架构图docker 集群之间通过近程API实现通信(Remote API) 3. 环境筹备master节点 : 192.168.11.99node1节点 :192.168.11.131node2节点 :192.168.11.130## 1. 敞开防火墙$ systemctl stop firewalld### 敞开防火墙主动启动$ systemctl disable firewalld## 2. 敞开selinux### 2.1 批改配置文件永恒敞开selinux【重启失效】$ vi /etc/sysconfig/selinuxSELINUX=enforcing### 2.2 长期敞开selinux$ setenforce 0## 3. 别离设置设置主机名:$ hostnamectl set-hostname swarm-master$ hostnamectl set-hostname swarm-node1$ hostnamectl set-hostname swarm-node2### 3.1 查看hostname$ hostname## 4. 配置hosts文件$ cat >> /etc/hosts << EOF192.168.11.99 swarm-master192.168.11.130 swarm-node1192.168.11.131 swarm-node2EOF## 5. 安裝docker$ yum -y install docker### 5.1 docker服务启动$ systemctl enable docker && systemctl start docker4.创立Swarm并增加节点# Swarm-master 虚拟机操作## 1. 创立Swarm集群(记录token)[root@localhost vagrant]# docker swarm init --advertise-addr 192.168.11.99 Swarm initialized: current node (6jir7f507ur05lrhtc2xq8plt) is now a manager. To add a worker to this swarm, run the following command: # 这就是增加节点的形式(要保留初始化后token,因为在节点退出时要应用token作为通信的密钥) docker swarm join --token SWMTKN-1-30sw7z3qrh3gs0pi5fmllypw0c5dxrnpzf2uwd5nldcifzzroh-0l4pkovtgy708qs5pn5v8rzsk 192.168.11.99:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. ## 2. 查看集群的相干信息[root@localhost vagrant]# docker info | grep swarm WARNING: You're not using the default seccomp profile WARNING: bridge-nf-call-ip6tables is disabled Name: swarm-master### 2.1 查看节点信息[root@localhost vagrant]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 6jir7f507ur05lrhtc2xq8plt * swarm-master Ready Active Leader # Swarm-node 虚拟机## 3. 退出的集群### 3.1 Swarm-node1 节点退出到集群[root@localhost vagrant]# docker swarm join --token SWMTKN-1-30sw7z3qrh3gs0pi5fmllypw0c5dxrnpzf2uwd5nldcifzzroh-0l4pkovtgy708qs5pn5v8rzsk 192.168.11.99:2377 This node joined a swarm as a worker.### 3.2 Swarm-node2 节点退出到集群[root@localhost vagrant]# docker swarm join --token SWMTKN-1-30sw7z3qrh3gs0pi5fmllypw0c5dxrnpzf2uwd5nldcifzzroh-0l4pkovtgy708qs5pn5v8rzsk 192.168.11.99:2377 This node joined a swarm as a worker.## 4.查看集群节点状态[root@localhost vagrant]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 6jir7f507ur05lrhtc2xq8plt * swarm-master Ready Active Leader qt9ja2qbmq4n040y60g6xbdlz swarm-node2 Ready Active scnyaecep2d1eiccvubusykww swarm-node1 Ready Active5. Swarm 罕用操作更改节点的availablity状态swarm集群中node的availability状态能够为 active或者drain,其中: ...

October 8, 2021 · 5 min · jiezi

关于docker:5分钟实现用docker搭建Redis集群模式和哨兵模式

如果让你为开发、测试环境别离搭一套哨兵和集群模式的redis,你最快须要多久,或者你须要一天?2小时?事实是能够更短。 是的,你曾经猜到了,用docker部署,真的只须要十几分钟。 一.筹备工作拉取redis镜像运行如下命令: docker pull redis该命令拉取的镜像是官网镜像,当然你能够搜寻其余的镜像,这里不做深刻 查看镜像状况: 二.部署redis哨兵主从模式什么是哨兵模式?--请自行百度 1、什么是docker compose?Docker Compose 能够了解为将多个容器运行的形式和配置固化下来! 就拿最简略的例子来说吧,如果咱们要为咱们的利用容器筹备一个 MySQL 容器和一个 Redis 容器,那么在每次启动时,咱们先要将 MySQL 容器和 Redis 容器启动起来,再将利用容器运行起来。这其中还不要忘了在创立利用容器时将容器网络连接到 MySQL 容器和 Redis 容器上,以便利用连贯上它们并进行数据交换。 这还不够,如果咱们还对容器进行了各种配置,咱们最好还得将容器创立和配置的命令保留下来,以便下次能够间接应用。 针对这种状况,咱们就不得不引出在咱们开发中最常应用的多容器定义和运行软件,也就是 Docker Compose 了。 2、编写reids主从docker-compose.ymlversion: '3.7'services: master: image: redis container_name: redis-master restart: always command: redis-server --requirepass redispwd --appendonly yes ports: - 6379:6379 volumes: - ./data1:/data slave1: image: redis container_name: redis-slave-1 restart: always command: redis-server --slaveof redis-master 6379 --requirepass redispwd --masterauth redispwd --appendonly yes ports: - 6380:6379 volumes: - ./data2:/data slave2: image: redis container_name: redis-slave-2 restart: always command: redis-server --slaveof redis-master 6379 --requirepass redispwd --masterauth redispwd --appendonly yes ports: - 6381:6379 volumes: - ./data3:/data名词解释: ...

September 29, 2021 · 4 min · jiezi

关于docker:智汀家庭云快速入门开发环境搭建

开发环境搭建此文档形容如何搭建智汀家庭云开发环境,下载,编译与运行。如果你只是想体验智汀家庭云的性能,能够先浏览应用 Docker 运行智汀家庭云;如果你是想进行插件开发,可参考开发您的第一个插件。 1. 环境筹备go 版本为 1.15.0 或以上确保能生成 gRPC 代码,请参考 gRPC Quick startdocker 与 docker-compose, 如果须要 smartassistant 与插件进行交互,则须要装置此依赖 2. 步骤获取代码 git clone https://github.com/zhiting-tech/smartassistant.git同步依赖 go mod tidy复制 app.yaml.example 到 app.yaml 并配置 debug: true# 智汀云smartcloud:# 留空则不连贯智汀云domain: "" tls: false # 智汀家庭云 smartassistant:# 由智汀云调配的IDid: "demo-sa"# 由智汀云调配的设施密钥key: "aGVsbG93b3JsZA"db: "sadb.db"host: 0.0.0.0port: 8088grpc_port: 9234docker: server: "" username: "" password: ""编译运行 go run ./cmd/smartassistant/main.go 如果已装置 docker 与 docker-compose,则能够通过以下命令进行打包与运行 make buildmake run而后能够拜访以下地址确认服务是否失常运行 curl http://localhost:8088/check失常会返回 {"status":0,"reason":"胜利","data":{"is_bind":false}}

September 28, 2021 · 1 min · jiezi

关于docker:docker安装并运行perl

话不多说间接上环境为windows已装置docker 1.文件构造新建文件夹perl,并在其中新建以下文件├── docker-compose.yml└── hello.pl 2.hello.pl #!/usr/bin/env perluse strict;use warnings;print "Hello, World\n";3.docker-compose.yml version: '3'services: perl: image: "perl" volumes: - ".:/usr/src/perl" working_dir: "/usr/src/perl" entrypoint: - "/usr/local/bin/perl"4.执行在perl门路的控制台输出docker-compose run perl hello.pl 5.控制台后果Hello, World 根本的docker perl环境就搭建结束了

September 28, 2021 · 1 min · jiezi

关于docker:Goland基于Docker联动开发Go

背景:因为工作环境不同,每次都要都要搭不同go的环境,所以把心一横都把环境放在docker上,这样每次就用dockerfile就能够了。 如果能迷信上网预计都能查到这文章 https://blog.jetbrains.com/go...如果依据jetbrain 这篇文章来原理是goland build 新docker,然而会有个问题,每次run或build 上在dockerdesk里多出一些奇怪的容器(到当初我也查不明起因)。而后我逆向思维,做成在goland连贯本地build 好的docker,而后goland terminal开发测试。 实际操作:一、基于本人需要写dockerfile FROM centos:8.4.2105#尽量小写run,合在一起能够减小层RUN yum install -y curl wget && \ wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-8.repo && \ yum install -y tar bzip2 unzip passwd sudo yum-utils hostname net-tools man which && \ yum install -y gcc gcc-c++ git make automake cmake patch libpng-devel libjpeg-devel && \ yum -y install openssh-server && \ yum clean all && \ mkdir -p /var/run/sshd && \ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && \ /bin/echo 'root:123456'|chpasswd && \ /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd && \ /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local && \ rm -rf /run/nologin RUN cd /tmp &&\ wget -O go.tar.gz https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz && \ tar --remove-files -C /usr/local/ -zxf go.tar.gz && \ mkdir -p /go && \ ln -sv /usr/local/go/bin/go /bin #env 放在最初 ENV GOROOT=/usr/local/goENV GOPATH=/goENV PATH=$GOROOT/bin:$PATHEXPOSE 22CMD /usr/sbin/sshd -D二、build 镜像docker build -t docker_centos . ...

September 25, 2021 · 1 min · jiezi

关于docker:被-Docker-日志坑惨了

原文链接: 被 Docker 日志坑惨了 最近在读《计算机程序的结构和解释》,外面有一句话:代码必须可能被人浏览,只是机器凑巧能够执行。 我也想到了一句话:BUG 肯定可能被人写出,只是恰好我写的多而已。 说多了都是泪,来看看我最近遇到的一个问题。 问题一般的一天,关上一般的电脑,登录一台一般的服务器,敲下一条一般的命令。 在我应用命令补全时,呈现了一条不一般的提醒: -bash: cannot create temp file for here-document: No space left on device ls -bash怎么磁盘满了? 应用 df -h 一看还真是。 什么起因呢? 解决首先,查找一下零碎里的大文件,看看是哪个小可爱搞的鬼。 du -sh /* | grep G很快就定位到了这个目录:/var/lib/docker/containers。 原来是 Docker 这家伙,这个目录下寄存的都是容器运行过程中产生的日志。 应用上面命令来给这些文件按大小排个序: du -d1 -h /var/lib/docker/containers | sort -h32K /var/lib/docker/containers/d607c06e475191fff1abd0c2b4b672e7fe8a96cb197f4e8557b18600de2e60af36K /var/lib/docker/containers/0d4321106721b9d26335fefef7b9e8e23629691684a4da2f953ac8223c8240c336K /var/lib/docker/containers/7525aab4aa917aa1016169114762261726ac7b9cc712bef35cdc7035b50d20ce36K /var/lib/docker/containers/9252e1c373d59ef5613c2b6122eb6e43aa2bd822bd2c199aa67d6eb659c4adb7142M /var/lib/docker/containers142M /var/lib/docker/containers/15700ee92cd2831554b9a1e78127df0f07248c1498d35c17525407bc8a98bc1a文件名称就是容器 ID,每个文件对应一个容器,也就能够定位到,具体是哪个容器产生了大量的日志。 应用这个命令能够将大文件疾速清空: sh -c "cat /dev/null > ${log_file_name}"然而清空了文件哪算解决问题,新的日志还在源源不断往日志里打呢。看了看日志内容,很相熟。前两天为了调试程序,刚加的一条 print。 编辑代码,删除 print,重启容器。好了,日志不再疯狂追加了。 为什么 print 语句将日志都输入到文件里了呢?别着急,前面再来具体介绍。 先解决一下眼前的问题,放任日志有限增长是必定不行的,须要有一个单个文件大小限度。否则,今天张三再加一条 print,磁盘又满了。 ...

September 24, 2021 · 2 min · jiezi

关于docker:Docker-Docker-Compose

到Docker网站下载Docker-Desktop,我的MPB是Intel CPU,下载Docker with Intel Chip。pkg间接装置。装完之后系统托盘有个Docker logo。 Official web page docker-composedocker login registry.cn-shanghai.aliyuncs.com# enter passworddocker-compose -f env.yml up -dup 启动-f 文件-d 后盾运行查看日志 docker logs -f container-nameDockerCLIpulldocker pullpushdocker pushDocker ComposeSee [https://docs.docker.com/compo...]() CLISee [https://docs.docker.com/compo...](): up启动(-d,--detach脱离模式,-f指定文件,默认docker-compose.yml) docker-compose up -d# docker-compose up --detachdowndocker-compose down -vstartdocker-compose startstopdocker-compose stoprestartdocker-compose restartlogs查看日志(-t显示工夫戳,-f,--tail=n显示最初n行) docker-compose logs -t -f --tail=100 [service_name]

September 20, 2021 · 1 min · jiezi

关于docker:智汀家庭云开发指南Golang架构概述开发指南Android

智汀家庭云,立项于2021年,联合国内智能家居各厂商软件特点,研发“智汀家庭云”,并对该生态系统全面开源,为国内首个采纳智能家居零碎全生态开源协定(Apache License, Version 2.0)的软件。 1.利用场景智汀家庭云能够离线运行在局域网内,也能够通过绑定到智汀云来获取更弱小的性能。 运行在局域网环境时,用户能够通过智汀APP发现与治理智汀家庭云,装置插件来对设施进行治理与管制。 用户也能够通过在智汀云下面注册帐号,将智汀家庭云设施绑定到云端,而后通过云端直达的形式反对在外网对设施进行管制。 在开发过程中须要留神的是,任何状况下,用户的隐衷都是最重要的,因而在任何状况下用户都可无条件地勾销对智汀云,第三方利用或插件的受权; 同时也应保障用户数据不被第三方获取。 2.架构设计智汀家庭云运行在 Linux 主机下,通过 Docker 来对其中的服务进行部署与资源隔离。其中局部外围服务容器须要事后配置, 并且随系统启动主动运行;而插件(plugin)类服务则是由 SA 调用 docker API 的形式进行治理。 插件启动后会运行一个 gRPC 服务以及一个可选的 HTTP 服务,SA 通过 docker API 监听插件运行状态, 通过 gRPC 接口获取插件信息 3.功能模块智汀家庭云模块拆分为 internal 与 pkg 两个分组,其中 internal 为与我的项目业务逻辑相关性比拟强功能模块分组;pkg 蕴含与业务关系不大的通用组件。其援用关系如下图所示: 其中比拟重要的业务模块如下: 4.程序设计的规定参考根底模块应用单例模式实例化,但应防止间接应用全局变量,可应用 entity.DB(), pkg.Log() 的模式做一层封装; 懒汉模式提早初始化应应用 sync.Once 根底模块只依赖其余根底模块,不应波及业务逻辑 简略的业务模块(譬如只依赖根底模块),可间接应用单例模式,或者通过容器模块(app,command,server 等)进行实例化 依赖其余业务模块,或者两个模块间可能会进行互相调用而导致循环援用的,应用管制反转(依赖注入)技术进行解决,由容器模块进行实例化(请参考 ioc exmaple) 利用内防止应用 eventbus 等 pubsub 模型进行模块解耦;如需应用 pubsub,请在 event 包中对事件类型、音讯进行预约义;禁止为了不便而间接应用 Bus.Pub("my_event", data) 的模式 尽量避免应用 init,应显式地在外层调用相干的 InitXXX() 函数 ...

September 17, 2021 · 1 min · jiezi

关于docker:win7-部署-ArtiPub实践

win7 部署 ArtiPub实际背景写好文章后须要在多个媒体渠道公布文章,例如掘金、SegmentFault、CSDN、知乎、简书、微信公众号等等 一文多发性能已提上日程。 ArtiPub能够满足如上需要 ArtiPub 介绍https://github.com/crawlab-te...ArtiPub (Article Publisher 的简称,意为 "文章发布者") 是一款开源的一文多发平台,能够帮忙文章作者将编写好的文章主动公布到掘金、SegmentFault、CSDN、知乎、开源中国等技术媒体平台,流传优质常识,获取最大的曝光度。 ArtiPub 装置这里 咱们采纳的是 docker装置 Docker 装置要求Docker: 18.03Docker Compose: 1.24.1在这里引出一个新课题 :装置Docker 在Windows 7 装置 DockerDocker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。Docker 本质上是在曾经运行的 Linux 下制作了一个隔离的文件环境,因而它执行的效率简直等同于所部署的 Linux 主机。win7、win8 等须要利用 docker toolbox 来装置,国内能够应用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/doc... 装置胜利后 启动Docker Quickstart Terminal 通过 Docker 装置pre:筹备好source : git clone https://github.com/crawlab-team/artipubDocker运行 ArtiPub 应用上面的形式。根目录下: 通过 docker-compose.yaml 启动在命令行中输出如下命令。docker-compose up 留神⚠️,Win7 上的Docker 宿主机不是本机,,在浏览器输出 http://< 宿主机 IP>:8000 即可看到界面。这里的IP为192.168.99.100 【Docker异样】docker-compose up throw UnicodeDecodeError 解说 UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 11126: illegal multibyte sequence解决方案docker-compose.yml去除中文符号就能够了展现 ...

September 16, 2021 · 1 min · jiezi

关于docker:docker-compose的使用

背景:当初有那么的一个需要:一些小伙伴想本地运行一套springcloud的利用。线上的都docker化部署在kubernetes集群中了。利用呢应用了statefulset的形式部署(他想考主机名hostname去在nacos中注册)。而后本地idea开发呢。主机名都是一个。故他感觉跑不了多个利用(有8个利用吧),最初的后果就是每个人电脑下面都启动了不同的利用去搞.......是不是很反人类?windows本机能跑kubernetes然而我也感觉麻烦啊......怎么搞从新捡起来一下docker compose的应用吧,犹记得上次应用docker compose还是2016年测试跑一个gitlab。从此以后根本就跟docker compose无缘了 docker compose的应用windows装置docker dockercompose就略过了......我的windows pc没有装置wsl2。也不想搞了就找了一个linux测试一下docker compose化利用。而后染程序本人去玩了。开始大家招聘信息的下面写的精通docker虚拟化啥的......我只能呵呵了!初始化环境centos8一台 装置docker docker composednf install dnf-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce -ycurl -L https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose顺手找了一个docker compose版本下载了,也不太关怀版本就想简略跑起来。docker compose的源是从一个博客上看来的。下载官网的下不动,这是个国内的源。 相熟一下docker compose先copy了一个docker-compose.yaml的文件简略批改了一下 version: '3'services: laya-auth: image: harbor.xxx.com/layatools/openjdk:8-jdk container_name: laya-auth hostname: laya-auth volumes: - /data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar ports: - 8080:8080 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar跑了一下起来了......嗯都放上试一下: version: '3'services: laya-auth: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-auth hostname: laya-auth volumes: - /data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar ports: - 8080:8080 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/auth/target/auth-0.0.1-SNAPSHOT.jar laya-chat: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-chat hostname: laya-chat volumes: - /data/laya-verse-service/chat/target/chat-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/chat/target/chat-0.0.1-SNAPSHOT.jar ports: - 8081:8081 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/chat/target/chat-0.0.1-SNAPSHOT.jar laya-datacontrol: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-datacontrol hostname: laya-datacontrol volumes: - /data/laya-verse-service/datacontrol/target/datacontrol-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/datacontrol/target/datacontrol-0.0.1-SNAPSHOT.jar ports: - 8082:8082 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/datacontrol/target/datacontrol-0.0.1-SNAPSHOT.jar laya-gateway: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-gateway hostname: laya-gateway volumes: - /data/laya-verse-service/gateway/target/gateway-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/gateway/target/gateway-0.0.1-SNAPSHOT.jar ports: - 8083:8083 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/gateway/target/gateway-0.0.1-SNAPSHOT.jar laya-monitor: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-monitor hostname: laya-monitor volumes: - /data/laya-verse-service/monitor/target/monitor-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/monitor/target/monitor-0.0.1-SNAPSHOT.jar ports: - 8084:8084 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/monitor/target/monitor-0.0.1-SNAPSHOT.jar laya-node: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-node hostname: laya-node volumes: - /data/laya-verse-service/node/target/node-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/node/target/node-0.0.1-SNAPSHOT.jar ports: - 8085:8085 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/node/target/node-0.0.1-SNAPSHOT.jar laya-nodemanage: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-nodemanage hostname: laya-nodemanage volumes: - /data/laya-verse-service/nodemanage/target/nodemanage-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/nodemanage/target/nodemanage-0.0.1-SNAPSHOT.jar ports: - 8086:8086 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/nodemanage/target/nodemanage-0.0.1-SNAPSHOT.jar laya-social: image: harbor.xxxx.com/layatools/openjdk:8-jdk container_name: laya-social hostname: laya-social volumes: - /data/laya-verse-service/social/target/social-0.0.1-SNAPSHOT.jar:/data/laya-verse-service/social/target/social-0.0.1-SNAPSHOT.jar ports: - 8087:8087 command: - /bin/sh - -c - | java -jar /data/laya-verse-service/social/target/social-0.0.1-SNAPSHOT.jar ...

September 16, 2021 · 8 min · jiezi

关于docker:Notes-of-Docker

Install docker on Manjarosudo pacman -S dockersudo pacman -Syyu Run dockersystemctl start dockersystemctl enable docker Config dockersudo groupadd dockersudo gpasswd -a $USER docker ## add logged-in user to the docker groupnewgrp docker or sudo usermod -aG docker seashine vim /etc/docker/daemon.json { "graph": "/data/docker", "storage-driver": "overlay2", "insecure-registries": ["registry.access.redhat.com","quay.io"], "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"], "bip": "172.99.106.1/24", "exec-opts": ["native.cgroupdriver=systemd"], "live-restore": true}sudo systemctl daemon-reloadsudo systemctl restart docker Logindocker login docker.ioThe authentication information is stored at:cat /root/.docker/config.json ...

September 15, 2021 · 2 min · jiezi

关于docker:Docker-容器间网络通讯

一、序言本文介绍docker容器间的网络通讯。搭建宿主环境是window 10,docker 是laradock下的lnmp。 二、常识补充援用 docker 官网原文 When you start Docker, a default bridge network (also called bridge) is created automatically, and newly-started containers connect to it unless otherwise specified. You can also create user-defined custom bridge networks.意思就是docker启动的应用会有一个默认网络,用户也可自定义桥接网络。接下来咱们就是用自定义网络,为容器间做网络通讯。 失常每个容器启动都有一个专属公有网络,在公有网络下容器内的各个利用网络是相通的。然而如果要容器间通信就须要创立一个虚构网络进去,通过此网络来进行通信。 三、配置1、用laradock装置好两个容器,装置过程网上大把教程,留神如果在同一宿主机上,同一应用软件的映射进去的端口不能雷同,例如PHP 9001,mysql 3006 nginx 80 等。装置胜利后,在Docker Desktop 会呈现两个容器名称,如图 2、创立新的用户自定义网络 docker network create --driver bridge testnet3、在env文件中增加一环境变量,如NATWORK_NAME=testnet 4、在docker-compose.yml 增加新的网络(只能增加,尽量不把laradock原有网络删掉,不然后续所有网络都要跟着改,很麻烦) networks: frontend: driver: ${NETWORKS_DRIVER} backend: driver: ${NETWORKS_DRIVER} default: external: name: ${NATWORK_NAME}5、在docker-compose.yml 各所需服务中增加增加新网络 nginx: build: context: ./nginx args: - CHANGE_SOURCE=${CHANGE_SOURCE} - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER} - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT} - http_proxy - https_proxy - no_proxy volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ${NGINX_HOST_LOG_PATH}:/var/log/nginx - ${NGINX_SITES_PATH}:/etc/nginx/sites-available - ${NGINX_SSL_PATH}:/etc/nginx/ssl ports: - "${NGINX_HOST_HTTP_PORT}:80" - "${NGINX_HOST_HTTPS_PORT}:443" - "${VARNISH_BACKEND_PORT}:81" depends_on: - php-fpm networks: - frontend - backend - default6、重新启动docker 各容器 ...

September 15, 2021 · 1 min · jiezi

关于docker:第十二篇Docker-Dockerfile之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker Dockerfile什么是 Dockerfile?Dockerfile 是一个用来构建镜像的文本文件,文本内容蕴含了一条条构建镜像所需的指令和阐明。 应用 Dockerfile 定制镜像这里仅解说如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只有晓得构建的流程即可。 1、上面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件) 在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内增加以下内容: FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html2、FROM 和 RUN 指令的作用 FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制须要的根底镜像。后续的操作都是基于 nginx。 RUN:用于执行前面跟着的命令行命令。有以下俩种格局:shell 格局: RUN <命令行命令># <命令行命令> 等同于,在终端操作的 shell 命令。exec 格局: RUN ["可执行文件", "参数1", "参数2"]# 例如:# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline留神:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像收缩过大。例如: FROM centosRUN yum install wgetRUN wget -O redis.tar.gz "RUN tar -xvf redis.tar.gz以上执行会创立 3 层镜像。可简化为以下格局:FROM centosRUN yum install wget \ && wget -O redis.tar.gz " \ && tar -xvf redis.tar.gz如上,以 && 符号连贯命令,这样执行后,只会创立 1 层镜像。 ...

September 13, 2021 · 2 min · jiezi

关于docker:第十一篇Docker-仓库管理之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker 仓库治理仓库(Repository)是集中寄存镜像的中央。以下介绍一下 Docker Hub。当然不止 docker hub,只是近程的服务商不一样,操作都是一样的。 Docker Hub目前 Docker 官网保护了一个公共仓库 Docker Hub。 大部分需要都能够通过在 Docker Hub 中间接下载镜像来实现。 注册在 收费注册一个 Docker 账号。 登录和退出登录须要输出用户名和明码,登录胜利后,咱们就能够从 docker hub 上拉取本人账号下的全副镜像。 $ docker login退出 退出 docker hub 能够应用以下命令: $ docker logout拉取镜像 你能够通过 docker search 命令来查找官网仓库中的镜像,并利用 docker pull 命令来将它下载到本地。 以 ubuntu 为关键词进行搜寻: $ docker search ubuntu应用 docker pull 将官网 ubuntu 镜像下载到本地: $ docker pull ubuntu推送镜像用户登录后,能够通过 docker push 命令将本人的镜像推送到 Docker Hub。 以下命令中的 username 请替换为你的 Docker 账号用户名。 $ docker tag ubuntu:18.04 username/ubuntu:18.04$ docker image lsREPOSITORY TAG IMAGE ID CREATED ... ubuntu 18.04 275d79972a86 6 days ago ... username/ubuntu 18.04 275d79972a86 6 days ago ... $ docker push username/ubuntu:18.04$ docker search username/ubuntuNAME DESCRIPTION STARS OFFICIAL AUTOMATEDusername/ubuntu

September 13, 2021 · 1 min · jiezi

关于docker:第十篇Docker-容器连接之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker 容器连贯后面咱们实现了通过网络端口来拜访运行在 docker 容器内的服务。 容器中能够运行一些网络应用,要让内部也能够拜访这些利用,能够通过 -P 或 -p 参数来指定端口映射。 上面咱们来实现通过端口连贯到一个 docker 容器。 网络端口映射咱们创立了一个 python 利用的容器。 xxx@xxx:~$ docker run -d -P training/webapp python app.pyfce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d另外,咱们能够指定容器绑定的网络地址,比方绑定 127.0.0.1。 咱们应用 -P 绑定端口号,应用 docker ps 能够看到容器端口 5000 绑定主机端口 32768。 xxx@xxx:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMESfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper咱们也能够应用 -p 标识来指定容器端口绑定到主机端口。 两种形式的区别是: -P :是容器外部端口 随机映射到主机的高端口。-p : 是容器外部端口绑定到 指定的主机端口。 xxx@xxx:~$ docker run -d -p 5000:5000 training/webapp python app.py33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0xxx@xxx:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMES33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartikfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper另外,咱们能够指定容器绑定的网络地址,比方绑定 127.0.0.1。 ...

September 13, 2021 · 2 min · jiezi

关于docker:第九篇Docker-镜像使用之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker 镜像应用当运行容器时,应用的镜像如果在本地中不存在,docker 就会主动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 上面咱们来学习: 1、治理和应用本地 Docker 主机镜像2、创立镜像列出镜像列表咱们能够应用 docker images 来列出本地主机上的镜像。 xxx@xxx:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 11 months ago 348.8 MB各个选项阐明: ...

September 13, 2021 · 4 min · jiezi

关于docker:第八篇Docker-容器使用之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker 客户端docker 客户端非常简单 ,咱们能够间接输出 docker 命令来查看到 Docker 客户端的所有命令选项。 `xxx@xxx:~# docker`能够通过命令 docker command --help 更深刻的理解指定的 Docker 命令应用办法。 例如咱们要查看 docker stats 指令的具体应用办法: xxx@xxx:~# docker stats --help容器应用获取镜像如果咱们本地没有 ubuntu 镜像,咱们能够应用 docker pull 命令来载入 ubuntu 镜像: $ docker pull ubuntu启动容器以下命令应用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器: $ docker run -it ubuntu /bin/bash参数阐明: -i: 交互式操作。-t: 终端。ubuntu: ubuntu 镜像。/bin/bash:放在镜像名后的是命令,这里咱们心愿有个交互式 Shell,因而用的是 /bin/bash。要退出终端,间接输出 exit: root@ed09e4490c57:/# exit启动已进行运行的容器查看所有的容器命令如下: $ docker ps -a点击图片查看大图: 应用 docker start 启动一个已进行的容器: $ docker start b750bbbcfd88后盾运行在大部分的场景下,咱们心愿 docker 的服务是在后盾运行的,咱们能够过 -d 指定容器的运行模式。 ...

September 13, 2021 · 3 min · jiezi

关于docker:第七篇Docker-Hello-World之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker Hello WorldDocker 容许你在容器内运行应用程序, 应用 docker run 命令来在容器内运行一个应用程序。 输入Hello world xxx@xxx:~$ docker run ubuntu:15.10 /bin/echo "Hello world"Hello world各个参数解析: docker: Docker 的二进制执行文件。 run: 与后面的 docker 组合来运行一个容器。 ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 /bin/echo "Hello world": 在启动的容器里执行的命令 以上命令残缺的意思能够解释为:Docker 以 ubuntu15.10 镜像创立一个新容器,而后在容器里执行 bin/echo "Hello world",而后输入后果。 运行交互式的容器咱们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现 "对话"的能力: xxx@xxx:~$ docker run -i -t ubuntu:15.10 /bin/bashroot@0123ce188bd8:/#各个参数解析: -t: 在新容器内指定一个伪终端或终端。 -i: 容许你对容器内的规范输出 (STDIN) 进行交互。 留神第二行 root@0123ce188bd8:/#,此时咱们已进入一个 ubuntu15.10 零碎的容器 咱们尝试在容器中运行命令 cat /proc/version和 ls别离查看以后零碎的版本信息和当前目录下的文件列表 ...

September 13, 2021 · 1 min · jiezi

关于docker:Docker-系统性入门进阶实践2021最新版网盘分享

download:Docker 系统性入门+进阶实际(2021最新版)1 import re 2 str_test='abcdefgHABC123456中华民族' 3 4 #把正则表达式编译成对象,如果常常使用该对象,此种形式可提高肯定效率 5 num_regex = re.compile(r'[0-9]') 6 zimu_regex = re.compile(r'[a-zA-z]') 7 hanzi_regex = re.compile(r'[\u4E00-\u9FA5]') 8 9 print('输出字符串:',str_test)10 #findall获取字符串中所有匹配的字符11 num_list = num_regex.findall(str_test)12 print('蕴含的数字:',num_list)13 zimu_list = zimu_regex.findall(str_test)14 print('蕴含的字母:',zimu_list)15 hanzi_list = hanzi_regex.findall(str_test)16 print('蕴含的汉字:',hanzi_list)复制代码 #羊车门问题 复制代码 1 import random as r 2 3 #总次数 4 total=1000000 #1000,1W,10W,100W 5 #换与不换的获胜次数 6 win1=0 7 win2=0 8 9 for i in range(total):10 #模拟抉择过程11 man=r.randint(1,3)12 car=r.randint(1,3)13 #后果:一开始为车门,不换+1.14 # 否则则一开始为羊门,换+1.15 if man==car:16 win1+=117 else:18 win2+=110 nochange=nochange+111 else:12 change=change+113 print("不更改选择失去汽车的概率为{:.2f}".format(nochange/x))14 15 print("更改选择失去汽车的概率为{:.2f}".format(change/x)) ...

September 13, 2021 · 1 min · jiezi

关于docker:Docker-系统性入门进阶实践2021最新版一起学习

import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; import net.sf.json.JSONObject; /***短信API服务调用示例代码 - 聚合数据*在线接口文档:http://www.juhe.cn/docs/54**/ public class JuheDemo { public static final String DEF_CHATSET = "UTF-8";public static final int DEF_CONN_TIMEOUT = 30000;public static final int DEF_READ_TIMEOUT = 30000;public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";//配置您申请的KEYpublic static final String APPKEY ="*************************";//1.屏蔽词查看测public static void getRequest1(){ String result =null; String url ="http://v.juhe.cn/sms/black";//申请接口地址 Map params = new HashMap();//申请参数 params.put("word","");//须要检测的短信内容,须要UTF8 URLENCODE params.put("key",APPKEY);//利用APPKEY(利用具体页查问) try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); }}//2.发送短信public static void getRequest2(){ String result =null; String url ="http://v.juhe.cn/sms/send";//申请接口地址 Map params = new HashMap();//申请参数 params.put("mobile","");//接管短信的手机号码 params.put("tpl_id","");//短信模板ID,请参考集体核心短信模板设置 params.put("tpl_value","");//变量名和变量值对。如果你的变量名或者变量值中带有#&=中的任意一个特殊符号,请先别离进行urlencode编码后再传递,<a href="http://www.juhe.cn/news/index/id/50" target="_blank">具体阐明></a> params.put("key",APPKEY);//利用APPKEY(利用具体页查问) params.put("dtype","");//返回数据的格局,xml或json,默认json try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); }}public static void main(String[] args) {}/** * * @param strUrl 申请地址 * @param params 申请参数 * @param method 申请办法 * @return 网络申请字符串 * @throws Exception */public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs;}//将map型转为申请参数型public static String urlencode(Map<String,Object>data) { StringBuilder sb = new StringBuilder(); for (Map.Entryi : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString();}} ...

September 13, 2021 · 2 min · jiezi

关于docker:第五篇Docker-镜像加速之Spring-Cloud直播商城-b2b2c电子商务技术总结

Docker 镜像减速国内从 DockerHub 拉取镜像有时会遇到困难,此时能够配置镜像加速器。Docker 官网和国内很多云服务商都提供了国内加速器服务,例如: 科大镜像:网易:阿里云: 你的ID>.mirror.aliyuncs.com七牛云加速器:当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像减速服务,倡议依据运行 Docker 的云平台抉择对应的镜像减速服务。 阿里云镜像获取地址: 登陆后,左侧菜单选中镜像加速器就能够看到你的专属地址了:之前还有 Docker 官网加速器 ,当初如同曾经不能应用了,咱们能够多增加几个国内的镜像,如果有不能应用的,会切换到能够应用个的镜像来拉取。 Ubuntu14.04、Debian7Wheezy对于应用 upstart 的零碎而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址: DOCKER_OPTS="--registry-mirror="重新启动服务: $ sudo service docker restartUbuntu16.04+、Debian8+、CentOS7对于应用 systemd 的零碎,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件): {"registry-mirrors":["/"]}之后重新启动服务: $ sudo systemctl daemon-reload$ sudo systemctl restart dockerWindows 10对于应用 Windows 10 的零碎,在零碎右下角托盘 Docker 图标内右键菜单抉择 Settings,关上配置窗口后左侧导航菜单抉择 Daemon。在 Registrymirrors 一栏中填写加速器地址 ,之后点击 Apply 保留后 Docker 就会重启并利用配置的镜像地址了。Mac OS X对于应用 Mac OS X 的用户,在任务栏点击 Docker for mac 利用图标-> Perferences...-> Daemon-> Registrymirrors。在列表中填写加速器地址 。批改实现之后,点击 Apply&Restart 按钮,Docker 就会重启并利用配置的镜像地址了。查看加速器是否失效查看加速器是否失效配置加速器之后,如果拉取镜像依然非常迟缓,请手动查看加速器配置是否失效,在命令行执行 docker info,如果从后果中看到了如下内容,阐明配置胜利。 ...

September 13, 2021 · 1 min · jiezi