关于docker:Docker-Exec-命令详解与实践指南

简介Docker Exec 是 Docker 中一个十分有用的命令,它容许您在正在运行的容器外部执行命令。这对于调试、治理和与容器进行交互十分有帮忙。在本篇文章中,咱们将深入探讨 Docker Exec 命令的应用办法,并提供一些实用的示例,旨在帮忙初学者更好地了解和使用这一性能。 什么是 Docker Exec 命令?Docker Exec 命令用于在正在运行的 Docker 容器外部执行命令。它容许用户与容器进行交互,从而能够在容器中执行各种操作,如运行 shell 脚本、装置软件包、查看日志等。应用 Docker Exec 命令,咱们能够防止进入容器的简单步骤,间接在容器内执行所需的操作。 Docker Exec 根本语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS: 可选参数,用于指定一些附加选项,比方 -i(交互式)、-t(调配伪终端)等。CONTAINER: 要执行命令的指标容器名称或容器ID。COMMAND [ARG...]: 要在容器内执行的命令及其参数。Docker Exec 罕用选项 -i, --interactive: 放弃规范输出关上,容许用户与命令交互。-t, --tty: 调配一个伪终端,通常与 -i 一起应用以便在容器外部应用终端命令行。-u, --user: 指定执行命令的用户名或用户ID。-d, --detach: 在后盾模式下执行命令。-e, --env: 设置环境变量。-w, --workdir: 指定命令的工作目录。注:更多参数能够运行docker exec --help查看 Docker Exec 实例演示进入运行中的容器并执行命令docker exec -it my_container bash这个命令将在名为 my_container 的容器内启动一个交互式 bash 终端。 在容器内运行命令docker exec my_container ls /app这个命令会在 my_container 容器内列出 /app 目录下的文件和文件夹。 ...

March 1, 2024 · 1 min · jiezi

关于docker:从零开始写-Docker三基于-cgroups-实现资源限制

本文为从零开始写 Docker 系列第三篇,在mydocker run 根底上基于 cgroups 实现容器的资源限度。 <!--more--> 残缺代码见:https://github.com/lixd/mydocker 欢送 Star如果你对云原生技术充斥好奇,想要深刻理解更多相干的文章和资讯,欢送关注微信公众号。 搜寻公众号【摸索云原生】即可订阅 举荐浏览以下文章对 docker 根本实现有一个大抵意识: 外围原理:深刻了解 Docker 外围原理:Namespace、Cgroups 和 Rootfs基于 namespace 的视图隔离:摸索 Linux Namespace:Docker 隔离的神奇背地基于 cgroups 的资源限度 初探 Linux Cgroups:资源管制的微妙世界深刻分析 Linux Cgroups 子系统:资源精密治理Docker 与 Linux Cgroups:资源隔离的魔法之旅基于 overlayfs 的文件系统:Docker 魔法解密:摸索 UnionFS 与 OverlayFS基于 veth pair、bridge、iptables 等等技术的 Docker 网络:揭秘 Docker 网络:手动实现 Docker 桥接网络开发环境如下: root@mydocker:~# lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 20.04.2 LTSRelease: 20.04Codename: focalroot@mydocker:~# uname -r5.4.0-74-generic留神:须要应用 root 用户1. 概述上一节中,曾经能够通过命令行mydocker run -it的形式创立并启动容器。这一节,将通过 cgroups 实现对容器资源进行限度。 ...

March 1, 2024 · 7 min · jiezi

关于docker:掌握-Docker-PS-命令轻松管理容器

前言作为容器化技术的重要组成部分,Docker 提供了许多命令来治理容器,其中 docker ps 命令是一个根底而且罕用的命令。本文将介绍 docker ps 命令的应用办法,旨在帮忙初学者轻松理解和应用这个命令。 Docker PS 简介docker ps 命令用于列出以后正在运行的容器。它能够显示容器的根本信息,如容器 ID、镜像名称、启动命令、运行状态等。docker ps 命令的根本语法如下: docker ps [OPTIONS]OPTIONS阐明: -a :显示所有的容器,包含未运行的。-f :依据条件过滤显示的内容。--format :指定返回值的模板文件。-l :显示最近创立的容器。-n :列出最近创立的n个容器。--no-trunc :不截断输入。-q :静默模式,只显示容器编号。-s :显示总的文件大小。应用示例显示正在运行的容器docker ps显示所有容器(包含已进行的)docker ps -a显示最近创立的容器docker ps -l显示指定数量的容器docker ps -n 3显示残缺的镜像IDdocker ps --no-trunc只显示镜像IDdocker ps -q7.自定义输入格局 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"命令输入如下图: 字段阐明上面是对docker ps命令后果中局部字段的阐明 CONTAINER ID:容器 IDIMAGE:容器应用的镜像COMMAND:启动容器时后,容器运行的命令CREATED:容器的创立工夫STATUS:容器状态PORTS:理论运行端口,若有指定运行端口则会显示指定的端口和默认运行端口,以及连贯类型( tcp / udp )NAMES:容器名字SIZE:容器全副文件的总大小,也会显示容器大小容器状态介绍 created:已创立restarting:重启中running:运行中removing:迁徙中paused:暂停exited:进行dead:死亡总结docker ps命令是Docker中一个十分有用的工具,它提供了对容器的治理和监督性能。通过应用不同的选项和参数,能够灵便地定制docker ps命令的输入,并与其余Docker命令联合应用,更好地治理和运维容器化的应用程序。心愿本文对您了解和应用docker ps命令有所帮忙!

February 29, 2024 · 1 min · jiezi

关于docker:深入理解-Docker-Run-命令从入门到精通

前言在容器化技术的畛域中,Docker 无疑是最为宽泛应用的工具之一。而 docker run 命令则是应用 Docker 进行容器治理的外围命令之一。本文将深入探讨 docker run 命令的应用办法,旨在帮忙初学者疾速入门并把握该命令的各种用法。 Docker Run 简介docker run 命令用于在 Docker 中运行一个容器。它能够基于指定的镜像创立并启动一个新的容器实例。docker run 命令的根本语法如下: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]其中,OPTIONS 是一系列用于配置容器运行形式的选项,IMAGE 是要运行的容器镜像,COMMAND 是在容器外部执行的命令,ARG 是传递给命令的参数。 docker run 执行流程 首先在指定镜像上创立一个可写的容器层 而后应用指定的命令(COMMAND)启动它 docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start 罕用参数 option作用-i以交互模式运行容器,通常与 -t 同时应用-t启动容器后,为容器调配一个命令行,通常与 -i 同时应用-v目录映射,容器目录挂载到宿主机目录,格局: <host目录>:<容器目录>-d守护过程,后盾运行该容器-p指定端口映射,格局:主机(宿主)端口:容器端口-P随机端口映射,容器外部端口随机映射到主机的端口(49153起始 49153到65535)-u以什么用户身份创立容器–name“nginx-lb” 容器名字-m,--memory bytes设置容器应用内存最大值-h, --hostname string指定容器的 host name–dns 8.8.8.8指定容器 dns 服务器-e username=“ritchie”设置环境变量–restart Docker重启后,容器是否主动重启–privileged容器内是否应用真正的 root 权限应用示例应用tomcat7镜像,创立名为tomcat_hogwarts的容器,如下:docker run --name tomcat_hogwarts tomcat:7这样运行,会间接将容器运行日志打印进去,所以个别都须要加 -d参数,否则无奈持续敲其余命令 应用tomcat7镜像,创立名为tomcat_hogwarts01的容器,并应用-d参数,让其后盾运行,命令如下:docker run -d --name tomcat_hogwarts01 tomcat:7运行如下图: ...

February 29, 2024 · 1 min · jiezi

关于docker:从零开始写-Docker二优化使用匿名管道传递参数

本文为从零开始写 Docker 系列第二篇,次要在 mydocker run 命令根底上优化参数传递形式,改为应用 runC 同款的匿名管道传递参数。 <!--more-->如果你对云原生技术充斥好奇,想要深刻理解更多相干的文章和资讯,欢送关注微信公众号。 扫描下方二维码或搜寻公众号【摸索云原生】即可订阅 残缺代码见:https://github.com/lixd/mydocker 欢送 Star举荐浏览以下文章对 docker 根本实现有一个大抵意识: 外围原理:深刻了解 Docker 外围原理:Namespace、Cgroups 和 Rootfs基于 namespace 的视图隔离:摸索 Linux Namespace:Docker 隔离的神奇背地基于 cgroups 的资源限度 初探 Linux Cgroups:资源管制的微妙世界深刻分析 Linux Cgroups 子系统:资源精密治理Docker 与 Linux Cgroups:资源隔离的魔法之旅基于 overlayfs 的文件系统:Docker 魔法解密:摸索 UnionFS 与 OverlayFS基于 veth pair、bridge、iptables 等等技术的 Docker 网络:揭秘 Docker 网络:手动实现 Docker 桥接网络开发环境如下: root@mydocker:~# lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 20.04.2 LTSRelease: 20.04Codename: focalroot@mydocker:~# uname -r5.4.0-74-generic留神:须要应用 root 用户1. 以后形式存在的问题在之前实现 run 命令时,参数传递形式比较简单间接。 ...

February 26, 2024 · 3 min · jiezi

关于docker:dockercompose-离线环境下安装mysql

上传mysql离线镜像文件到服务器上链接:https://pan.baidu.com/s/19gCYmLcf_YR23T8ypfsg4Q提取码:6666 docker加载镜像文件到本地镜像仓库中 加载离线镜像文件到本地仓库docker load -i mysql-5.7.38.tar 查问是否加载胜利,确保无误docker images | grep mysql 配置docker-compose.yml文件(docker容器外面的目录请勿批改) version: '3'services: mysql: network_mode: "host" restart: always container_name: docker_mysql image: mysql:5.7.38 environment: TZ: Asia/Shanghai # root 明码 MYSQL_ROOT_PASSWORD: 12345678 ports: - "3306:3306" volumes: # 挂载日志 - ./haifeng/app/dockerConfig/mysql/logs:/logs # 挂载数据 - /haifeng/app/dockerConfig/mysql/data:/var/lib/mysql # 挂载配置文件 - /haifeng/app/dockerConfig/mysql/config:/etc/mysql/conf.d privileged: true command: [ 'mysqld', '--lower_case_table_names=1', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=+8:00' ]通过docker-compose构建mysql 来到docker-compose文件目录下,执行构建mysql命令docker-compose -f ./docker-compose.yml up mysql --build -d查问docker过程运行命令,状态为 up 即是失常运行docker ps | grep mysql ...

February 22, 2024 · 1 min · jiezi

关于docker:Dockercompose离线安装

1、下载docker-compose https://github.com/docker/compose/tags 2、上传docker-compose,复制文件到指定目录并给文件增加执行权限 [root@server ~]# lsdocker-compose-linux-x86_64 [root@server ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose [root@server ~]# chmod +x /usr/local/bin/docker-compose 3、应用docker-compose -v 测试是否胜利,如果不行,就应用/usr/local/bin/docker-compose -v [root@server ~]# docker-compose -v Docker Compose version v2.17.24、docker-compose生成镜像和启动容器 [root@server ~]# docker-compose bulid #根据docker-compose.yum生成镜像[root@server ~]# docker-compose up -d #启动容器加 -d代表后盾守护过程启动转载https://blog.csdn.net/qq_44484541/article/details/130133484

February 22, 2024 · 1 min · jiezi

关于docker:Docker容器网络概述

凋谢容器端口当应用docker create或者docker run创立并运行一个容器的时候,默认不会凋谢容器端口。能够应用--publish或者-p选项来凋谢容器的端口,这时Docker就会创立一条防火墙规定,将宿主机的端口和容器的端口关联起来,宿主机的这个端口接管和收回的所有数据都会被转发到容器的端口中,这样的话外界或者宿主机上的其余容器和过程就能够通过宿主机的端口拜访容器的端口。将容器的端口凋谢其实是一种不平安的行为,如果只是想让同一台宿主机之间的容器能够通过网络互相通信的话,不须要凋谢它们的端口,只须要借助Docker网络(Docker Network)即可。 Docker网络(Docker Network)Docker能够创立各种类型的虚构网络,例如能够是bridge网络,也能够是overlay网络等等。能够通过docker network创立、查看以后宿主机上的Docker Network,让一个容器退出Docker Network等等。一个容器能够退出多个Docker Network。 容器在Docker网络中的IP地址和hostname默认状况下,当一个容器退出了一个Docker Network之后,Docker会主动调配给这个容器一个IP地址。也能够在容器退出Docker Network的时候,指定一个ip地址给它。容器的hostname默认是该容器的ID。也能够在容器退出Docker Network的时候指定一个hostname给它。 DNS服务默认状况下,Docker会通过bind mount的形式把宿主机的\etc\resolv.conf挂载到每一个容器中去。因而,每一个容器的DNS配置都和宿主机的是一样的。如果容器退出的是用户通过docker network create创立进去的自定义网络,那么容器将会应用的Docker内置的DNS服务器,内置的DNS服务器将会把内部IP地址的查找转发给宿主机上配置的DNS服务器。也能够在docker create或者docker run的时候指定容器的DNS配置。须要留神的是:容器并不会共享宿主机上的\etc\hosts文件,能够在运行docker run时指定要退出容器的\etc\hosts文件中的内容。 Docker Network DriversDocker反对以下不同类型的Docker Network: Network DriverDescriptbridge应用docker network create创立网络时创立进去的默认网络类型。当同一台宿主机上的多个容器之间须要互相通信的时候,通常会应用这种网络。在这种网络中的容器无奈和宿主机以及别的网络的容器进行通信host将宿主机和容器之间相连接的网络类型,容器能够间接应用宿主机的网络overlay将多个Docker daemon连贯在一起,容许Swarm服务和容器跨节点(主机)进行网络通信ipvlan这种网络容许用户对IPv4和IPv6的寻址有着齐全的管制macvlan容许将一个MAC地址调配给容器,Docker daemon会依据容器的MAC地址对数据进行路由。一般来说这种类型的网络用于部署那些古老的遗留应用程序,这些程序面向的是物理网络开发,而不是网络协议栈none将一个容器和宿主机以及其余容器齐全隔离开来的网络类型,这种网络在Swarm服务中不可应用代理服务器能够给Docker Client或者Docekr Daemon设置代理服务器(proxy server)。 包过滤当把某一个容器的端口凋谢了之后,为了平安起见个别会须要对这个端口的数据包进行过滤。在Linux中,Docker是通过iptables规定来进行包过滤的。Docker会在iptables中插入两条iptables chain,别离叫做DOCKER-USER和DOCKER,并且会保障所有的网络包都会先通过这两个chain的查看,它们都属于FORWARD chain的一部分。所有容器的iptables规定都会被主动退出到DOCKER chain中。不要手动增加或批改或删除DOCKER chain中的内容,然而能够向DOCKER-USER chain中增加规定,这些规定会比DOCKER chain中的规定优先级更高。事实上,Docker总会保障在FORWARD chain中,DOCKER-USER chain的优先级是最高的,其次就是DOCKER chain,其余的iptables chain中的规定,不论是手动增加的,还是防火墙增加的,优先级都不会比它们两个高。 防火墙如果运行Docker的零碎应用了firewalld并且开启了--iptables,Docker就会主动创立一个名为docker的firewalld zone,并把所有由Docker创立的网络接口(例如docker0)放入到这个zone外面。Debian和Ubuntu自带的防火墙ufw应用的是iptables外面的INPUT和OUTPUT chain,而Docker会在nat表中解决容器的网络流量,因而Docker容器的流量实际上并不会通过ufw的过滤。 参考资料https://docs.docker.com/network/

September 25, 2023 · 1 min · jiezi

关于docker:docker数据持久化解决方案

在古代软件开发畛域中,Docker曾经成为一种极为风行的容器化技术。它能够将应用程序和所有相干组件打包到一个独立的容器中,从而实现跨平台、跨零碎的部署。然而,随着Docker的广泛应用,数据长久化问题慢慢裸露进去。 在传统的利用部署中,咱们通常只需关注利用的装置和配置即可。然而,在容器化的环境中,容器是长期的,它们能够随时被删除和替换。这就使得数据的持久性成为一个长久的挑战。如果咱们不妥善处理数据长久化,那么每次容器被更新或重新部署时,咱们的数据都会遗失。 例如在服务环境中,更多的时候咱们想要的是将容器的某些数据保留下来;如服务的日志,MySQL 的数据等等。但如果不做其余的配置,在容器删除之后,数据也会随之删除;这显然不合乎咱们用户的需要。 而Docker提供了一种名为数据卷的机制,能够将宿主机的文件或目录挂载到容器中,从而实现数据的长久化存储。数据卷即是将文件或目录存在容器的内部,并通过挂载的形式将其与容器外部进行关联。数据卷的益处是能够保持数据的持久性,即便容器被删除,数据也会被保留下来。 以下演示Docker数据长久化的一种解决方案,供参考: 查看本机的volume# docker volume ls 默认状况下应该是空的,可能是之前运行过 redis 的起因,我曾经删除了所有容器。mysql波及参数能够参考以下链接 https://github.com/docker-library/docs/tree/master/mysql运行mysql容器留神:先运行mysql容器,生成volume docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7运行后果如下: [root@iZj6c3g2v08zt442n9q9bhZ ~]# docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7Unable to find image 'mysql:5.7' locally5.7: Pulling from library/mysql33847f680f63: Pull complete5cb67864e624: Pull complete1a2b594783f5: Pull completeb30e406dd925: Pull complete48901e306e4c: Pull complete603d2b7147fd: Pull complete802aa684c1c4: Pull complete5b5a19178915: Pull completef9ce7411c6e4: Pull completef51f6977d9b2: Pull completeaeb6b16ce012: Pull completeDigest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596Status: Downloaded newer image for mysql:5.7c0d2bad21a5a1b65aecc846c1005f8115efcc18f98f1c3d7a94b54fe24b371a0[root@iZj6c3g2v08zt442n9q9bhZ ~]# docker container ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc0d2bad21a5a mysql:5.7 "docker-entrypoint.s…" 18 seconds ago Up 15 seconds 3306/tcp, 33060/tcp mysql进入容器创立数据库: ...

September 25, 2023 · 1 min · jiezi

关于docker:Docker容器和镜像存储机制介绍

本文次要介绍Docker容器(Container)和镜像(Image)是如何进行数据存储的。 容器如何读写文件镜像(Image)是由若干个层(Layer)所组成的,当用户应用image运行了一个container之后,就会在这个image的最下面再加上一个可读可写的layer,如下图所示:除了最下面那一个layer是可读写的之外,上面的所有layer都是属于image的,都是只读的。在container运行时,任何在container文件系统中写入和批改的数据都会被写入到最上层的可读写layer(这里不包含volume、bind mount和tmpfs这些长久化存储伎俩),并不会影响到上面的那些只读layer。当container运行完结的时候,最上层的可读写layer就会被抛弃,而上面的那些只读layer是属于image的,并不会受到影响。这也就是为什么应用同一个image运行container,该container完结之后,从新应用该image启动一个新的container,上一个container写入和批改的数据全都不见了,用户能看见的仍旧是当初编写Dockerfile时写入该image的那些数据的起因。如果应用同一个image启动了多个container,那么这些container会有各自的最上层的可读写layer,然而上面的那些只读layer是共用的,如下图所示: 镜像的layer治理一个image的多个layer并不是绑定和存储在一起的,它们之间是低耦合的。应用docker pull命令拉取一个image的时候,并不是一次性拉取的,而是一个layer一个layer地拉取,而后存储在本机(在linux上默认是/var/lib/docker/<storage-driver>/下)。一台主机中存在多个image时,有可能会呈现多个image的某些layer雷同的状况,那么此时在主机中就只会存储一份该layer,而不是存储多个。那么问题来了:既然多个layer是离开存储的,那么用户在container中却能够看到所有的layer中存储的文件,这又是怎么做到的呢?这就波及到了union file system和union mount。能够通过docker image history以及docker image inspect来查看某个image的所有layer。 Copy On Write当container想要更改本来就存在于image中的那些数据的时候该怎么办呢?那些数据是位于下面那些属于image的只读层的,因而必定不能间接批改。Docker采纳的解决方案个别是copy-on-write。当container想要读取本来就存在于image中的数据时,间接从数据所在的只读layer读取即可。而如果想要批改本来就存在于image中的数据时,Docker就会先把要被批改的文件拷贝到最上层的属于container的可读写layer中,而后再在这个可读写的layer中进行数据的批改即可。值得一提的是,哪怕是对文件的元数据(meta data)的批改(例如批改文件权限、所属用户等等),也会触发copy-on-write机制。Docker有多种存储引擎(storage driver),不同的storage driver对copy-on-write的具体实现是不一样的。留神:并不是所有的Docker存储引擎都反对copy on write的,例如vfs就不反对! 查看容器占用磁盘大小应用docker ps -s来查看一个container在运行时占用的磁盘大小,例如:SIZE指的是该container最上层的可读写layer的大小,而virtual指的是启动了该container的image的那些只读layer的大小。须要留神的是,通过这个命令失去的container磁盘空间大小是不包含以下这些的: log文件所应用的磁盘空间volume和bind mount所应用的磁盘空间container的配置文件所应用的磁盘空间内存交换所应用的磁盘空间Checkpoints所应用的磁盘空间Docker存储引擎Docker在linux下提供了如下的存储引擎选项: 存储引擎形容overlay2在linux上首选的存储引擎,不须要额定的配置fuse-overlayfs举荐在运行rootless的Docker时应用btrfs和zfs能够提供更多的性能,例如快照等等,然而须要额定的配置vfs目前仍处于测试中,用于不反对copy on write的文件系统中,性能堪忧,不举荐应用在生产环境中devicemapper在生产环境中须要direct-lvm的反对能够通过docker info命令来查看本人应用的Docker用的是哪一个storage driver:上图中应用的storage driver是overlay2。 参考资料https://docs.docker.com/storage/storagedriver/

September 21, 2023 · 1 min · jiezi

关于docker:如何解决Docker端口映射不能访问的问题

在企业数字化转型过程中,Docker 作为一种罕用的容器技术,一个十分弱小的性能就是通过端口映射将容器内的服务公布到内部。 然而,有时候咱们会遇到无奈从内部拜访容器外部文件的问题,导致服务无奈失常运行。上面将对这个问题进行深刻分析并给出解决方案。 一、问题形容: 我在服务器上启动了个nginx:latest的容器,应用命令如下: [root@Hangz-Ecs1 ~]# docker run -id -p 8080:80 --name my_nginx nginx:latest66559ae47822bcab638f12855d24f2b0beba51b24aa642c461f4ed2bb5de36c9docker启动之后,应用netstat -ntalp | grep 8080 发现端口监听胜利 [root@Hangz-Ecs1 ~]# netstat -ntalp | grep 8080tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1439/docker-proxytcp6 0 0 :::8080 :::* LISTEN 1443/docker-proxy而后就到客户机去发动申请发现申请不胜利,提醒连贯失败,而后应用telnet发现8080端口不通,这个时候去查看firewalld 和selinux发现都是处于敞开状态,在服务器上telnet8080端口发现失常通信,应用iptables -t nat -L查看iptables转发失常,然而就是不通 [root@Hangz-Ecs1 ~]# iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destinationDOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCALChain INPUT (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationDOCKER all -- anywhere !loopback/8 ADDRTYPE match dst-type LOCALChain POSTROUTING (policy ACCEPT)target prot opt source destinationMASQUERADE all -- 172.18.0.0/16 anywhereMASQUERADE all -- 172.17.0.0/16 anywhereMASQUERADE tcp -- 172.18.0.2 172.18.0.2 tcp dpt:10514MASQUERADE tcp -- 172.18.0.10 172.18.0.10 tcp dpt:webcacheMASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:httpChain DOCKER (2 references)target prot opt source destinationRETURN all -- anywhere anywhereRETURN all -- anywhere anywhereDNAT tcp -- anywhere localhost tcp dpt:fujitsu-dtcns to:172.18.0.2:10514DNAT tcp -- anywhere anywhere tcp dpt:http to:172.18.0.10:8080二、解决办法:依据下面问题排查剖析后 ,最初发现是转收回问题了,Linux转发是要开启内核转发性能net.ipv4.ip_forward的,于是查看内核转发是否关上 ...

September 20, 2023 · 1 min · jiezi

关于docker:使用中科大镜像源一键给-ubuntu-安装-docker

sudo apt-get updatesudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg# Add the repository to Apt sources:echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update而后 sudo apt install -y docker-ce docker-ce-cli containerd.io

September 18, 2023 · 1 min · jiezi

关于docker:技术文档-免下载0配置多任务并发在Docker-Image中使用OpenSCA

想跳过下载步骤疾速应用OpenSCA检测代码危险?想实现多个我的项目并发扫描? 在Docker Image中应用OpenSCA即可轻松实现。一起来look look 目标不便用户应用最新版本的 OpenSCA-cli保障环境的一致性,打消不同操作系统对后果的影响能够不便在本地保护不同版本的 OpenSCA-cli不便在特定状况下并发扫描的需要应用办法命令行传参形式应用检测当前目录的依赖关系 docker run -ti --rm -v $(PWD):/src opensca/opensca-cli应用云端数据库检测破绽 docker run -ti --rm -v $(PWD):/src opensca/opensca-cli -token xxxx应用本地数据库检测破绽 docker run -ti --rm -v $(PWD):/src -v /localDB:/data opensca/opensca-cli -db /data/db.json查看依赖关系并生成 SBOM docker run -ti --rm -v $(PWD):/src opensca/opensca-cli -out /src/output.spdx配置文件形式应用OpenSCA-cli Docker 镜像默认从以后 /src 目录查找 config.json 配置文件,因而若心愿对每一个我的项目进行独自配置,只需在不同我的项目的根目录保护配置文件即可。 例如如下目录构造: .├── LICENSE├── README.md├── config.json├── pom.xml├── src│ ├── config│ └── main├── testfiles│ └── ...└── tools └── ...config.json 内容 { "path": "/src", "out": "/src/output.spdx", "vuln": true, "dedup": true, "progress": true, "url": "https://opensca.xmirror.cn", "token": "xxxx-xxxx-xxxx-xxxx", "origin": { "": { "dsn": "" } }, "maven": [ { "repo": "", "user": "", "password": "" } ]}实现配置后,后续扫描无需批改命令,只需批改配置文件即可,不便在 CI/CD 的 Pipeline 中应用: ...

September 11, 2023 · 1 min · jiezi

关于docker:Docker常用命令入门版

1.Docker根底命令启动Docker : systemctl start docker 敞开Docker :systemctl stop docker 重启Docker :systemctl restart docker 查看docker 运行状态 : systemctl status docker 设置开机启动,重启操作系统后失效 :systemctl enable docker 2.Docker镜像命令查看本地镜像 : docker images 搜寻镜像 :docker search 镜像名称 eg 搜寻nginx相干镜像 : docker search nginx 拉取镜像 :docker pull 镜像名称:版本号eg 拉取nginx最新版镜像 : docker pull nginx:latest 导出镜像 : docker save -o [保留的指标文件名称] [镜像名称:版本号 | 镜像ID]注:保留的镜像名称,后缀名应为 tareg 导出nginx最新版镜像 : docker save -o nginx.tar nginx:latest 删除镜像 : docker rmi 镜像ID或者镜像名称注:该镜像没有对应的容器时才可被删除eg 删除nginx最新版镜像 : docker rmi nginx:latest ...

September 11, 2023 · 1 min · jiezi

关于docker:docker-build-报错-source-not-found

FROM python:3.10.10-bullseye RUN . /etc/os-release && cat > /etc/apt/sources.list <<EOF deb http://mirrors.tuna.tsinghua.edu.cn/debian/ ${VERSION_CODENAME} main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian/ ${VERSION_CODENAME}-updates main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian/ ${VERSION_CODENAME}-backports main contrib non-free deb http://security.debian.org/debian-security bullseye-security main contrib non-freeEOFRUN apt-get updateRUN apt-get install -y vimRUN mkdir /codeADD . /code/WORKDIR /code/PyAVRUN source scripts/activate.sh && pip install --upgrade -r tests/requirements.txt && ./scripts/build-deps && make报错了 ─➤ docker build -t ponponon/pyav:0.0.1 . 2 ↵[+] Building 3.6s (12/12) FINISHED docker:default => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 753B 0.0s => [internal] load metadata for docker.io/library/python:3.10.10-bullseye 0.0s => [1/8] FROM docker.io/library/python:3.10.10-bullseye 0.0s => [internal] load build context 0.5s => => transferring context: 3.18MB 0.5s => CACHED [2/8] RUN . /etc/os-release && cat > /etc/apt/sources.list <<EOF 0.0s => CACHED [3/8] RUN apt-get update 0.0s => CACHED [4/8] RUN apt-get install -y vim 0.0s => CACHED [5/8] RUN mkdir /code 0.0s => [6/8] ADD . /code/ 2.7s => [7/8] WORKDIR /code/PyAV 0.0s => ERROR [8/8] RUN source scripts/activate.sh && pip install --upgrade -r tests/requirements.txt && ./scripts/build-deps && make 0.3s------ > [8/8] RUN source scripts/activate.sh && pip install --upgrade -r tests/requirements.txt && ./scripts/build-deps && make:0.273 /bin/sh: 1: source: not found------Dockerfile:18-------------------- 16 | WORKDIR /code/PyAV 17 | CMD ["/bin/bash"] 18 | >>> RUN source scripts/activate.sh && pip install --upgrade -r tests/requirements.txt && ./scripts/build-deps && make 19 | --------------------ERROR: failed to solve: process "/bin/sh -c source scripts/activate.sh && pip install --upgrade -r tests/requirements.txt && ./scripts/build-deps && make" did not complete successfully: exit code: 127问题起因,docker build 默认应用 sh,而不是 bash ...

September 9, 2023 · 2 min · jiezi

关于docker:Dockercompose使用及举例

一、简介Docker-Compose我的项目是Docker官网的开源我的项目,负责实现对Docker容器集群的疾速编排。 Docker-Compose将所治理的容器分为三层,别离是:工程(project),服务(service)以及容器(container)。 Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无非凡指定工程名即为当前目录名。 一个工程当中可蕴含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包含多个容器实例,Docker-Compose并没有解决负载平衡的问题,因而须要借助其它工具实现服务发现及负载平衡,比方 Consul。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 应用一个Dockerfile模板文件,能够让用户很不便的定义一个独自的利用容器。 在工作中,常常会碰到须要多个容器相互配合来实现某项工作的状况。例如要实现一个Web我的项目,除了Web服务容器自身,往往还须要再加上后端的数据库服务容器,甚至还包含负载平衡容器等。 Compose容许用户通过一个独自的docker-compose.yml模板文件(YAML 格局)来定义一组相关联的利用容器为一个我的项目(project)。 Docker-Compose我的项目由Python编写,调用Docker服务提供的API来对容器进行治理。因而,只有所操作的平台反对Docker API, 就能够在其上利用Compose来进行编排治理。 二、装置Compose 反对 Linux、macOS、Windows 10 三大平台。 Compose 能够通过 Python 的包管理工具 pip 进行装置,也能够间接下载编译好的二进制文件应用,甚至可能间接在 Docker 容器中运行。前两种形式是传统形式,适宜本地环境下装置应用;最初一种形式则不毁坏零碎环境,更适宜云计算场景。 Docker for Mac 、Docker for Windows 自带 docker-compose 二进制文件,装置 Docker 之后能够间接应用。运行以下指令查看是否装置胜利: $ docker-compose --versiondocker-compose version 1.29.2, build b02f1306Linux 零碎请应用以下介绍的办法装置。 软件包形式装置以ubuntu为例: $ sudo apt install docker-compose二进制包在 Linux 上的也装置非常简略,从 官网 GitHub Release (opens new window) 处间接下载编译好的二进制文件即可。 例如,在 Linux 64 位零碎上间接下载对应的二进制包, 这里下载的是1.29.2版本。大家依据状况更改这个版本。 $ sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose$ sudo chmod +x /usr/local/bin/docker-composePIP 装置这种形式是将 Compose 当作一个 Python 利用来从 pip 源中装置。 ...

September 7, 2023 · 5 min · jiezi

关于docker:docker安装opengauss数据库

opengauss官网:https://opengauss.org/ opengauss镜像:https://hub.docker.com/r/enmotech/opengauss 一:镜像拉取并运行docker run --name opengauss --privileged=true -d -e GS_USERNAME=gaussdb -e GS_PASSWORD=openGauss@123 -p 5432:5432 enmotech/opengauss:3.0.0二:挂载本地目录docker cp opengauss:/var/lib/opengauss/data C:\opengauss【本地挂载目录】 #将容器指定目录拷贝到本机指定目录docker stop opengauss #进行opengauss运行容器docker rm opengauss #删除opengauss容器docker run --name opengauss --privileged=true -d -e GS_USERNAME=gaussdb -e GS_PASSWORD=openGauss@123 -v C:\opengauss\data:/var/lib/opengauss/data -p 5432:5432 enmotech/opengauss:3.0.0 #运行容器并挂载目录三:设置近程连贯opengauss进入opengauss容器中配置opengauss docker exec -it opengauss bash1:批改pg_hba.conf配置信息vim /var/lib/opengauss/data/pg_hba.conf批改内容如下 host all all 127.0.0.1/32 md5#批改为md5host all all 0.0.0.0/0 md5#新增配置# IPv6 local connections:host all all ::1/128 md5#批改md52:批改postgresql.conf配置信息vim /var/lib/opengauss/data/postgresql.conf批改内容如下 listen_addresses = '*'local_bind_address = '0.0.0.0'password_encryption_type = 03:从新加载配置信息su - omm #切换omm 用户gs_ctl stop -D /var/lib/opengauss/data -Z /var/lib/opengauss/data #进行运行从新加载配置4:重新启动opengaussdocker start opengaussdocker exec -it opengauss bashsu - ommgs_ctl start -D /var/lib/opengauss/data -Z /var/lib/opengauss/data5:navicat连贯胜利 ...

September 4, 2023 · 1 min · jiezi

关于docker:05BT资源搜索之Jackett

05.BT资源搜寻之Jackett上篇文章介绍利用docker搭建了下载服务,然而咱们仍旧须要去其它中央寻找影视资源,除了通过咱们罕用的网站外,有没有更快捷的形式呢? 答案当然是必定的,本文就对上篇文章qBittorrent再次进行性能降级。 其实qBittorrent自身就能够通过装置插件来进行资源检索,除此之外,还有一个很弱小的资源检索服务-Jackett,咱们一步一步扩大。 qBittorrent增加搜寻插件咱们在qBittorrent主界面能够看到搜寻选项。 python3环境qBittorrent的插件是通过python实现,因而须要先装置python3。目前官网不再反对python 2 。咱们上篇文章应用的镜像linuxserver/qbittorrent自身曾经集成了python3,无需咱们再装置,如果本人应用环境没有请自行装置环境。 装置插件 进入qBittorrent主界面->搜寻->搜寻插件->装置新插件 关上qBittorrent 插件官网 ,抉择青睐的磁力搜索引擎,拷贝对应插件前面的 插件下载按钮的链接地址,咱们填入插件链接,点击ok即可增加。 如果咱们因为网络问题,无奈关上网站的话我这边提供了插件包,官方版(10个插件)和非官方版(51个插件),同样填入本地地址即可。当然咱们也能够间接将插件脚本放入qBittorrent的装置目录下的nova3/engines文件夹中,重启qb服务即可。 官方版-10个 非官方版-51个 PS:不须要的插件,双击即可停用 搜寻成果 代理配置 另外因为qBittorrent 很多搜索引擎,基本上都被墙掉了,倡议在qBittorrent中配置代理,或者应用零碎全局代理。 配置办法:菜单->工具->选项->连贯->代理服务 咱们介绍完qb自身的插件零碎,当初才开始正式Jackett的集成,并且如果咱们应用Jackett搜寻,个人感觉上述官网插件其实都能够不装置,而Jackett其实qb默认有装置的。 Jackett一站式资源搜寻目前qBittorrent反对的插件次要为英文资源站,反对中文资源搜寻的资源站较少,那么有没有反对BTDB、BTSOW这些资源站的插件呢? 倒腾过家庭NAS的应该都相熟 Jackett , Sonarr , Radarr 的组合。而qBittorrent缺省启用的插件就是Jackett。 Jackett 就是一个反对BT/磁力资源聚合搜寻的神器,聚合了400多个Public Trackers 、Semi-Private Trackers 、Private Trackers ,能够称得上市面上最为全面的磁力资源聚合器。 而且Jackett自身是跨平台,反对Windows、macOS、Linux,而qBittorrent自身也是跨平台,因而qBittorrent+Jackett的组合也是跨平台的,涵盖了Windows、macOS、Linux几个平台。 咱们仍旧利用docker-compose来搭建。 docker-compose脚本version: "2.1"networks: dllcnx: external: trueservices: jackett: image: lscr.io/linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - AUTO_UPDATE=true #optional volumes: - /docker/jackett/config:/config #配置门路 - /docker/jackett/downloads:/downloads #下载门路 ports: - 9117:9117 restart: unless-stopped启动容器后,拜访ip:9117关上页面 ...

September 2, 2023 · 1 min · jiezi

关于docker:使用docker快速安装使用kibana爽

装置Docker: 如果你尚未装置Docker,请先在零碎上装置Docker。你能够依据本人的零碎从Docker官方网站下载并装置Docker。启动Docker: 装置实现后,启动Docker。拉取Kibana Docker镜像: 关上终端并运行以下命令来拉取Kibana的官网Docker镜像: docker pull docker.elastic.co/kibana/kibana:7.x.x将 "7.x.x" 替换为你想要应用的Kibana版本号。 运行Kibana容器: 应用以下命令来运行Kibana容器: docker run -d --name kibana -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 docker.elastic.co/kibana/kibana:7.x.x-d 示意在后盾运行容器。--name kibana 给容器指定一个名称。-p 5601:5601 将本地端口5601映射到容器外部的5601端口。-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 指定Elasticsearch的地址和端口。确保你曾经在同一Docker网络中运行了Elasticsearch容器,并且容器的名称为 "elasticsearch"。拜访Kibana: 关上Web浏览器并拜访 http://localhost:5601,这将关上Kibana的Web界面。你能够开始应用Kibana来可视化和查问Elasticsearch中的数据。配置Kibana: 依据你的需要,你能够在Kibana中进行配置,包含连贯到Elasticsearch、创立索引模式、可视化和仪表板等。进行和删除Kibana容器: 如果须要进行和删除Kibana容器,能够应用以下命令: docker stop kibanadocker rm kibana这将进行和删除名为 "kibana" 的容器。 当初,你曾经胜利应用Docker部署了Kibana。你能够依据须要自定义Kibana的配置,以满足你的特定用例。请确保你的Elasticsearch服务器也在同一Docker网络中运行,并且与Kibana正确连贯。 tips: 本答案来自chatGPT

September 1, 2023 · 1 min · jiezi

关于docker:云原生之使用Docker部署wordpress网站

@TOC 一、wordpress介绍WordPress是应用PHP语言开发的博客平台,用户能够在反对PHP和MySQL数据库的服务器上架设属于本人的网站。也能够把 WordPress当作一个内容管理系统(CMS)来应用。二、查看本地docker环境1.查看docker状态[root@jeven ~]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-12-13 23:18:38 CST; 21h ago Docs: https://docs.docker.com Main PID: 123665 (dockerd) Tasks: 86 Memory: 97.3M CGroup: /system.slice/docker.service ├─ 2022 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306 -container-ip 192.168.96.2 -container-port... ├─ 2028 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 192.168.96.2 -container-port 3306... ├─ 2383 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8090 -container-ip 192.168.96.3 -container-port... ├─ 2389 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8090 -container-ip 192.168.96.3 -container-port 8090... ├─123665 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ├─124413 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8777 -container-ip 192.168.144.2 -container-por... ├─124432 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8182 -container-ip 172.17.0.2 -container-port 8... ├─124433 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8777 -container-ip 192.168.144.2 -container-port 80 ├─124454 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8182 -container-ip 172.17.0.2 -container-port 8182 ├─125317 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8030 -container-ip 192.168.160.3 -container-por... └─125323 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8030 -container-ip 192.168.160.3 -container-port 800...Dec 13 23:22:22 jeven dockerd[123665]: time="2022-12-13T23:22:22.561976279+08:00" level=info msg="Container failed to exi...f24c217Dec 13 23:22:22 jeven dockerd[123665]: time="2022-12-13T23:22:22.964491205+08:00" level=info msg="ignoring event" contain...Delete"Dec 13 23:29:36 jeven dockerd[123665]: time="2022-12-13T23:29:36.757492011+08:00" level=info msg="Container failed to exi...3c63588Dec 13 23:29:36 jeven dockerd[123665]: time="2022-12-13T23:29:36.813008497+08:00" level=info msg="ignoring event" contain...Delete"Dec 13 23:32:47 jeven dockerd[123665]: time="2022-12-13T23:32:47.610353528+08:00" level=info msg="ignoring event" contain...Delete"Dec 13 23:32:57 jeven dockerd[123665]: time="2022-12-13T23:32:57.766209632+08:00" level=info msg="Container failed to exi...949f428Dec 13 23:32:57 jeven dockerd[123665]: time="2022-12-13T23:32:57.820334359+08:00" level=info msg="ignoring event" contain...Delete"Dec 13 23:35:50 jeven dockerd[123665]: time="2022-12-13T23:35:50.839440867+08:00" level=info msg="Container failed to exi...f988de2Dec 13 23:35:50 jeven dockerd[123665]: time="2022-12-13T23:35:50.891483790+08:00" level=info msg="ignoring event" contain...Delete"Dec 13 23:35:51 jeven dockerd[123665]: time="2022-12-13T23:35:51.480958037+08:00" level=info msg="ignoring event" contain...Delete"Hint: Some lines were ellipsized, use -l to show in full.2.查看docker版本[root@jeven ~]# docker versionClient: Docker Engine - Community Version: 20.10.21 API version: 1.41 Go version: go1.18.7 Git commit: baeda1f Built: Tue Oct 25 18:04:24 2022 OS/Arch: linux/amd64 Context: default Experimental: trueServer: Docker Engine - Community Engine: Version: 20.10.21 API version: 1.41 (minimum version 1.12) Go version: go1.18.7 Git commit: 3056208 Built: Tue Oct 25 18:02:38 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.12 GitCommit: a05d175400b1145e5e6a735a6710579d181e7fb0 runc: Version: 1.1.4 GitCommit: v1.1.4-0-g5fd4c4d docker-init: Version: 0.19.0 GitCommit: de40ad0三、下载wordpress镜像[root@jeven ~]# docker pull wordpress:php7.3php7.3: Pulling from library/wordpressphp7.3: Pulling from library/wordpressae13dd578326: Pull complete f15d475049bf: Pull complete 886e5161983f: Pull complete aa7666573a25: Pull complete 59357a0f9863: Pull complete dc3ffb8c774e: Pull complete 513e9383f6d4: Pull complete 5ebd0737aa08: Pull complete 255df6c25392: Pull complete f2994be86066: Pull complete 746eb0cc36a4: Pull complete e46201569d4f: Pull complete e05ec73939b3: Pull complete a1488be2aff6: Pull complete a8b7dca0523d: Pull complete 479eda4ac467: Pull complete 6c7cbf0d184e: Pull complete c1e6c9fbe5e5: Pull complete 8e788f107d54: Pull complete 4f233ae41a29: Pull complete f5bd50833661: Pull complete 2170705eade6: Pull complete Digest: sha256:5274dd5a23a14931662688685893de3dd6e297bd87f9f39609f9d21b50339d50Status: Downloaded newer image for wordpress:php7.3docker.io/library/wordpress:php7.3四、创立数据库1.创立数据目录mkdir -p /data/wordpress/{db,data}2.创立mysql数据库容器docker run -d --name my_mysql --restart always -e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=db_web -p 3710:3306 mysql:5.7 ...

August 31, 2023 · 3 min · jiezi

关于docker:进入docker容器的两种方法和区别

exec:进入容器后开启一个新的终端,能够在外面操作(罕用) attach进入容器正在执行的终端,不会启动新的过程 这里举例来说明区别: 首先, 咱们执行以下命令来创立和启动一个容器: docker run --name "CustomUbuntu" ubuntu /bin/bash -c "while true; do sleep 1; echo '!!test!!'; done" 这行命令的作用就是创立一个容器,而后始终循环输入 !!MyUbuntu!! ;执行之后再终端上会看到如图所示内容: 而后咱们别离执行,exec 和 attach 进入容器; 首先执行 docker ps, 能够看到以后正在运行中的容器列表: 对 680d 执行 exec ,进入到容器外部,能够输出其余的命令: 对 680d 执行 attach,能够发现进入到创立容器时指定命令所在的窗口中,此时无奈输出其余命令

August 26, 2023 · 1 min · jiezi

关于docker:通过运行中的容器生成-Docker-Compose-配置文件

背景笔者之前有一次不小心删除了原始的 docker-compose.yml 文件,不过正在运行的 Docker 容器还在,找了许久,发现一个办法能够从这些容器中生成一个等效的 Docker Compose 配置文件。本文将介绍应用 autocompose 工具从正在运行的容器中反向生成 docker-compose.yml 文件。 装置所需工具:首先,确保你曾经装置了 docker-autocompose 工具,以及相干的 Python 包。 装置 docker-autocomposedocker pull ghcr.io/red5d/docker-autocompose:latest生成 Docker Compose 文件应用以下命令,将运行中的容器反向生成 Docker Compose 配置文件。替换 <container-name-or-id> 为你要导出的容器的名字或 ID。 bashCopy code docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose <container-name-or-id>手动编辑和调整:生成的 docker-compose.yml 文件可能蕴含了很多所有细节,特地是容器外部的数据卷、环境变量等。你可能须要进一步手动编辑和调整生成的文件,比方进行一些删减。查看容器的端口映射、网络设置、卷挂载等配置。 启动服务:保留并依据生成的 docker-compose.yml 文件从新构建服务。应用以下命令启动服务: docker-compose up -d当初,你曾经胜利地从运行中的容器生成了一个新的 Docker Compose 配置文件,并胜利将服务从新搭建起来。 论断docker-autocompose 工具提供了从运行中的 Docker 容器中反向生成 Docker Compose 配置文件的便捷办法。当失落原始的配置文件时,这个工具可能帮忙咱们疾速复原服务环境,防止反复配置带来的工作量。

August 25, 2023 · 1 min · jiezi

关于docker:docker-调用-nvidia-的-GPU-教程

看 nvidia 官网教程:https://docs.nvidia.com/datacenter/cloud-native/container-too... 一下子就胜利了! ╰─➤ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smiThu Aug 24 15:57:43 2023 +---------------------------------------------------------------------------------------+| NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 ||-----------------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+======================+======================|| 0 Tesla M60 On | 00000000:83:00.0 Off | 1048576 || N/A 27C P8 15W / 150W| 0MiB / 7680MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+| 1 Tesla M60 On | 00000000:84:00.0 Off | 264 || N/A 35C P8 14W / 150W| 0MiB / 7680MiB | 0% Default || | | N/A |+-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=======================================================================================|| No running processes found |+---------------------------------------------------------------------------------------+

August 24, 2023 · 1 min · jiezi

关于docker:使用-docker-打包构建部署-Vue-项目一劳永逸解决nodesass安装问题

文章源于 Jenkins 构建 Vue 我的项目失败,而后就把 node_modules 删了从新构建发现 node-sass 装置不上了,折腾一天终于能够稳固构建了。 犹记得从学 node 的第一天,就被 node-sass 折磨了一整天,前面本地没问题了而后服务器开始折磨了,这次又遇到,尝试了一次又一次,还是用本地包构建最稳,感觉还算有用,故记录一二。构建环境 docker+jenkinsdocker 及 docker-compose 的疾速装置和简略应用应用 docker-compose 疾速装置 Jenkins之前曾经记录过就不在多说了,可参考之前的文章,此为打包构建的流程 本篇文章的目录构造 - Dockerfile 构建node打包镜像- sources.list 阿里云软件源 debian 9- linux-x64-83_binding.node node-sass包 v4.14.1- Dockerfile.dist 构建vue运行的nginx镜像- nginx.conf nginx镜像的配置- src 源码 - dist 由node打包镜像运行的容器生成的构建产物 - package.json npm包配置 - ...为 vue 我的项目制制作 node 打包镜像linxu 下 node 打包遇到解决的问题笔者环境:docker:18.06,node:14.10.1,vue:2.6.11 ,webpack-cli:3.3.12 image-webpack-loader 在 linux 环境须要装置依赖包 apt-get clean && apt-get update && apt-get install -y --no-install-recommends apt-utils autoconf automake file g++ libtool make nasm libpng-devsentry 下载慢能够设置下镜像 ...

August 24, 2023 · 2 min · jiezi

关于docker:各操作系统下安装docker

1. 查看服务器软硬件信息1.1 判断操作系统类型操作系统基于发行版统信UOSDebian河汉麒麟(StartOS)DebianopenEulerCentOS优麒麟(Ubuntu Kylin)Ubuntu中标麒麟(Kylin)DebianEulerOSCentOSDeepinDebian查看Linux操作系统的发行版信息cat /etc/os-releasePRETTY_NAME="Deepin 20.1"NAME="Deepin"VERSION_ID="20.1"VERSION="20.1"ID=DeepinHOME_URL="https://www.deepin.org/"BUG_REPORT_URL="https://bbs.deepin.org/"显示以后零碎的内核版本、主机名、内核编译工夫等详细信息uname -aLinux cloudstrief-PC 5.4.70-amd64-desktop #1 SMP Wed Oct 14 15:24:23 CST 2020 x86_64 GNU/Linux显示以后零碎的发行版信息以及版本号等详细信息lsb_release -aNo LSB modules are available.Distributor ID: DeepinDescription: Deepin 20.1Release: 20.1Codename: n/a显示以后零碎的发行版信息cat /etc/issueDeepin GNU/Linux 20.1 \n \l查看Linux操作系统的内核版本信息cat /proc/version //它会输入一个蕴含操作系统内核版本号、编译工夫等信息的文件,其中包含内核名称、版本号、编译器版本号、架构等信息Linux version 5.4.70-amd64-desktop (deepin@deepin-PC) (gcc version 8.3.0 (Uos 8.3.0.3-3+rebuild)) #1 SMP Wed Oct 14 15:24:23 CST 20201.2 判断CPU架构查看cpu架构信息uname -mx86_64查看cpu架构详细信息lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianAddress sizes: 39 bits physical, 48 bits virtualCPU(s): 4On-line CPU(s) list: 0-3Thread(s) per core: 1Core(s) per socket: 4Socket(s): 1NUMA node(s): 1Vendor ID: GenuineIntelCPU family: 6Model: 60Model name: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHzStepping: 3CPU MHz: 3260.809CPU max MHz: 3600.0000CPU min MHz: 800.0000BogoMIPS: 6392.44Virtualization: VT-xL1d cache: 32KL1i cache: 32KL2 cache: 256KL3 cache: 6144KNUMA node0 CPU(s): 0-3Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d1.3 判断是否反对Docker运行环境依据下面操作系统和cpu架构信息断定以后国产软硬件服务器是否反对Docker运行环境 ...

August 22, 2023 · 3 min · jiezi

关于docker:基于Docker-Jenkins-Pipeline的CICD实践

基于Windows+Docker的单机版测试环境实际。我的项目不大,开发周期不长。后期配置好,后续应用整体比拟丝滑。0. 简介应用SpringBoot3 + JDK17搭建的我的项目,构建工具应用Gradle 8.0。 波及到的知识点 Docker, Dockerfile, Docker-ComposeGitlabJenkinsIDEA (Jenkins Control plugins)1. Docker假如Windows环境,Docker曾经装置结束。默认已装置Docker Compose 1.1 Dockerfile镜像形容文件,比较简单的Java SpringBoot我的项目 FROM openjdk:17-alpineWORKDIR /home/appADD zhgc-web/build/libs/zhgc-web-*.jar web.jarEXPOSE 8080CMD java $JAVA_OPTS -jar "web.jar"1.2 Docker Compose应用Docker Compose的目标,次要是服务编排以及资源限度,比单纯的应用Docker不便一些。 也是比较简单的docker-conpose.yml version: '3'services: zhgc: image: zhgc-web:latest container_name: zhgc-web ports: - '18010:8080' environment: SPRING_PROFILES_ACTIVE: test JAVA_OPTS: '-Xmx2g -Xmx2g' deploy: resources: limits: cpus: '2' memory: 3G restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 120s 2. Jenkins想必能看到这篇文章的,对Jenkins都不会生疏。根本的部署、配置就不再叙述。 假如已搭建好环境。官方网站 https://www.jenkins.io/ 2.1 举荐插件 Blue Ocean界面简洁且直观,特地是配合Pipeline。 ...

August 19, 2023 · 1 min · jiezi

关于docker:使用docker完成mysql主从同步集群搭建

docker形式搭建主服务器配置1.创立并启动mysql主服务器docker run -d -p 3306:3306 -v /home/yuluo/shardingsphere-env/master/conf:/etc/mysql/conf.d -v /home/yuluo/shardingsphere-env/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name yuluo-mysql-master mysql:8.0.29eg:docker run -d -p 3306:3306 -v F:\db\mysql\conf:/etc/mysql/conf.d -v F:\db\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql:8.0.292.创立mysql主服务器配置文件my.cnf [mysqld]# 服务器惟一id,默认值1server-id=1# 设置日志格局,默认值ROWbinlog_format=STATEMENT# 二进制日志名,默认binlog# log-bin=binlog# 设置须要复制的数据库,默认复制全副数据库#binlog-do-db=mytestdb# 设置不须要复制的数据库#binlog-ignore-db=mysql#binlog-ignore-db=infomation_schema3.测试连贯#进入容器:env LANG=C.UTF-8 防止容器中显示中文乱码docker exec -it mysql-master env LANG=C.UTF-8 /bin/bash#进入容器内的mysql命令行mysql -uroot -p123456#批改默认明码校验形式ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';4.主节点创立slave用户create user 'lds_slave'@'%';# 设置明码alter user 'lds_slave'@'%' identified with mysql_native_password by '123456';# 授予复制权限grant replication slave on *.* to 'lds_slave'@'%';# 刷新权限flush privileges;5.在主机中查问master的状态记录File和Position的值 File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000002 | 1345 | | | |+---------------+----------+--------------+------------------+-------------------+从服务器配置1.启动从服务器docker run -d -p 3306:3306 -v /home/yuluo/shardingsphere-env/master/conf:/etc/mysql/conf.d -v /home/yuluo/shardingsphere-env/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name yuluo-mysql-master mysql:8.0.29eg:docker run -d -p 3307:3306 -v F:\db\mysql_slave\conf:/etc/mysql/conf.d -v F:\db\mysql_slave\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave1 mysql:8.0.292.从服务器配置[mysqld]# 服务器惟一id,每台服务器的id必须不同,如果配置其余从机,留神批改idserver-id=2# 中继日志名,默认xxxxxxxxxxxx-relay-bin#relay-log=relay-bin3.测试连贯#进入容器:env LANG=C.UTF-8 防止容器中显示中文乱码docker exec -it mysql-slave1 env LANG=C.UTF-8 /bin/bash#进入容器内的mysql命令行mysql -uroot -p123456#批改默认明码校验形式ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';4.在从机中配置主从关系change master to master_host='192.168.28.23',master_user='lds_slave',master_password='123456',master_port=3306,master_log_file='binlog.000002',master_log_pos=1345;5.启动从机的复制性能start slave# 查看状态(不须要分号)show slave status\Gslave_io_running下边两个都是Yes搭建胜利Slave_IO_Running: YesSlave_SQL_Running: Yes从服务器配置21.创立并启动从服务器2docker run -d -p 3306:3306 -v /home/yuluo/shardingsphere-env/master/conf:/etc/mysql/conf.d -v /home/yuluo/shardingsphere-env/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name yuluo-mysql-master mysql:8.0.29eg:docker run -d -p 3308:3306 -v F:\db\mysql_slave2\conf:/etc/mysql/conf.d -v F:\db\mysql_slave2\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave2 mysql:8.0.292.配置文件[mysqld]# 服务器惟一id,每台服务器的id必须不同,如果配置其余从机,留神批改idserver-id=3# 中继日志名,默认xxxxxxxxxxxx-relay-bin#relay-log=relay-bin3.配置主从关系change master to master_host='192.168.28.23',master_user='lds_slave',master_password='123456',master_port=3306,master_log_file='binlog.000002',master_log_pos=1345;4.启动从机的复制性能start slave# 查看状态(不须要分号)show slave status\Gslave_io_running下边两个都是Yes搭建胜利Slave_IO_Running: YesSlave_SQL_Running: Yes5.同步测试master中CREATE DATABASE db_user;USE db_user;CREATE TABLE t_user ( id BIGINT AUTO_INCREMENT, uname VARCHAR(30), PRIMARY KEY (id));INSERT INTO t_user(uname) VALUES('zhang3');INSERT INTO t_user(uname) VALUES(@@hostname);# 在从机中查看进行和重置-- 在从机上执行。性能阐明:进行I/O 线程和SQL线程的操作。stop slave; -- 在从机上执行。性能阐明:用于删除SLAVE数据库的relaylog日志文件,并从新启用新的relaylog文件。reset slave;-- 在主机上执行。性能阐明:删除所有的binglog日志文件,并将日志索引文件清空,从新开始所有新的日志文件。-- 用于第一次进行搭建主从库时,进行主库binlog初始化工作;reset master;常见问题谬误解决-- 在从机进行slavestop slave; -- 在主机查看mater状态SHOW MASTER STATUS;-- 在主机刷新日志FLUSH LOGS;-- 再次在主机查看mater状态(会发现File和Position产生了变动)SHOW MASTER STATUS;-- 批改从机连贯主机的SQL,并从新连贯即可-- 查看server_id show variables like 'server_id';-- 如果为1 查看配置文件是否映射进去重启容器问题解决启动docker容器后提醒 WARNING: IPv4 forwarding is disabled. Networking will not work.C:\Users\administrator>mysql -h 192.168.100.201 -P 3306 -u root -p#批改配置文件:vim /usr/lib/sysctl.d/00-system.conf#追加net.ipv4.ip_forward=1#接着重启网络systemctl restart network

August 18, 2023 · 2 min · jiezi

关于docker:Docker容器清理记录

查看磁盘空间df -h/目录占用达到100%, 剖析可能是docker容器数据占用了空间 去container目录查看占用状况cd /var/lib/docker/containersdu -sh {目录}查看哪个目录有占用空间异样, 删除对应文件即可如我这里是Gitlab日志文件占用了27G: # 删除Gitlab日志文件并重启Gitlab容器即可"LogPath": "/var/lib/docker/containers/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3-json.log" Tips: 查看容器详细信息命令docker container inspect {容器名}示例 docker container inspect gitlab "ResolvConfPath": "/var/lib/docker/containers/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3/resolv.conf", "HostnamePath": "/var/lib/docker/containers/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3/hostname", "HostsPath": "/var/lib/docker/containers/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3/hosts", "LogPath": "/var/lib/docker/containers/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3/f16aa2f0c73a6093b482fc3694119a1b753773fde92f797e8b79e86326515ca3-json.log","Binds": [ "/disk2/data/gitlab/etc:/etc/gitlab", "/disk2/data/gitlab/log:/var/log/gitlab", "/disk2/data/gitlab/data:/var/opt/gitlab", "/etc/localtime:/etc/localtime:ro" ],

July 12, 2023 · 1 min · jiezi

关于docker:如何查看-minio-的版本

我没有在浏览器界面上能够查看 minio 版本的中央 所以间接在跑 minio 的机器上,应用 minio --version 查看了 因为我是用 docker 跑的 version: "3"services: public_minio: container_name: public_minio restart: always image: minio/minio:RELEASE.2023-07-11T21-29-34Z ports: - "9000:9000" # client port - "9002:9002" # console port command: server /data --console-address ":9002" #指定容器中的目录 /data volumes: - ./volumes/:/data environment: MINIO_ACCESS_KEY: ponponon #治理后盾用户名 MINIO_SECRET_KEY: ponponon #治理后盾明码,最小8个字符所以能够一键 docker exec -it public_minio minio --version

July 12, 2023 · 1 min · jiezi

关于docker:没想到吧容器安全竟然可以如此简单-VeinmindTools-上新新插件啦

一、前言炎炎夏日,有你真甜(平安)! 随着寒假的到来,咱们问脉团队也激情不减。这不,这次咱们问脉团队上新了 Veinmind-Tools 插件 —— veinmind-privilege-escalation 二、介绍veinmind-tools 是由长亭科技自研牧云团队孵化,基于 veinmind-sdk 打造的容器平安工具集,这次上新的插件 veinmind-privilege-escalation 是一款提权危险扫描的插件。其性能个性如下: 能疾速扫描容器/镜像中的 suid、limited-suid、sudo提权危险反对 docker/containerd 容器运行时反对 json/cli/html 等多种报告格局输入想晓得具体应用姿态吗?请随我娓娓道来~ 三、应用办法1、基于可执行文件请先装置 libveinmind,装置办法能够参考 https://github.com/chaitin/libveinmind Makefile 一键命令make run ARG="scan xxx" 自行编译可执行文件进行扫描编译可执行文件make build 运行可执行文件进行扫描 chmod +x veinmind-privilege-escalation && ./veinmind-privilege-escalation scan xxx 2、基于平行容器模式确保机器上装置了 docker 以及 docker-compose Makefile 一键命令make run.docker ARG="scan xxxx" 自行构建镜像进行扫描构建 veinmind-privilege-escalation 镜像make build.docker 运行容器进行扫描 docker run --rm -it --mount 'type=bind,source=/,target=/host,readonly,bind-propagation=rslave' veinmind-privilege-escalation scan xxx四、应用参数1.指定镜像名称或镜像ID并扫描 (须要本地存在对应的镜像)./veinmind-privilege-escalation scan image [imageID/imageName] 2.扫描所有本地镜像./veinmind-privilege-escalation scan image 3.指定容器名称或容器ID并扫描./veinmind-privilege-escalation scan container [containerID/containerName] 4.扫描所有本地容器./veinmind-privilege-escalation scan container ...

July 6, 2023 · 1 min · jiezi

关于docker:Docker进阶

1、镜像治理命令1、查看以后的镜像[root@node1 wordpress]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx v1 a80567189207 6 days ago 141MBbjbfd/nginx latest 605c77e624dd 17 months ago 141MBbjbfd/nginx v1 605c77e624dd 17 months ago 141MBnginx latest 605c77e624dd 17 months ago 141MBwordpress latest c3c92cc3dcb1 17 months ago 616MBmariadb 10.6.4-focal 12e05d5da3c5 19 months ago 409MBbjbfd/stress latest 89e5b79daa74 7 years ago 215MB2、查看image命令[root@node1 wordpress]# docker image --helpUsage: docker image COMMANDManage imagesCommands: build Build an image from a Dockerfile history Show the history of an image import Import the contents from a tarball to create a filesystem image inspect Display detailed information on one or more images load Load an image from a tar archive or STDIN ls List images prune Remove unused images pull Download an image from a registry push Upload an image to a registry rm Remove one or more images save Save one or more images to a tar archive (streamed to STDOUT by default) tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGERun 'docker image COMMAND --help' for more information on a command.3、下载镜像(新增)[root@node1 wordpress]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxDigest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest阐明 : nginx : 镜像名 latest : 镜像版本4、查看镜像列表(列表查问)docker images等同docker image ls[root@node1 wordpress]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZEbjbfd/nginx latest 605c77e624dd 17 months ago 141MBbjbfd/nginx v1 605c77e624dd 17 months ago 141MBnginx latest 605c77e624dd 17 months ago 141MBwordpress latest c3c92cc3dcb1 17 months ago 616MBmariadb 10.6.4-focal 12e05d5da3c5 19 months ago 409MBbjbfd/stress latest 89e5b79daa74 7 years ago 215MB阐明 :REPOSITORY : 示意镜像的仓库源TAG : 镜像的标签IMAGE ID : IDCREATED : 镜像创立事件SIZE : 镜像大小5、查看镜像列表(列表查问)删除所有正在运行的容器docker rm -f $(docker ps -a -q) ...

June 2, 2023 · 2 min · jiezi

关于docker:mac使用podman替代docker

序本文次要记录一下应用podman代替docker的过程 装置podmanbrew install podman或者去https://github.com/containers/podman/releases下载对应的pkg podman composebrew install podman-compose或者 pip3 install podman-compose应用machinepodman machine init -v=/opt/workspace:/opt/workspacepodman machine startpodman machine sshinit增加-v来挂载宿主机的文件夹到machinecomposepodman-compose -f docker-compose.yml uppodman-compose -f docker-compose.yml down小结应用podman、podman machine、podman-compose根本能够无缝代替docker、docker-machine、docker-compose docWhat is Podman?

June 1, 2023 · 1 min · jiezi

关于docker:docker

1、云原生1.1、什么是云原生云原生(CloudNative)指的是基于在云中构建、运行应用程序的理念,而打造的一套技术体系。不同于传统数据中心的软件开发、构建模式,云原生蕴含有“原生为云而设计”的含意,可能无效晋升云上资源利用率、缩短开发周期 1.2、云原生架构从技术的角度登程,云原生架构是基于云原生技术的一组架构准则和设计模式的汇合,旨在帮忙企业和开发人员充分利用云平台所提供的平台化能力和弹性资源能力

May 29, 2023 · 1 min · jiezi

关于docker:关于-VMwareDockerK8s-的一些简单理解

VM(VMware)是很古早的一种操作系统虚构技术:会在宿主机器操作系统的根底上创立虚构层、虚拟化的操作系统、虚拟化的仓库,而后再装置利用;也就是,麻雀虽小五脏俱全,搞了个全套拷贝,比方能够再Mac电脑上装置一个Windows的虚构操作系统;但毕竟还是比真正的操作系统轻便简略一些,如果主机配置毕竟高,多搞几个VM也未尝不可; 大白话:克隆,或者叫 深拷贝Docker是Container,一种容器技术:会在宿主机器操作系统上创立Docker引擎,在引擎的根底上再装置利用:当然了,没有操作系统,怎么运行程序呢?所以须要再在Docker中创立一个操作系统的镜像文件,比方ubuntu,这样就能将ubuntu系统集成到Docker中,运行的利用就都是ubuntu的利用了。 也因而,Docker运行时,会间接调用宿主的硬件资源,而不必虚拟化操作系统和硬件资源,所以操作速度快,占用内存也更小;虚拟机开机个别按分钟起步,而Docker只须要几秒钟; 另外,因为 Docker 属于 写时复制 (copy-on-write) 模型,使得批改应用程序也十分迅速;综上所述,使得 Docker 容器领有很高的性能,使用户更充沛的利用宿主机器的系统资源; 大白话:跑得快,占用少,创立一个VM的资源能用来创立N个DockerDocker 的三个基本概念:镜像(Image)容器(Container)仓库(Repository)镜像(Image):操作系统分为 内核 和 用户空间; 例如 Linux,内核启动后,会挂载 root 文件系统为其提供用户空间反对;而 Docker 镜像(Image),就相当于一个 root 文件系统,为了节俭资源,可抉择镜像官网推出的最小零碎的 root 文件系统; 大白话:iPhone xx mini-mini-mini容器(Container):如果将 镜像(Image)比作面向对象程序设计中的 类(Class) ,容器(Container)就是 将类实例化(new Class());镜像是动态的定义,容器是镜像运行时的实体, 能够被创立、启动、进行、删除、暂停等; 仓库(Repository):通过下面的容器这一步折腾后,一个合乎咱们要求的Container就诞生了;如果须要在其它机器应用这个镜像呢,总不能再折腾一遍吧?所以,须要把这这套环境保留下来,也就是搞个仓库,以备不时之需。这也就衍生出一个需要,一个能够集中存储、散发镜像的服务,也就是 Docker Registry。 大白话:虚构U盘 (80后小伙伴是不是据说过诸如,番茄花园、雨林木风、深度,以及 一键GHOST?)k8sk8s,是 kubernetes 的简称形式,相似 i18n 的叫法;它用来治理 Docker 的,是一个开源的容器集群管理系统,能够实现容器集群的自动化部署、主动扩缩容、保护等性能;所以,它不是只用来反对Docker,也能够反对其余容器技术。说白了,大家不想手动的一个个去创立、保护 Docker,所以就用了 k8s。

May 25, 2023 · 1 min · jiezi

关于docker:DockerCompose-入门到实战详尽笔记

本文首发自「慕课网」,想理解更多IT干货内容,程序员圈内热闻,欢送关注"慕课网"或慕课网公众号! 作者:暮闲 | 慕课网讲师 应用过Docker 的小伙伴们都晓得,启动 Docker 时个别会附带很多的启动参数,如 -v 指定挂载目录,-p指定端口等等。除此之外,很多时候咱们的业务零碎中个别都会有几个 Docker 组合运行,容器间网络通信,容器的启动程序等有明确的要求。基于这些问题,Docker-Compose 技术诞生。 本文将从根底到实战举例,共计7个大节,后面5大节解说根底,前面2个大节则时以实战为主,具体解说 Docker-Compose 的应用。次要解说如下内容: Docker-Compose 和 Docker 的分割装置 Docker-ComposeYAML 语法概述Docker-Compose 语法总结Docker-Compose 常用命令实战演练一:Docker-Compose 部署伪分布式的 Elasticsearch实战演练二:Docker-Compose 部署 Kafka(Zookeeper)如果根底好一点的同学,能够间接跳到第6章开始学习实战环节,有问题再倒回来查看根底。浏览并实际本篇文章内容,大抵须要30分钟左右。 Docker-Compose 和 Docker 的分割 置信你们在应用 Docker 时都遇到过以下两个场景: Docker 启动要指定参数,例如 -p 指定端口,-v 挂载目录等,当下次启动时,因为参数太多,遗记启动参数。多个 Docker 容器启动时有依赖关系,不确定启动的先后顺序。而 Docker-Compose 的呈现就是为了解决上述两个问题,通过编写 yaml 文件定义 Docker 启动参数和编排容器。 装置 Docker-ComposeDocker-Compose 反对目前支流平台的装置,如图: 参考连贯:https://docs.docker.com/compose/install/小伙伴们依据本人的状况装置对应的版本即可,我这里以 Ubuntu 16.04 环境作为演示,也能够依照官网所述的装置步骤,也能够间接一句命令即可(当然前提时曾经装置 Docker ):apt install docker-compose 装置结束后 docker-compose --version 查看版本 每次输出 docker-compose 这个命令的确比拟长,我这里教搭建一个给 docker-compose 取别名的形式,操作如下: ...

May 22, 2023 · 5 min · jiezi

关于docker:使用Docker部署一个简洁易用的ShowDoc文档系统

ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过ShowDoc,你能够不便地应用Markdown语法来书写出好看的API文档、数据字典文档、技术文档、在线Excel文档等等。 ShowDoc提供了在线版本,您能够间接注册并应用:https://www.showdoc.com.cn/。如果您的团队须要应用,也能够抉择公有部署。本文将分享如何应用Docker来部署ShowDoc。 Docker部署ShowDocDocker部署ShowDoc非常简单,只须要上面一行命令即可: docker run -d --name showdoc --user=root --privileged=true -p 4999:80 \-v /showdoc_data/html:/var/www/html/ star7th/showdoc4999:拜访端口,可自行批改/showdoc_data/html:数据寄存目录,可自行批改部署胜利后通过http://IP:4999进行拜访,初始账户明码是showdoc/123456 另外管理员账户名showdoc如同不反对批改,xiaoz未找到批改的中央,如果你发现了,欢送留言通知我。 Docker Compose部署如果抉择Docker Compose部署,须要先创立一个docker-compose.yaml文件,内容为: version: '3.3'services: showdoc: container_name: showdoc privileged: true ports: - '4999:80' volumes: - './data:/var/www/html/' image: star7th/showdoc输出命令启动:docker-compose up -d,部署胜利后通过http://IP:4999进行拜访,初始账户明码是showdoc/123456 通过绑定域名拜访Docker部署后默认应用http://IP:4999进行拜访,如果须要应用域名拜访,可通过Nginx反向代理来实现。下方是一个nginx反向代理的配置实例: server { listen 80; server_name test.showdoc.com.cn; client_max_body_size 1000m; location ^~ / { proxy_pass http://127.0.0.1:4999/; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header http_user_agent $http_user_agent; }}局部截图ShowDoc界面十分的简洁,上几张截图。 ...

May 16, 2023 · 1 min · jiezi

关于docker:如何在Docker-Compose中限制容器的CPU和内存使用

最近我在应用开源统计Umami过程中,发现CPU和内存常常占满,导致其它服务都不能失常应用。Umami我应用的docker-compose进行部署,于是打算应用docker-compose限度下容器的CPU和内存应用来解决这个问题。 吐槽于是我就去搜寻相干文档寻找限度容器资源使用率的办法,给我的感觉是Docker官网在设计docker-compose的时候有点凌乱。 首先是docker-compose的版本分1.x和2.x不同版本个性不一样docker-compose.yaml外面的version又分多个版本(1.x-3.x),不同的版本个性不一样官网仿佛没有明确的文档指名各版本的区别,而且降级版本的速度还贼快docker-compose限度CPU和内存我间接贴出Umami的残缺docker-compose.yaml内容: ---version: '3'services: umami: image: docker.umami.dev/umami-software/umami:mysql-latest deploy: resources: limits: cpus: '0.50' memory: 500M reservations: cpus: '0.25' memory: 200M ports: - "3000:3000" environment: DATABASE_URL: mysql://umami:xxx@127.0.0.1:3306/umami DATABASE_TYPE: mysql HASH_SALT: replace-me-with-a-random-string restart: always network_mode: "host"限度指令为deploy.resources.limits这部分,留神节点地位,下面这部分限度的含意是: Umami服务的CPU应用被限度在最多50%的CPU能力,内存应用被限度在最多500MB。同时,这个服务至多须要25%的CPU和200MB的内存。咱们启动的时候命令须要产生一些变动,否则不会失效: #本来的启动命令为docker-compse up -d# 须要增加一个参数--compatibility示意以兼容模式来运行docker-compose --compatibility up -d这里的关键在于增加--compatibility参数以兼容模式来运行,否则限度不会失效。 验证通过上述办法限度容器CPU和内存后,再持续应用命令:docker stats查看容器资源应用状况: 能够看到umami这个容器被胜利限度为500MB内存。 总结docker-compose的版本设计十分凌乱,且没找到明确的官网个性比照阐明docker-compose.yaml限度内存须要增加deploy.resources.limits节点docker-compose命令启动的时候须要增加--compatibility参数以兼容模式来运行,否则限度不会失效此文章首发于我的独立博客:https://blog.xiaoz.org/archives/18729

May 15, 2023 · 1 min · jiezi

关于docker:windows安装linux环境亲测

背景想要学习linux又苦于没有服务器的小伙伴,有三种办法: 用vmware等虚拟机,装置一个linxu零碎,这个办法挺好,就是须要电脑的配置较高,不然动不动就卡死。用windows的WLS子系统(不过看很多论坛贴吧反馈,偶然有些命令性能有异样)。用docker装置linux容器。计划2就算了,折腾一翻,命令性能还有些异样,对老手不敌对。计划1和计划3,体验的都是原汁原味的linux零碎,电脑配置高的,能够尝试vmware,个别三五千的电脑就举荐docker了。 装置docker先去官网下载安装包:https://docs.docker.com/desktop/install/windows-install/ 下载下来之后,就无脑下一步(当然作为IT的你,最好还是先一个非C盘的门路)。 换源国内还是换一下源比拟好,不然下载镜像太慢了。在配置中加上以下配置: "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ], 拉取镜像win+r 关上 cmd 而后拉取ubuntu镜像 docker pull ubuntu:20.04 # 拉取20.04版本的ubuntudocker images # 查看本地镜像 装置容器docker run -itd --name ubuntu-test ubuntu:20.04 # 创立一个名为“utuntu-test"的容器docker ps # 查看是否创立胜利 启动容器docker start ubuntu-test进入容器docker exec -it ubuntu-test bash有root的结尾,代表你曾经进入到linux容器里了,在这时就能够轻易折腾,如果搞坏了,大不了重新安装一个容器。 退出容器要退出容器,间接exec即可 其余平时了整顿了很多文章和材料,能够关注同名公众号获取。

May 8, 2023 · 1 min · jiezi

关于docker:在线爱奇艺优酷土豆等会员资源解析

网站:https://xiaoxuan6.github.io/free-vip-video 源码地址:https://github.com/xiaoxuan6/free-vip-video 反对本地、docker 搭建。我的项目概述这是基于无名小站接口写的一个会员视频解析站点,基于LayUI布局。 我的项目运行a、克隆本我的项目克隆本我的项目并执行 docker 而后拜访 ip, 须要域名自行解析 docker-compose up -db、应用镜像docker pull ghcr.io/xiaoxuan6/free-vip-video/free_vip:latestdocker run --name free -p 80:80 -d ghcr.io/xiaoxuan6/free-vip-video/free_vip:latest版权申明本站所提供仅仅是秉承交流学习的思维,没有任何盈利的行为,用户在应用过程中造成的版权问题由使用者自行承当,与本站维护者无关,请知悉!

April 28, 2023 · 1 min · jiezi

关于docker:谨慎在dockercomposeyml中使用PWD变量

最近在应用Docker Compose部署服务时,我在docker-compose.yml文件中应用了$PWD变量来指定HOST门路。然而,我发现指定的门路并没有达到预期成果。 问题复现先来看一段docker-compose.yml的配置文件: version: "3.9"services: xui: image: enwaiax/x-ui container_name: xui volumes: - $PWD/db/:/etc/x-ui/ - $PWD/cert/:/root/cert/ restart: unless-stopped network_mode: host我将docker-compose.yml放到了/data/apps/x-ui目录下,下面的配置文件看起来并没有任何问题,应用了$PWD变量来示意当前目录,那么依照预期的话,HOST相对挂载门路为: /data/apps/x-ui/db//data/apps/x-ui/cert/当我执行sudo docker-compose up -d运行容器的时候,并没有报错,然而HOST挂载门路并未依照预期的工作,理论的HOST相对挂载门路确变成了: /db//cert/看起来仿佛$PWD变量丢了或者没有失效? 问题剖析与解决于是我把这个问题抛给了ChatGPT征询了下,给我的答案是: 看起来你的问题的确是 $PWD 变量没有失效。这可能是因为你在应用 sudo 时,环境变量未能传递给 docker-compose 命令。 要解决这个问题,你能够尝试以下办法: 将 $PWD 替换为绝对路径。例如,将 /data/apps/x-ui 作为挂载门路的前缀:version: "3.9"services: xui: image: enwaiax/x-ui container_name: xui volumes: - /data/apps/x-ui/db/:/etc/x-ui/ - /data/apps/x-ui/cert/:/root/cert/ restart: unless-stopped network_mode: host应用 sudo -E 选项来保留环境变量:sudo -E docker-compose up -d这将确保 $PWD 变量在执行 docker-compose 命令时放弃失效。不过须要留神的是,应用 -E 选项可能存在肯定的平安危险,因为它会将以后用户的所有环境变量传递给 sudo 命令。请确保你理解可能的危险,并确保以后环境中没有蕴含敏感信息的变量。 ...

April 28, 2023 · 1 min · jiezi

关于docker:玩转服务器之Docker篇10分钟学会搭建-Docker-环境

导读数字化转型浪潮下,云原生技术畛域的建设投入、集群规模继续走高,云原生技术已是大势所趋。在用户生产环境中,容器技术的驳回率已靠近70%,docker 使利用部署更加轻量,可移植,可扩大,更好的环境隔离也更大程度地防止了生产环境与测试环境不统一的微小难堪,本文为大家具体解说如何手动搭建 Docker 环境。 一、Docker介绍Docker 是一个开源的利用容器引擎,基于 Go 语言并听从 Apache2.0 协定开源。Docker能够将应用程序和所有依赖项打包到一个独立的容器中,以便在任何Linux或Windows零碎的机器上运行和部署。 Docker的搭建非常简单,上面咱们以轻量云主机(CenTOS 7.6零碎)为例,介绍如何疾速搭建一个Docker 容器,并且在Docker中运行Nginx服务。 二、前置筹备正式开始部署前,您需实现如下的筹备工作: 开明京东云账户,若您还未注册京东云账号,可在京东云官网进行注册;账户开明后,须要进行实名认证;购买一台或多台云主机或者轻量云主机产品;登录轻量云主机,复制上面步骤中的命令进行执行操作;上面操作步骤需主机凋谢8080端口,请在防火墙中配置端口凋谢策略。三、设置Docker装置仓库装置yum-utils,以及应用yum-config-manager设置Docker仓库。 sudo yum install -y yum-utilssudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 四、装置并运行Docker装置docker-ce及其依赖,装置过程中须要输出y确认并持续装置。 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin直到输入Complete!装置实现。 启动Docker服务 sudo systemctl start docker运行一个hello-world镜像,以确认Docker失常运行。 sudo docker run hello-world看到输入Hello from Docker!Docker在失常运行。 五、运行一个Nginx镜像执行Pull nginx镜像,运行nginx镜像并代理到宿主机8080端口。 如果8080端口未凋谢,您需先在防火墙凋谢8080端口。 sudo docker pull nginxsudo docker run --name docker-nginx-demo -d -p 8080:80 nginx 通过宿主机IP+8080端口拜访: 看到Welcome to nginx,即应用Docker运行Nginx胜利。

April 20, 2023 · 1 min · jiezi

关于docker:开发者每日精选内容

1. Docker的容器治理2. 前端工程化中重要概念之组件化开发框架3. 了解JS中的原型(Prototypes)4. 学习HTML DOM笔记5. Java异样Exception详解6. 举荐零碎:基于内容的过滤7. Nginx负载平衡算法8. JAVASE练习——扑克牌9. 转换符阐明应用办法(在printf函数中)10. 【每日一题】左孩子右兄弟——21年省赛(JAVA解法)11. 非递归算法——疾速排序、归并排序12. Stereo-Detection:适宜老手的双目测距开源我的项目13. 【C++11】右值援用和挪动语义14. Python高阶教程——MySQL根底15. web前端-JavaScript中的this指向16. 前端工程化中重要概念之测试框架17. Python高阶教程—BeautifulSoup详讲18. 前端工程化中重要概念之CSS预处理工具19. 【C++11】对于C++11新个性简介20. JS继承

April 20, 2023 · 1 min · jiezi

关于docker:Docker容器应用场景分析

Docker容器是一个开源的利用容器引擎,它可能主动执行重复性工作,例如搭建和配置开发环境,用户能够不便地创立和应用容器,还能够进行版本治理、复制、分享、批改。有很多初学云计算的同学不分明Docker容器的应用办法以及利用场景,接下来就给大家简略分享一下云计算学习路线图素材课件:Docker容器利用场景剖析。Docker是一个应用 Go 语言开发的,并且开源的利用容器引擎,基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的性能,比方镜像、Dockerfile等;Docker理念是将利用及依赖包打包到一个可移植的容器中,可公布到任意Linux发行版的Docker引擎上,应用沙箱机制运行程序,程序之间互相隔离;Docker采纳C/S架构,Dcoker daemon作为服务端承受来自客户端申请,并解决这些申请,比方创立、运行容器等;客户端为用户提供一系列指令与Docker Daemon交互;Docker应用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup、namespace以及AUFS类的UnionFS等技术,对过程进行封装隔离,属于操作系统层面的虚拟化技术。目前Docker容器的利用场景包含以下几种:Docker部署Mongodb环境1、近程获取Mongodb镜像docker pull mongo2、创立一个docker容器docker run -p 27017:27017 -v /data/db --name docker_mongodb -d mongo在下面的命令中,几个命令参数的具体解释如下:-p 指定容器的端口映射(非凡阐明:后面的是本机端口,前面的是容器的端口,增加-p参数被动将容器外部端口给暴漏出来,将服务器的27017端口映射到容器的27017端口,这样在外网就可通过 服务器的27017端口拜访到咱们的服务,Mongodb默认端口为27017。-v 为设置容器的挂载目录,这里是将即本机中的目录挂载到容器中的/data/db中,作为Mongodb的存储目录--name 为设置该容器的名称-d 设置容器以守护过程形式运行3、测试连贯容器中的MongodbDocker部署Node我的项目残缺流程(DockerFile实际)1、应用Koa2初始化一个Node我的项目,通过Mongose中间件连贯Mogodb数据库,实现一个根底接口Mogodb插入数据。2、在我的项目根目录下创立.dockerignore文件,把不须要打包进Docker Image里的文件进行过滤:/usr/src/nodejs/dockerstudy/.dockerignore.gitnode_modules3、在我的项目的根目录中创立Dockerfile文件,部署Node我的项目的时候,会有一个Dockerfile 文件配置。/usr/src/nodejs/hello-docker/DockerfileFROM node:10.0在容器中创立一个目录RUN mkdir -p /usr/src/nodejs/定位到容器的工作目录WORKDIR /usr/src/nodejs/RUN/COPY 是分层的,package.json 提前,只有没批改,就不会从新安装包COPY package.json /usr/src/app/package.jsonRUN cd /usr/src/app/RUN npm i把当前目录下的所有文件拷贝到 Image 的 /usr/src/nodejs/ 目录下COPY . /usr/src/nodejs/EXPOSE 3000CMD npm start4、代码环节暂且告一段落,将带有Dockerfile提交到github或gitlab等。5、首先检出代码,把我的项目克隆到指定目录。6、进入目录构建。7、通过镜像dockerstudy创立一个容器并运行。8、进入容器。9、日志查看查看运行日志。优雅部署形式 DockerComposeCompose是Docker官网开源的一个我的项目,能够治理多个Docker容器组成一个利用,例如Web服务,除了服务自身还有数据库、Redis、Nginx等一系列相关联服务须要装置。有个Compose的反对,咱们只须要定义一个YAML格局的配置文件(docker-compose.yml),来编写一个我的项目所须要的多个容器配置及调用关系,通过简略的命令即可同时开始或者敞开这些容器。Compose定位是定义和运行多个Docker容器的利用。

April 17, 2023 · 1 min · jiezi

关于docker:使用docker部署halo开源博客建站工具

官网教程: docker run \ -it -d \ --name halo \ -p 8090:8090 \ -v ~/.halo2:/root/.halo2 \ halohub/halo:2.4 \ --halo.external-url=http://localhost:8090/ \ --halo.security.initializer.superadminusername=admin \ --halo.security.initializer.superadminpassword=P@88w0rd 而后我将这段代码在git bash中运行,失去以下报错:翻译以下报错:来自守护过程的谬误响应:用户回绝目录共享于是乎咱们将这个目录增加到docker的共享目录中:咱们能够选报错目录的父级目录,更加的省事(如果前期有bug和问题就再说)而后再次在git中运行代码, 创立容器:此时关上docker的客户端,察看发现,曾经创立了新的容器,并且开始运行关上网页测试:客户端胜利, 而后查看服务端:发现居然登录失败...to be continued...

April 16, 2023 · 1 min · jiezi

关于docker:docker-desktop-enable-virtualization-on-your-computer

启动docker即报错:Docker for Windows error: "Hardware assisted virtualization and data execution protection must be enabled in the BIOS" 然而我又确定我的电脑肯定开启了hyper-v虚拟化服务(不然我的安卓模拟器无奈运行)解决办法来自stackflow:解决办法如果启用了所形容的性能,则问题出在禁用的 Hyper-V 或未运行的 Hypervisor 代理上。 解决方案 A(如果 Hyper-V 齐全禁用或未装置) 以管理员身份关上 PowerShell 并 启用 Hyper-V dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All解决方案 B(如果 Hyper-V 性能已启用但不起作用) 启用管理程序 bcdedit /set hypervisorlaunchtype auto当初重新启动零碎并重试。 我先进行了计划A,又进行了计划B, 而后重启零碎, 最终胜利

April 16, 2023 · 1 min · jiezi

关于docker:从零开始Docker-Desktop听说你小子要玩我

前言原因捡起忘记的Docker常识因为本狗近期我的项目紧工作重,高强度的搬砖导致摸鱼工夫降落。在上线我的项目时,看到运维大神一系列骚操作,docker+k8s的常识如过眼云烟,忘得洁净的很。所以想从新恶补一下docker常识,但又碍于服务器资源无限,只能从本狗win10电脑进行装置Docker Desktop,开始明日复明日的学习。 次要指标实现3大重点win10零碎装置Docker Desktop在Docker Desktop中实操Redis相熟回顾Docker次要语法命令猜你喜爱文章举荐【事变】记一次意外把公司我的项目放到GitHub并被fork,如何应用DMCA下架政策保障隐衷【我的项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序【ChatGPT】手摸手,带你玩转ChatGPT【ChatGPT】SpringBoot+uniapp+uview2对接OpenAI,带你开发玩转ChatGPT【模块分层】还不会SpringBoot我的项目模块分层?来这手把手教你! 注释前置问题1. 是什么Docker在Windows10和macOS操作系统上的官网装置形式 2. 无能啥Docker Desktop是能够部署在windows运行docker的应用服务,其基于windos的Hyper-V服务和WSL2内核在windos上创立一个子系统(linux),从而实现在windows上运行docker。 3. 怎么下docker-desktop官网https://www.docker.com/products/docker-desktop/ 开始1.下载拜访官网https://www.docker.com/products/docker-desktop/,点击下载 2.装置双击安装包后,呈现配置抉择,勾选两项并点击【Ok】,静等装置,大概须要3~5分钟 3.操作双击桌面图标,关上后抉择【Accept】,有些询问间接跳过点击【Skip】 4.批改镜像源点击【Extensions】右侧三个点,点击【Settings】,点击【Docker Engine】,切换镜像源163镜像源 { "registry-mirrors": [ "http://hub-mirror.c.163.com", ], "insecure-registries": [], "debug": true, "experimental": false}阿里云镜像源 登录阿里云,进入控制台,搜寻“容器镜像服务”,找到减速地址https://cr.console.aliyun.com/cn-qingdao/instances/mirrors 自己抉择阿里云和163镜像源替换原始配置,并点击【Apply & restart】利用并重启 5.拉取镜像以Redis为例,拉取镜像并启动 在上方搜寻框中输出redis,找官网镜像源,点击【pull】拉取实现后,能够在Images中看到拉取后的redis镜像6.启动容器点击咱们方才redis镜像中的【启动】按钮欠缺启动配置,填写【容器名】、【端口映射】,如有其余配置自行填写,而后点击【Run】启动实现后,查看启动的redis-01容器,及对应日志 体验redis-cli,测试redis是否启动胜利 总结本文通过Docker Desktop从零开始,介绍了如何下载安装Docker Desktop,并切换镜像源。以理论redis镜像为例,实操拉取镜像,启动容器,手把手一步一步展现操作流程,心愿能对大家有所帮忙。 JavaDog狗屋地址集体博客https://blog.javadog.net公众号https://mp.weixin.qq.com/s/_vgnXoQ8FSobD3OfRAf5gwCSDNhttps://blog.csdn.net/baidu_25986059掘金https://juejin.cn/user/2172290706716775知乎https://www.zhihu.com/people/JavaDog简书https://www.jianshu.com/u/1ff9c6bdb916giteehttps://gitee.com/javadog-netGitHubhttps://github.com/javadog-net

April 14, 2023 · 1 min · jiezi

关于docker:Dockercompose负载均衡

一、什么是负载平衡负载平衡(Load Balance),意思是将负载(工作工作,拜访申请)进行均衡、摊派到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(程度伸缩)的终极解决方案不应用负载平衡应用负载平衡二、负载平衡作用解决并发压力,进步利用解决性能(减少吞吐量,增强网络解决能力)提供故障转移,实现高可用通过增加或缩小服务器数量,提供网站伸缩性平安防护;(负载平衡设施上做一些过滤,黑白名单等解决)三、罕用负载平衡软件LVSNgnixHAProxy 除了软件能够实现负载平衡外,也能够应用硬件的形式实现负载平衡,个别是独自的负载平衡服务器,价格昂贵,个别土豪级公司能够思考,业界当先的有两款,F5和A10。四、Ngnix4.1、什么是NginxNginx是一款轻量级的Web 服务器、反向代理服务器、电子邮件(IMAP/POP3)代理服务器。4.2、 Nginx的特点高并发连贯:官网测试Nginx可能撑持5万并发连贯,理论测试可达到3万左右,每天能够解决亿次访问量内存耗费小Nginx反对负载平衡Nginx反对反向代理老本低廉4.3、正向代理/反向代理正向代理代理的是客户端;反向代理代理的是服务器正向代理反向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器获得内容,客户端向代理发送一个申请并指定指标(原始服务器),而后代理向原始服务器转交申请并将取得的内容返回给客户端。客户端必须要进行一些特地的设置能力应用正向代理。客户端发送申请给反向代理服务器,然而代理服务器上没有客户端须要的资源,代理服务器会判断转发到原始服务器取得资源,并把资源返回给客户端;在整个过程,客户端不晓得本人拜访的是一个代理服务器,而是一个原始服务器4.4、Nginx负载平衡算法Round-Robin:轮询调度算法,当配置未指明的时候,默认就是轮询算法least-connected:下一次链接将被链接到沉闷链接起码的机器上ip-hash:利用IP地址哈希进行调配weight-balancing:依照权重调配 也能够多种算法一起进行应用4.5、NginX装置(以下依赖包都要装置)gcc环境装置:c++环境openssl装置pcre装置zlib装置Nginx装置4.5.1、gcc环境装置# 装置c++编译环境yum install gcc-c++# 验证环境是否编译胜利,能查看到gcc的版本即可gcc -v4.5.2、openssl装置OpenSSL 是一个弱小的安全套接字层明码库,囊括次要的明码算法、罕用的密钥和证书封装治理性能及SSL协定,并提供丰盛的应用程序供测试或其它目标应用。nginx不仅反对http协定,还反对https(即在ssl协定上传输http),所以须要在linux装置openssl库# 装置opensslyum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel4.5.3、pcre装置PCRE(Perl Compatible Regular Expressions)是一个Perl库,包含 perl 兼容的正则表达式库。ginx的http模块应用pcre来解析正则表达式,所以须要在linux上装置pcre库。pcre-devel是应用pcre开发的一个二次开发库。nginx也须要此库# 装置pcreyum install -y pcre pcre-devel4.5.4、zlib装置zlib库提供了很多种压缩和解压缩的形式,nginx应用zlib对http包的内容进行gzip,所以须要在linux上装置zlib库。# 装置zlibyum install -y zlib zlib-devel4.5.5、Nginx装置下载# http://nginx.org/en/download.htmlMainline version:Mainline 是 Nginx 目前主力在做的版本,能够说是开发版Stable version:最新稳定版,生产环境上倡议应用的版本(在学习过程中应用该版本)Legacy versions:遗留的老版本的稳定版将下载好的包上传到虚拟机# 1.在home目录下创立Ngnix# 2.上传ngnix-1.18.0.tar.gz到该目录,并解压 执行装置# 1.进入解压后nginx-1.18.0目录cd nginx-1.18.0# 2.执行装置./configure && make && make install启动nginx# 1.查看nginx装置默认地位并进入该目录whereis nginxcd /usr/local/nginx# 2.启动nginx/sbin/nginx# 3.查看nginx启动ps -aux|grep nginx# 默认端口8080留神:启动之前查看端口占用状况,如果8080端口被占用,则杀死占用的过程,而后重新启动 本地拜访nginx{"nginx服务器IP地址"}:80 4.6、Nginx根本命令启动 ./{"nginx装置目录"}/sbin/nginx进行/重启 ./{"nginx装置目录"}/sbin/nginx -s stop #进行./{"nginx装置目录"}/sbin/nginx -s reload #重启命令帮忙 ...

April 9, 2023 · 1 min · jiezi

关于docker:一个非常轻量的静态资源服务器

一个十分轻量的动态资源服务器这个动态服务器的次要目标就是为了部署动态资源,也只具备动态拜访性能,不适用于接口开发或者资源重定向。 我的项目地址:docker ikrong/mini-http 目前反对的性能如下 反对动态资源拜访单页面路由反对端口自定义反对https配置反对多域名配置应用办法docker run -ti --rm --init -p 80:80 ikrong/mini-http示例部署一个本地动态服务器,你能够这样启动docker run -ti --rm --init -p 80:80 ikrong/mini-http应用本地动态文件docker run -ti --rm --init \ -p 80:80 \ -v /local/dir/:/www/ \ ikrong/mini-http应用其余端口docker run -ti --rm --init \ -p 8080:80 \ -v /local/dir/:/www/ \ ikrong/mini-http启动 https 服务器docker run -ti --rm --init \ -p 443:443 \ -v /localhost/cert/:/cert/ \ ikrong/mini-http \ /serve \ --domain localhost \ --cert /cert/cert.pem \ --key /cert/cert.key--domain 参数是通知程序通过 localhost 域名拜访服务 ...

April 1, 2023 · 1 min · jiezi

关于docker:DockerCompose

一、docker-compose根底1.1、什么是docker composecompose 我的项目是Docker官网的开源我的项目,负责实现Docker容器集群的疾速编排,通过一个独自的 docker-compose.yml模板文件来定义一组相关联的利用容器为一个我的项目docker compose两个概念: * 服务:一个利用的容器,实际上能够蕴含若干运行雷同镜像的容器实例 * 我的项目:由一组关联的利用容器组成的一个残缺业务单元,在docker-compose.yml中定义1.2、基本原理Compose 我的项目是由Python编写的,实际上就是调用了Docker服务提供的API来对容器进行治理,因而,只有所在的操作系统的平台反对Docker API,就能够在其上利用Compose来进行编排治理.1.3、compose装置间接从github下载即可,前提要先装置Docker,版本要在1.9.1以上 通过docker -v 能够查看到docker版本。通过curl命令来进行下载安装# 下载过程可能比较慢,须要急躁期待curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose# 赋权限chmod +x /usr/local/bin/docker-compose# 查看版本(验证是否装置胜利)docker-compose --version1.4、Docker-compose罕用参数1.4.1、build定义镜像生成,能够指定Dockerfile文件所在的目录门路,反对绝对路径和相对路径服务能够基于指定的镜像,也能够基于一份 Dockerfile,在应用 up 启动之时执行构建工作,这个构建标签就是 build,它能够指定 Dockerfile 所在文件夹的门路。Compose 将会利用它主动构建这个镜像,而后应用这个镜像启动服务容器。build能够指定为蕴含构建上下文门路的字符串# 基于tomcat:lates构建docker-compose# home目录下建一个新的目录mkdir test_compose# 在test_compose目录下新建文件Dockerfilevim Dockerfile# 编辑DockerfileFROM tomcat:latestRUN echo "hello docker_compose"# 在test_compose目录下新建文件docker-compose.ymlvim docker-compose.yml# 编辑 docker-compose.ymlversion: "3.7" # 版本号services: # 服务组 webapp: # 服务名称 build: ./ db: build: ./ # Dockerfile文件门路# 启动docker-compose upbuild两个子参数: contextdockerfileversion: "3.7" # 版本号 services: # 服务组 webapp: # 服务名称 build: context: . # 指定Dockerfile文件门路 dockerfile: Dockerfile-alternate # 指定Dockerfile文件1.4.2、container_name为自定义的容器指定一个名称,而不是应用默认的名称version: "3.7" services: webapp: build: context: ./ dockerfile: Dockerfile_centos container_name: my-web-container# container_name必须在build之后1.4.3、image从指定的镜像中启动容器,能够是存储仓库、标签以及镜像 ID,如果镜像不存在,Compose 会主动拉去镜像。version: "3.7" # 版本号services: # 服务组 webapp: # 服务名称 image: tomcat:latest # 指定镜像启动容器 container_name: my_test_webapp # 指定容器名称1.4.4、depends_on建设容器依赖关系的参数,能够有多个依赖: ...

March 30, 2023 · 2 min · jiezi

关于docker:松灵学院-在松灵-LIMO-上使用-Docker-进行-ROS2-开发

截至目前,Jetson Nano 平台官网仍不提供 Ubuntu 20.04 固件,所以应用 Jetson Nano 平台开发 ROS2 存在微小的艰难,然而好在 Docker 提供的容器技术,让咱们能十分不便的虚构出一个 Ubuntu 20.04 环境进行 ROS2 开发并通过云端疾速分享本人的开发环境,本文我将以松灵 LIMO 为例向大家演示如何应用 Docker 进行 ROS2 开发以及这种开发模式的优越性。 此外,在 ROS 开发过程中(尤其是在多人团队协同中)你肯定遇到过这样的问题:须要疾速(在不同架构机器上)部署雷同开发环境、他人电脑上能够编译但到了本人这里就会报错、无奈复现他人的 Bug、常常会呈现短少反对库或者反对库抵触的状况,尤其是一台电脑上须要做多种工作的状况(比方 深度学习、QT 开发、ROS1、ROS2)则会更蹩脚…… 这个时候咱们就有必要应用 Docker 进行开发 本文分为两局部,1-6节解说 应用 Docker+VSCode 开发方式,7 节将率领大家在 LIMO 平台进行实战 无论您之前应用什么样的形式进行开发,笔者在这里都举荐您尝试 Docker + VSCode,尽管这可能须要两三个下午的工夫进行学习,但请置信这一切都是值得的! 如果您不会应用 docker 或者没有尝试过相似的操作,请您先浏览 《Docker 配合 VSC 开发最佳实际》(https://anthonysun256.github.io/docker-with-vsc_best-practice/) 1.镜像选取 Docker 官网镜像服务器上有很多的 ROS 开发镜像,这里咱们能够有如下抉择(这几个镜像也是笔者罕用的):• ROS 官网镜像:https://hub.docker.com/_/ros  内含所有 ROS 发行版的根底开发镜像,而且反对多种架构,非常适合在多种架构的机器上进行部署。• althack 的开发镜像 https://hub.docker.com/u/althack althack 提供了 VSCode 的开发工作环境模板:https://github.com/athackst/vscode_ros2_workspace尽管模板是 ROS2 然而只有简略批改 Dockerfile 中援用的镜像名称即可改成 ROS1 环境Dockerfile 源码:https://github.com/athackst/dockerfiles ...

March 28, 2023 · 4 min · jiezi

关于docker:docker安装gitea

一:创立docker-compose.ymlversion: "3"# 创立mysql和gitea专用网络networks: gitea: external: falseservices: server: # 指定gitea镜像及版本 image: gitea/gitea # 指定容器别名 container_name: gitea # 配置容器环境变量 environment: - APP_NAME="Gitea" - DOMAIN=192.168.6.88 - SSH_PORT=222 - DISABLE_SSH=true - USER_UID=1000 - USER_GID=1000 - DB_TYPE=mysql - DB_HOST=db:3306 - DB_NAME=gitea - DB_USER=gitea - DB_PASSWD=gitea # 开机自启 restart: always # 指定容器应用的网络 networks: - gitea # 配置挂载卷 volumes: - ./data:/data - ./etc/timezone:/etc/timezone:ro - ./etc/localtime:/etc/localtime:ro # 配置端口映射 ports: - "3000:3000" - "222:222" # 指定依赖 depends_on: - db db: image: mysql:8.0 restart: always environment: - MYSQL_ROOT_PASSWORD=gitea - MYSQL_USER=gitea - MYSQL_PASSWORD=gitea - MYSQL_DATABASE=gitea # 配置端口映射 ports: - "3309:3306" networks: - gitea volumes: - ./mysql:/var/lib/mysql二:创立容器并启动容器# 启动docker-compose up -d# 重启docker-compose restart# 敞开(仅进行容器,保留容器卷)docker-compose down# 进行docker-compose stop三:Gitea配置启动容器后应用IP+端口拜访Gitea:http://your-server-ip:3000,拜访后对Gitea进行配置 ...

March 28, 2023 · 1 min · jiezi

关于docker:聊聊如何在docker环境中配置hosts

前言不晓得大家有没有遇到这种场景,部署在docker环境的我的项目,须要通过域名拜访内部一些资源,但因为没有配置dns解析,因而须要通过配置hosts来进行拜访。本文就来聊聊能够通过哪些形式能够在docker容器中配置hosts 配置的办法办法一:启动容器的时候加上“--add-host”示例: docker run --add-host='www.lyb-geek.com:127.0.0.1' --add-host='www.lyb-geek.cn:192.168.3.1' --name hello-docker -it 192.168.0.1:5002/lybgeek/hello-docker:1.0办法二:如果是通过docker-compose启动容器,能够配置extra_hosts属性示例 version: '3.7'services: hello-docker: restart: always image: 192.168.0.1:5002/lybgeek/hello-docker:1.0 extra_hosts: - "www.lyb-geek.com:127.0.0.1" - "www.lyb-geek.cn:192.168.3.1" container_name: hello-docker network_mode: bridge ports: - "80:80" environment: - ENV=dev 3、办法三:如果是通过k8s来治理容器,则在能够在创立pod的yaml文件通过hostAliases增加域名IP映射示例: apiVersion: apps/v1kind: Deploymentmetadata: namespace: dev name: hello-docker-deployment labels: app: hello-dockerspec: replicas: 3 selector: matchLabels: app: hello-docker template: metadata: labels: app: hello-docker spec: hostAliases: - hostnames: - www.lyb-geek.com ip: 127.0.0.1 - hostnames: - www.lyb-geek.cn ip: 192.168.3.1 imagePullSecrets: - name: default-secret containers: - name: hello-docker image: 192.168.0.1:5002/lybgeek/hello-docker:1.0 imagePullPolicy: Always ports: - containerPort: 80 env: - name: ENV value: "dev"外围配置 ...

March 28, 2023 · 1 min · jiezi

关于docker:Dockerweb项目部署

一、公布步骤Dockerfile编写制作镜像提交Dockerhub仓库创立容器配置映射端口部署利用包二、Dockerfile编写# 基于哪个根底镜像FROM centos:6.8# 构建者的信息MAINTAINER 1441559xxx@qq.com# 拷贝所须要的工具包COPY apache-tomcat-9.0.33 /usr/local/COPY jdk1.8.0_241 /usr/local# 配置java运行环境ENV JAVA_HOME /usr/local/jdk1.8.0_241ENV JRE_HOME $JAVA_HOME/jreENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/libENV PATH $PATH:$JAVA_HOME/bin # 容器启动时命令设置ENTRYPOINT /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.33/logs/catalina.out三、镜像构建# 构建镜像docker build -t centos_tomcat:jdk8 .# 查看构建镜像是否存在docker images四、镜像推送# 登录dockerhubdocker login# 批改制作好的镜像名字 docker tag centos_tomcat:jdk8 wxktest/cos_tomcat:jdk8# 推送镜像docker push wxktest/cos_tomcat:jdk8# 退出登录docker logout五、创立容器# 两种形式创立# 1.仅创立容器docker create -ti --name [容器名称] [镜像] # 2.创立容器并启动容器docker run -ti --name [容器名称] [镜像] -p [容器调配端口]:[宿主机映射端口]六、配置映射端口形式一: 应用docker run创立并运行容器,能够通过-p指定端口映射;然而常常会遇到遗记设置端口映射或设置错了须要批改。形式二: 通过批改容器配置文件的形式来设置容器映射端口容器的配置文件地址: /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json留神:其中的hash_of_the_container是docker镜像的hash值,能够通过docker ps或者docker inspect containername 查看//批改端口映射信息,vim 容器的配置文件"PortBindings":{"8080/tcp":["HostIp":"","HostPort":"8089"]}// 其中8080/tcp对应的是容器外部的8080端口,tomcat拜访默认端口是8080// HostPort对应的是映射到宿主机的端口8089。批改文件: /var/lib/docker/containers/[hash_of_the_container]/config.v2.json增加配置项:"ExposedPorts":{"80/tcp":{}} , 将这个配置项增加到 "Tty": true, 批改实现后重启docker服务:systemctl restart docker七、部署利用包# 要将所要公布的利用包部署到docker中tomcat的webapp目录# 停掉docker:tomcat-web容器docker stop tomcat-web# 将提前准备好的利用包拷贝到docker容器中cd /home/test_web/test_demo# 拷贝到容器中指定目录docker cp test.war tomcat-web:/usr/local/tomcat/webapps/# 启动docker:tomcat-web容器docker start 3466 -ai

March 26, 2023 · 1 min · jiezi

关于docker:DockerRepository

一、docker仓库 仓库(Repository)是集中管理镜像的中央。通常是在云服务上,例如罕用的Docker Hub。当然不止Docker Hub,只是近程的服务商不一样,操作根本都是一样的。二、docker hub 注册注册地址: https://hub.docker.com三、登录和退出作用:通过本地linux命令来登陆和退出近程公共仓库命令格局:登录:docker login 退出:docker logout四、推送镜像作用:用户登录用,将本人的镜像推送到docker hub 来治理命令格局:docker push [images]注:上传到docker hub的镜像名称必须为 [dockerhub账号]/镜像名称,所以在这里先重命名一下test-docker的镜像重命名命令:docker tag 源镜像:tag dockerhub账号/新镜像:镜像标记 eg: # 以上传tomcat:latest 为例# 批改镜像名称docker tag tomcat:latest dockerhub账号/tomcat:v1.0# 登录近程连贯docker login# 上传到近程仓库docker push dockerhub账号/tomcat:v1.0

March 26, 2023 · 1 min · jiezi

关于docker:云原生-•-DockercAdvisorPrometheusGrafana-10分钟搞定Docker容器监控平台

10分钟搞定Docker容器监控平台cAdvisor(Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的应用状况和性能进行监控。用于收集、聚合、解决和导出正在运行容器的无关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源应用状况、残缺历史资源应用状况的直方图和网络统计信息。cAdvisor 自身就对 Docker 容器反对,并且还对其它类型的容器尽可能的提供反对,力求兼容与适配所有类型的容器。由以上介绍咱们能够晓得,cAdvisor 是用于监控容器引擎的,因为其监控的实用性,Kubernetes 曾经默认将其与 Kubelet 交融作为容器监控指标的默认工具,所以,对于云原生集群间接应用 Kubelet 组件提供的指标采集地址即可。 cAdvisor部署1、应用以下命令装置启动cAdvisor组件:docker run \  --volume=/:/rootfs:ro \  --volume=/var/run:/var/run:ro \  --volume=/sys:/sys:ro \  --volume=/var/lib/docker/:/var/lib/docker:ro \  --volume=/dev/disk/:/dev/disk:ro \  --publish=8080:8080 \  --detach=true \  --name=cadvisor \  --privileged \  --device=/dev/kmsg \  google/cadvisor:latest2、此时,cAdvisor组件曾经启动,咱们能够应用浏览器拜访 http://本人IP地址:8080 拜访到cAdvisor组件的Web UI: 3、而在多主机的状况下,在所有节点上运行一个cAdvisor再通过各自的Web UI查看监控信息显然不太不便,同时cAdvisor默认只保留2分钟的监控数据。好消息是cAdvisor曾经内置了对Prometheus的反对。拜访http://本人的IP地址:8080/metrics即可获取到规范的Prometheus监控样本输入: 4、上面表格中列举了一些cAdvisor中获取到的典型监控指标: 指标名称类型含意 container_cpu_load_average_10sgauge过来10秒容器CPU的均匀负载 container_cpu_usage_seconds_totalcounter容器在每个CPU内核上的累积占用工夫 (单位:秒) container_cpu_system_seconds_totalcounterSystem CPU累积占用工夫(单位:秒) container_cpu_user_seconds_totalcounterUser CPU累积占用工夫(单位:秒) container_fs_usage_bytesgauge容器中文件系统的使用量(单位:字节) container_fs_limit_bytesgauge容器能够应用的文件系统总量(单位:字节) container_fs_reads_bytes_totalcounter容器累积读取数据的总量(单位:字节) container_fs_writes_bytes_totalcounter容器累积写入数据的总量(单位:字节) container_memory_max_usage_bytesgauge容器的最大内存使用量(单位:字节) container_memory_usage_bytesgauge容器以后的内存使用量(单位:字节 container_spec_memory_limit_bytesgauge容器的内存使用量限度 machine_memory_bytesgauge以后主机的内存总量 container_network_receive_bytes_totalcounter容器网络累积接收数据总量(单位:字节) container_network_transmit_bytes_totalcounter容器网络累积传输数据总量(单位:字节) Prometheus部署1、创立prometheus存储数据外挂目录,防止容器重启失落:mkdir -p /disk/docker-monitor/prometheus/datachmod 777 /disk/docker-monitor/prometheus/data2、prometheus配置文件外挂进去,不便批改,vi /disk/docker-monitor/prometheus/prometheus.yml:global:  scrape_interval: 15s  evaluation_interval: 15s alerting:  alertmanagers:    - static_configs:        - targets:          # - alertmanager:9093rule_files:  - rule/record/*.ymlscrape_configs:  - job_name: "prometheus"    static_configs:      - targets: ["localhost:9090"]  - job_name: "cadvisor"    static_configs:      - targets: ["124.222.45.207:8080"]❝job_name: "prometheus"配置抓取Prometheus本身相干指标;job_name: "cadvisor"配置抓取之前配置的cAdvisor组件指标。❞3、Docker部署Prometheus:docker run -d -p 9090:9090 --name prometheus \    -v /disk/docker-monitor/prometheus/conf:/opt/bitnami/prometheus/conf \    -v /disk/docker-monitor/prometheus/data:/opt/bitnami/prometheus/data \    bitnami/prometheus:2.42.0 \    --web.enable-lifecycle --web.enable-admin-api\    --config.file=/opt/bitnami/prometheus/conf/prometheus.yml\    --storage.tsdb.path=/opt/bitnami/prometheus/data❝--web.enable-lifecycle --web.enable-admin-api提供rest api接口方式治理prometheus,比方配置热加载:curl -XPOST http://localhost:9090/-/reload。留神:这里将prometheus配置文件和存储目录外挂进去,防止容器重启后数据失落。❞4、Prometheus启动实现后,浏览器拜访: 拜访Status -> Targets页面,发现配置的两个抓取Job曾经显示,并且State是绿色UP,则接入胜利。5、当可能失常采集到cAdvisor的样本数据后,能够通过以下表达式计算容器的CPU使用率:sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu) Grafana部署1、部署Grafana:docker run -d --name=grafana -p 3000:3000 -v grafana:/var/lib/grafana grafana/grafana❝/var/lib/grafana门路外挂进去,该目录存储Grafana插件、数据信息,防止Docker容器重启数据失落。❞2、拜访:http://本人的IP:3000/login,输出账号admin/admin: 3、创立Prometheus类型数据源,指向方才搭建的Prometheus: 4、导入Docker容器监控面板,这里应用11277: 5、监控面板就能够看到Docker容器运行状况,如下图,以后运行中容器有4个,总占用内存319MB,总CPU使用率大略1.84%,并以曲线形式展现每个容器的CPU使用率、内存使用率、网络IO和磁盘IO等。 [更多云原生监控运维,请关注微信公众号:Reactor2020]

March 26, 2023 · 1 min · jiezi

关于docker:DockerDockerfile

一、Dockerfile简介Dockerfile其实就是依据特定的语法格局撰写进去的一个一般的文本文件。利用Docker build命令顺次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(本人制作镜像的技术就是dockerfile)二、Dockerfile根本构造根底镜像信息维护者信息镜像操作指令容器启动时指令三、Dockerfile指令3.1、FROM指令作用:指定根底镜像,必须是第一个命令格局: # 格局FROM <IMAGE>FORM <IMAGE>:<TAG>FORM <IMAGE>@<DIGTST># 实例FROM mysql18.0# 注:tag/digest是可选的,如果不应用这两个值。则默认会应用latest版本的根底持续

March 25, 2023 · 1 min · jiezi

关于docker:容器的swap内存

Linux上swap内存对应一块磁盘分区,当内存缓和时,能够把内存中的数据写入到swap分区;当须要读写这部分数据时,又能够将其从swap分区读入内存。 一.容器swap内存的弊病容器应用swap内存,会导致Memory CGroup对容器内存的限度生效。 比方,在一个开启swap的节点上,启动一个容器: 容器的Memory Cgroup限度=100MB;容器中的过程继续申请内存,共申请1GB内存;容器的内存尽管限度在100MB,然而因为应用了swap,导致容器申请1GB内存胜利(应用swap换入换出),也不会被OOM Kill。 也就是说,在应用Swap的场景下,Memory CGroup对容器的内存限度limit就生效了。 二.容器敞开swap分区(举荐)启动容器时,减少启动参数--memory-swappiness=0,即可禁止容器应用swap; --memory-swappiness detailsA value of 0 turns off anonymous page swapping.A value of 100 sets all anonymous pages as swappable.By default, if you do not set --memory-swappiness, the value is inherited from the host machine.同时,配置 --memory的值 与 --memory-swap的值 相等,也能够阻止容器应用swap: Prevent a container from using swapIf --memory and --memory-swap are set to the same value, this prevents containers from using any swap. This is because --memory-swap is the amount of combined memory and swap that can be used, while --memory is only the amount of physical memory that can be used.三.容器应用swap分区某些程序,可能须要应用Swap空间,能力避免因为偶然的内存忽然减少,而被OOM Kill杀死。 ...

March 25, 2023 · 1 min · jiezi

关于docker:Dokcer容器

一、什么是容器容器是一种轻量级、可移植、并将应用程序进行打包的技术,使应用程序能够在简直任何中央以雷同的形式运行。docker运行一个镜像,这个镜像就会生成一个过程,这个过程就被称为容器二、容器和虚拟机比照相同点不同点容器和虚拟机一样,都会对物理硬件资源(主机)进行共享应用虚拟机是一个残缺的操作系统,容器是间接运行在宿主机的内核上容器和虚拟机的生命周期比拟类似(创立、运行、暂停、敞开等)容器是轻量级的,虚拟机是重量级容器中或虚拟机中都能够装置各种利用,如mysql、nginx等在给定的硬件上能运行更多的容器同虚拟机一样,容器创立后,会存储在宿主机上:linux上位于/var/lib/docker/containers下 三、虚拟机和docker容器的生命周期虚拟机的生命周期镜像的生命周期四、容器的操作4.1、容器创立作用:利用镜像创立出一个created状态的待启动容器命令格局: 英文下的:docker create [options] IMAGE [COMMAND] [ARG...]译:docker create [参数] 镜像 [容器启动后,须要在容器中执行的命令] [执行命令时提供的参数]参数: --name 为容器起名,没有则随机生成一个名称更多的用法:docker create --help# 创立一个tomcat容器且默认运行命令为ls -adocker create --name tomcat_test tomcat:latest ls -a# 查看以后运行docker容器docker ps -a 4.2、容器的删除作用:删除历史版本的一些不再应用或须要保留的容器,缩小磁盘占用命令格局: docker rm [OPTION] IMAGE_NAME[IMAGE_NAMES...] IMAGE_ID[IMAGE_IDS...]参数: -f,强制删除运行中的容器IMAGE_NAME示意一个或者多个容器名称IMAGE_ID示意一个或者多个容器ID更多的用法:docker rm --help/-h# 1.看查正在运行的容器docker ps -a# 2.依据NAMES和ID删除 一个或多个容器docker rm -f 85e python_test 4.3、容器的启动作用:将一个或多个解决创立状态或敞开状态的容器启动起来命令格局: docker start [OPTIONS] CONTAINER [CONTAINER...]参数: -a,--attach 将以后shell的STDOUT/STDERR连贯到容器上-i,--interactive 将以后shell的STDIN连贯到容器上更多的用法:docker start --help/-heg: # 创立一个容器docker create --name python_test python:3.8.0 ls -a# 查看容器docker ps -a # 启动刚创立的容器docker start 3a3 ...

March 23, 2023 · 2 min · jiezi

关于docker:Docker镜像

一、镜像(image)介绍镜像是一个Docker的可执行文件,其中包含运行程序所须要的所有代码内容、依赖库、环境变量和配置文件等,通过镜像能够创立一个或者多个容器二、镜像的命令(这里小编总结罕用的)2.1、镜像的搜寻作用:搜寻Docker Hub上的镜像命令格局:docker search [参数] 镜像名称参数: -f,--filter filter依据提供的格局筛选后果--format string 利用go语言和format格式化输入后果--limit int 展现最大的后果数,默认25个,--no-trunc 内容全副显示查看更多用法:docker search -h/--helpeg: //搜寻镜像centosdocker search centos//搜寻镜像6.8版本的centosdocker search centos:6.8//搜寻官网提供的centos镜像docker search -f is-official=true centos2.2、镜像的下载作用:下载近程仓库中的镜像命令格局:docker pull [参数] 镜像名称[:TAG|@DIGEST]参数: -a,--all-tage 下载所有合乎给定tag的镜像查看更多用法:docker pull -h/--helpeg: //下载ubuntu的镜像,默认下载最新tag的镜像docker pull tomcat//下载指定tag的镜像docker pull tomcat:8.02.3、镜像的查看//查看已下载的所有镜像docker images//依据镜像名称查看本地镜像docker images 镜像名 2.4、镜像的删除作用:将本地的一个/多个镜像删除命令格局: docker rmi [参数] 镜像名称1 [镜像名称2 镜像名称3 ... 镜像名称n]docker image rm [参数] 镜像名称注:(镜像名称能够换成镜像ID)参数: -f,--force 强制删除查看更多用法:docker rmi -h 2.5、镜像的保留备份作用:将本地的一个或者多个镜像打包保留老本地tar文件命令格局: docker save [参数] 镜像名称1 [镜像名称2 镜像名称3 ... 镜像名称n]注:(镜像名称能够换成镜像ID)参数: -o ,--output string 指定写入的文件名和门路查看更多用法:docker save -h/--help ...

March 22, 2023 · 1 min · jiezi

关于docker:使用Docker部署Golang

穿插编译首先,在我的项目的根目录( main.go 所在目录 )下执行以下命令进行穿插编译: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build若编译胜利,根目录下将生成一个以我的项目名为文件名的二进制可执行文件。 编写Dockerfile假如项目名称为service: # syntax=docker/dockerfile:1FROM alpineWORKDIR /appCOPY service /appCMD ["./service"]构建Docker镜像docker build -t service:latest .启动容器docker run -d service:latestDocker Hub若需部署到近程服务器,则需通过Docker Hub直达镜像。 因Docker Hub定义了镜像的提交标准: account/repository:tag所以编译时的项目名称和标签须从新指定: docker build -t account/repository:service .构建实现后推送至Docker Hub: docker push account/repository:service近程服务器拉取镜像: docker pull account/repository:servicebashalpine镜像的默认shell为sh,若要反对bash,须在镜像构建时手动增加: # syntax=docker/dockerfile:1FROM alpineWORKDIR /appRUN apk update \ && apk upgrade \ && apk add --no-cache bash \ && rm -rf /var/cache/apk/*COPY service /appCMD ["./service"]时区alpine镜像的默认时区是UTC,若要固定为CST,须在镜像构建时手动增加: # syntax=docker/dockerfile:1FROM alpineWORKDIR /appRUN apk update \ && apk upgrade \ && apk add --no-cache tzdata \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo Asia/Shanghai > /etc/timezone \ && apk del tzdata \ && rm -rf /var/cache/apk/*COPY service /appCMD ["./service"]自定义根底镜像综上所述,当咱们须要一个反对bash且时区为CST的镜像时,能够这样编写Dockerfile: ...

March 22, 2023 · 2 min · jiezi

关于docker:突破难关Docker镜像和容器的区别以及构建的最佳实践

大家好,我是张晋涛。 本周 Docker 就公布 10 周年了,为了庆贺这个里程碑,我将会公布一系列文章,波及 Docker,CI/CD, 容器等各个方面。 Docker 堪称是开启了容器化技术的新时代,当初无论大中小公司基本上都对容器化技术有不同水平的尝试,或是曾经进行了大量容器化的革新。随同着 Kubernetes 和 Cloud Native 等技术和理念的遍及,也大大增加了业务容器化需要。而这所有的推动,不可避免的技术之一便是构建容器镜像。Docker 镜像是什么在真正实际之前,咱们须要先搞明确几个问题: Docker 镜像是什么Docker 镜像的作用容器和镜像的区别及分割Docker 镜像是什么这里,咱们以一个 Debian 零碎的镜像为例。通过 docker run --it debian 能够启动一个 debian 的容器,终端会有如下输入: / # docker run -it debianUnable to find image 'debian:latest' locallylatest: Pulling from library/debianc5e155d5a1d1: Pull complete Digest: sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430fStatus: Downloaded newer image for debian:latestroot@860f21595fb6:/# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"NAME="Debian GNU/Linux"VERSION_ID="11"VERSION="11 (bullseye)"VERSION_CODENAME=bullseyeID=debianHOME_URL="https://www.debian.org/"SUPPORT_URL="https://www.debian.org/support"BUG_REPORT_URL="https://bugs.debian.org/"看终端的日志,Docker CLI 首先会查找本地是否有 debian 的镜像,如果没有则从镜像仓库(若不指定,默认是 DockerHub)进行 pull;将镜像 pull 到本地后,再以此镜像来启动容器。 咱们能够先退出此容器,来看看 Docker 镜像到底是什么。用 docker image ls 来查看已下载好的镜像: ...

March 22, 2023 · 10 min · jiezi

关于docker:云原生-•-Docker用故事给老板讲Docker核心原理

文言Docker外围原理Docker是什么?「Docker应用Google公司推出的Go语言进行开发实现,基于操作系统内核中Cgroup(资源管制)、Namespace(资源隔离)与OverlayFS(数据存储)等技术,实现了基于操作系统层面的虚拟化技术。」了解的早就了解了这句话外围实质,不了解的给他这么一解释还是云里雾里。那咱们先不急于搞懂Docker是什么,说到Docker容器,就不得不说下虚拟机(Virtual Machine),Docker容器和虚拟机又有什么区别呢?Docker vs 虚拟机虚拟机对于咱们开发者是个再相熟不过的概念,比方咱们常常应用VMware Workstation搭建虚构操作系统部署利用,应用JVM虚拟机运行Java利用等,如下图,「通常应用虚拟机管理器作为两头转换层,能够屏蔽底层操作系统或硬件设施差别」,比方下层虚拟机操作系统(Guest OS)执行程序或Java程序运行等,「这个中间件转换层就像翻译家一样,将下层执行的指令解释翻译成上层操作系统对应的指令进行执行」。 正如Java世界中吹牛的"一次编译,到处运行",「虚拟机实质上通过中间件转换层屏蔽了底层差别,模拟出一个新环境,实现与平台无关,达到与外界隔离的目标,这就是虚拟机实现虚拟化的核心思想」。从虚拟机架构实现上能够看出,其存在一个很大问题:所有的指令都必须通过虚拟机管理器这个两头转换层翻译解释能力在实在操作系统上运行,这就意味着虚构机会存在性能损耗。另外,为了模仿一个Linux环境上运行的利用,须要应用VMware运行部署一个宿主机(Guest OS),再在宿主机上运行利用,宿主机自身占用好几个G的存储空间、400-500MB+内存空间,当初微服务架构动不动就是10+、100+个利用组件须要部署,那这些组件都须要做隔离部署应用虚拟机形式无疑是致命的。上述说的虚拟机存在性能问题和资源节约造成了虚拟机对细粒度的环境隔离有点力不从心,而这又与以后风行的微服务架构场景下,零碎被拆分成几十、上百个微服务利用组件须要独立部署存在抵触。Docker推崇的是一种轻量级容器的构造,即一个利用一个容器。所以,Docker一进去就被推向巅峰,那它又是如何搞定虚拟机隔离存在的问题的呢?Docker容器核心技术Docker容器中过程是间接运行在底层操作系统上,没有两头转换层,所以也就不存在性能损耗的问题。要害那它是如何做到隔离的呢? 「这里就引出了撑持Docker容器的两大内核技术:Namespace和Cgroups(Control Groups)」。Namespace次要是用来进行「资源隔离」,对于那些计算型资源,比方CPU、内存、磁盘IO等不能进行隔离的资源,这时就须要采纳Cgroups进行「资源限度」,避免有些资源耗费较大的容器,将整个物理机器的硬件资源(CPU, Memory、磁盘IO等) 占满,进而影响其它过程性能。Namespace和Cgroups这两个技术都是Linux内核自身反对的性能,Docker如果只应用这两大技术也不可能造就出道即巅峰的炽热水平,Docker翻新点恰好是引入镜像概念,并应用联结文件系统(UnionFS)技术很好的实现了镜像分层,这样就能够将利用部署介质、依赖环境配置文件以及操作系统二进制文件进行分层叠加构建出利用运行时文件系统环境。 镜像蕴含一个根底镜像(Base Image),这个个别蕴含操作系统介质,比方centos、debian,然而它只包含应用的操作系统二进制文件,并没有包含内核相干,所以,它的体积远远小于部署整个操作系统占用的空间,比方一个centos根底镜像大略只有70-80MB。另外,镜像分层设计进一步缩小存储占用,比方当初100+利用组件都是基于centos根底镜像部署,理论部署时只须要拉取一份centos根底镜像,就像搭积木一样,将每一层应用的文件进行组合叠加,最终构建出程序运行时残缺的目录构造。文言核心技术关系「Docker容器技术炽热的背地,其实是Namespace、Cgroups和UnionFS三大技术创新的联合,造就出了Docker这种景象级产品」。上面用个比拟形象的比喻来帮忙你了解三大技术关系:1、失常程序启动时间接运行在操作系统上,应用Docker启动程序时,也是间接运行在操作系统上,然而Docker引擎在启动程序时会给程序套一个立方体壳(见下图); 2、这个立方体壳前后左右四个面应用Namespace资源隔离技术打造,这样就给Docker容器中过程和其它过程隔离开来,给容器中过程造成一种运行在一个独立环境中的假象(见下图);3、这个立方体壳的下面这个面应用Cgroups资源限度技术打造,防止程序壮大成长进去抢占其它过程的资源,进而影响其它过程性能,这样就给盖盖上加上了一个紧箍咒,再牛逼的程序也会把你死死的限制住(见下图);4、最初再来看下这个立方体壳剩下的最上面这个面,其采纳UnionFS技术打造,构建出容器中过程运行时文件系统根基。将操作系统二进制指令、依赖配置文件、程序介质等通过镜像分层叠加构建出程序运行时看到的整个文件系统环境;比方宿主机是Debian零碎,然而根底镜像是CentOS环境,容器中过程看到的是CentOS零碎,而不是Debian零碎,同时将yum install装置的依赖介质也通过镜像打包进来,容器中过程就不须要关注宿主机上到底有没有装置该依赖介质等等,这样容器中过程看到是一个领有程序运行时残缺介质,并与宿主机操作系统隔离开的独立操作系统(见下图);5、所以,程序运行在三大核心技术发明的立方体壳壳中,被蒙蔽双眼傻乎乎的认为运行在一个独立计算机环境中,看不到外界程序运行状况,也影响不到外界程序的运行。 如何查看Docker过程在宿主机上的PID?Docker容器中的过程是间接运行在宿主机上,能够通过docker inspect container查看到Docker容器中过程在宿主机上对应的PID信息(见下图): 宿主机上ps -ef查看下容器过程信息: 因为,这里运行的是一个nginx容器,所以宿主机上看到对应的是nginx主过程,同时该过程创立了两个nginx worker子过程。Docker容器缺点「高性能、轻便是容器相较于虚拟机最大的劣势,容器实质上是一种非凡的过程。」不过,无利就有弊,基于Namespace的资源隔离和Cgroups的资源限度都不是那么彻底,因为容器之间底层还是共享应用宿主机的Linux内核,只管你能够在容器里应用不同版本的操作系统文件,比方CentOS或者Ubuntu,但这并不能扭转共享宿主机内核的事实。这意味着,如果你要在Windows宿主机上运行Linux容器,或者在低版本的Linux宿主机上运行高版本的Linux容器,都是行不通的。其次,在Linux内核中,有很多资源和对象是不能被Namespace化的,最典型的例子就是:工夫。这就意味着,如果你的容器中的程序修改了工夫,整个宿主机的工夫都会被随之批改,这显然不合乎用户的预期。另外,跟Namespace的状况相似,Cgroups对资源的限度能力也有很多不欠缺的中央,这里最常见的是/proc 文件系统的问题。Linux下的/proc目录存储的是记录以后内核运行状态的一系列非凡文件,用户能够通过拜访这些文件,查看零碎以及以后正在运行的过程的信息,比方CPU应用状况、内存占用率等,这些文件也是top指令查看零碎信息的次要数据起源。然而,你如果在容器里执行top指令,就会发现,它显示的信息竟然是宿主机的CPU和内存数据,而不是以后容器的数据。造成这个问题的起因就是,Docker引擎在启动过程时间接将宿主机/proc下很多文件挂载到Docker容器上。

March 21, 2023 · 1 min · jiezi

关于docker:Docker基础

一、Docker前述1.1、为什么要学Docker?* Docker能够节约公司服务器老本* 缩小测试人员对于测试环境和测试数据的保护老本* 能够利用于自动化测试、冒烟测试和回归测试* 市场倒退的要求1.2、什么是Docker?Docker是一个开源利用容器引擎,能够让开发者将其实现的利用以及依赖的软件打包到一个容器中,而后部署到的任何风行的零碎环境中Docker版本: Docker-CE社区版 Docker-EE企业版1.3、Docker利用场景* Web利用的自动化打包和公布* 自动化测试和继续集成* 在服务型环境中部署和调整数据库或其余的后盾利用* 从头编译或者扩大现有的OpenShift或Cloud Foundry平台来搭建本人的PasS环境1.4、Docker长处* 简化配置* 进步开发效率* 响应式部署和扩大* 在同一硬件上运行更多工作负载1.5、Docker根本架构docker蕴含三个局部: 镜像(image):Docker 镜像能够看作是一个非凡的文件系统(相当于root文件),除了提供容器运行时所需的程序、库、资源、配置等文件外,还蕴含了一些为运行时筹备的一些配置参数 容器(container):镜像和容器的关系,就像是面向对象程序设计中类和实例一样,镜像是动态的类定义,容器是镜像运行时的实例。容器能够被创立、启动、进行、删除、暂停等 仓库(repository):仓库可看着一个代码控制中心,用来保留镜像。二、Docker装置2.1、装置须要的工具(小编的工具)操作系统:Centos7稳定版 VMware:VMware Workstation 16 pro SSH近程连贯工具:FinalShell2.2、装置步骤确认零碎是否曾经装置docker yum list installed | grep docker #查看曾经装置docker yum -y remove docker-ce.x86_64 #移除曾经装置docker装置依赖系统软件 yum install -y yum-utils device-mapper-persistent-data lvm2增加软件源信息 yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo更新并装置Deocker-CE yum -y install docker-ce查看装置docker版本信息 docker version设置开机启动 systemctl start docker systemctl enable docker

March 21, 2023 · 1 min · jiezi

关于docker:Docker安装MySQL

下载镜像docker pull mysql 创立容器docker run --name mysql8 mysql:latest 复制配置文件# 用于映射MySQL配置mkdir -p /data/mysql8/conf.d# 用于映射MySQL数据目录mkdir -p /data/mysql8/data# 复制出主配置文件docker cp mysql8:/etc/my.cnf /data/mysql8/# 批改目录权限chown -R 999 /data/mysql8chgrp -R 999 /data/mysql8# 敞开并移除容器docker stop mysql8docker rm mysql8从新创立容器# 从新创立容器docker run -d \--name mysql8 \--restart=always \-p 3308:3306 \-v /data/mysql8/data:/var/lib/mysql \-v /data/mysql8/conf.d:/etc/mysql/conf.d \-v /data/mysql8/my.cnf:/etc/my.cnf \-e MYSQL_ROOT_PASSWORD=123456 \mysql:latest凋谢端口(可选)# 永恒关上3308/TCP端口firewall-cmd --permanent --add-port=3308/tcp# 永恒关上端口须要reload一下,长期关上不必,如果用了reload长期关上的端口就生效了firewall-cmd --reload参考链接 https://segmentfault.com/a/1190000040980219

March 16, 2023 · 1 min · jiezi

关于docker:docker-使用storageopt参数约束容器文件系统大小

版本信息ubuntu :Ubuntu 22.04.1 LTSdocker:23.0.1 状况阐明想起之前接过的一个单,需要是须要用docker的--storage-opt参数束缚但个容器文件系统所占空间的最大值,原本认为是送钱的,后果操作起来还遇到点小坑。首先查看官网介绍理解这个参数的一些个性,发现必须应用xfs文件系统能力反对,且对驱动有肯定要求,这些要求曾经满足了。应用df -hT能够看到文件系统类型,docker info 能够看到Storage-Driver驱动。 开始操作间接在创立容器的时候增加--storage-opt测试 root@ubuntu-01:~# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest bab98d58e29e 8 days ago 4.86MBroot@ubuntu-01:~# docker run -it --storage-opt size=1G busybox /bin/shdocker: Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option.See 'docker run --help'.现会有报错,提醒--storage-opt 只反对笼罩在xfs与'pquota'挂载选项。留神此时的容器文件系统所在位置为根分区,同时客户的服务器也只有一个盘。。。应用mount命令从新挂载根分区,查看挂载参数发现并没有附加quota参数 root@ubuntu-01:~# mount -o remount,pquota /root@ubuntu-01:~# cat /proc/mounts /sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0udev /dev devtmpfs rw,nosuid,relatime,size=1953592k,nr_inodes=488398,mode=755,inode64 0 0devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0tmpfs /run tmpfs rw,nosuid,nodev,noexec,relatime,size=401992k,mode=755,inode64 0 0/dev/sda2 / xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0tmpfs /dev/shm tmpfs rw,nosuid,nodev,inode64 0 0tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k,inode64 0 0cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0bpf /sys/fs/bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 0 0systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=19319 0 0hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0debugfs /sys/kernel/debug debugfs rw,nosuid,nodev,noexec,relatime 0 0tracefs /sys/kernel/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0fusectl /sys/fs/fuse/connections fusectl rw,nosuid,nodev,noexec,relatime 0 0configfs /sys/kernel/config configfs rw,nosuid,nodev,noexec,relatime 0 0none /run/credentials/systemd-sysusers.service ramfs ro,nosuid,nodev,noexec,relatime,mode=700 0 0/dev/loop0 /snap/core20/1587 squashfs ro,nodev,relatime,errors=continue 0 0/dev/loop1 /snap/lxd/22923 squashfs ro,nodev,relatime,errors=continue 0 0tmpfs /run/snapd/ns tmpfs rw,nosuid,nodev,noexec,relatime,size=401992k,mode=755,inode64 0 0tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=401988k,nr_inodes=100497,mode=700,inode64 0 0/dev/loop3 /snap/snapd/18357 squashfs ro,nodev,relatime,errors=continue 0 0binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0/dev/loop4 /snap/core20/1828 squashfs ro,nodev,relatime,errors=continue 0 0/dev/loop5 /snap/lxd/24322 squashfs ro,nodev,relatime,errors=continue 0 0nsfs /run/snapd/ns/lxd.mnt nsfs rw 0 0之后去批改fstab文件,批改实现后才重启零碎。 ...

March 15, 2023 · 3 min · jiezi

关于docker:usrbinenv-bash-No-such-file-or-directory-解决办法

docker容器运行镜像报错 /usr/bin/env: bash: No such file or directory 解决办法一、问题形容 自己在window11零碎下,通过docker打包本地我的项目成镜像并上传至集体镜像仓库(ps:我应用的是阿里云容器镜像服务),而后我把该镜像拉取到我的云服务器(CentOS 7.6)并运行时呈现如下谬误: /usr/bin/env: ‘bash\r’: No such file or directory导致镜像无奈运行。 二、问题呈现起因 因为自己时在windows11下编辑的Dockerfile,所以行结尾为Windows款式(CR LF),而我的镜像又是在Linux零碎下运行的,所以呈现上述报错。 三、解决办法将行结尾为Windows款式(CR LF) 改为 Unix款式(LF),如下图: 重下打包本地我的项目镜像再上传,docker容器就能够胜利运行该镜像了。PS:windows下docker打包操作可参考我的另一篇博客 https://segmentfault.com/a/1190000043514266 。 ### 四、总结 以上问题解决教训为集体理论工作中遇到的问题并解决的过程,如果还有其余解决形式,也能够评论区告知,独特学习!

March 13, 2023 · 1 min · jiezi

关于docker:Docker安装Elasticsearch

1. 下载镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.2 2. 启动容器docker run --name elaticsearch -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1g -Xmx8g" docker.elastic.co/elasticsearch/elasticsearch:8.6.2 3. 复制出配置文件、插件、数据目录# 创立一个目录, 用来寄存elasticsearch配置和数据mkdir /data/elasticsearchcd /data/elasticsearch# 复制配置文件目录docker cp elasticsearch:/usr/share/elasticsearch/config /data/elasticsearch/config# 复制插件目录docker cp elasticsearch:/usr/share/elasticsearch/plugins /data/elasticsearch/plugins# 批改文件权限, 不然Docker容器无奈写数据cd /datachgrp -R 1000 elasticsearchchown -R 1000 elasticsearch4. 重启容器# 先移除容器docker stop elasticsearchdocker rm elasticsearch# 再启动一个新的(须要先配置docker-compose.yml文件)docker-compose updocker-compose.yml配置如下 version: "3.3"services: elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2 restart: always # 映射目录到宿主机 volumes: - /data/elasticsearch/config:/usr/share/elasticsearch/config - /data/elasticsearch/data:/usr/share/elasticsearch/data - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins ports: - 9200:9200 - 9300:9300 environment: # 指定单节点启动 - discovery.type=single-node - "ES_JAVA_OPTS=-Xms2g -Xmx8g" # 开启内存锁定 - bootstrap.memory_lock=true # 不开启权限验证 - xpack.security.enabled=false# mem_limit: ${MEM_LIMIT} ulimits: # 勾销内存相干限度 用于开启内存锁定 memlock: soft: -1 hard: -1如需装置IK分词器, 下载解压到/data/elasticsearch/plugins, 重启ES即可 ...

March 10, 2023 · 1 min · jiezi

关于docker:基于dockercompose搭建prometheus与grafana监控环境

手把手式小白入门prometheus与grafana监控零碎搭建 整体架构 采集与监控流程 存在一个具体的主机或者服务,存在一些能够被采集的指标,比方linux零碎下面的CPU内存等指标部署了对应服务或主机的采集程序Exporter,该程序同时提供一个对外裸露的http接口用于提供采集到的数据,通常是凋谢一个http://{host}:{port}/metrics接口Prometheus负责定期数据收集,存储以及对外提供查问服务grafana提供监控数据可视化面板(dashboard),用于监控数据精美展现docker服务配置新建compose.yaml如下 services: prometheus: image: prom/prometheus:latest container_name: demo-prometheus restart: unless-stopped ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus networks: - demo grafana: image: grafana/grafana-enterprise:latest container_name: demo-grafana restart: unless-stopped ports: - "3000:3000" volumes: - grafana-data:/var/lib/grafana - grafana-config:/etc/grafana networks: - demo node-exporter: image: quay.io/prometheus/node-exporter:latest container_name: demo-node-exporter command: - '--path.rootfs=/host' network_mode: host pid: host restart: unless-stopped volumes: - '/:/host:ro,rslave'networks: demo: name: "demo" external: falsevolumes: grafana-data: {} grafana-config: {} prometheus-data: {}提供三个服务 ...

March 9, 2023 · 2 min · jiezi

关于docker:windows11下使用docker打包镜像并上传到个人镜像仓库详细图文

windows11下应用docker打包镜像并上传到集体镜像仓库(具体图文)一、windows下装置docker步骤留神 :装置windows版的docker 须要先装置WSL(windows System for Linux)具体可参考:https://www.ytso.com/270594.html, 本文就不做详细描述。 docker官网 https://www.docker.com/products/docker-desktop/ 下载Docker Desktop 下载胜利后,双击进行装置装置胜利后 在PowerShell查看版本号docker --version ,呈现下图信息则为装置胜利 二、创立集体镜像仓库 如果本人购买了服务器,能够在服务器搭建私人镜像仓库,具体参考:https://blog.csdn.net/AtobeKegio/article/details/128048063 本文次要以收费的阿里云容器镜像服务实现创立。 步骤:登录阿里云 https://account.aliyun.com/login/login.htm,如果没有账号能够先注册后在登录。 登录胜利后,点击控制台。而后在最左上角,点击“ 三 ”图标 ,菜单开展后找到容器镜像服务。 抉择个人版实例,创立个人版实例点击集体实例进入 点击镜像仓库,创立镜像仓库 填写仓库信息(仓库类型抉择公开就所有人都能pull和push,设为公有则须要输出账号密码能力pull,push),填写结束点击下一步。点击本地仓库,而后点击创立仓库,至此,集体镜像仓库就创立实现了。 三、打包本地代码,并上传至集体镜像仓库将本地我的项目打包成jar包。 新建DockerFile和 docker-entrypoint.sh 两个文件,DockerFile为docker打包所需文件,docker-entrypoint.sh为我的项目入口文件。 DockerFile FROM openjdk:8u272-jdkENV APP_JAR /devices-0.0.1-SNAPSHOT.jarENV TZ Asia/ShanghaiWORKDIR /COPY target/devices-0.0.1-SNAPSHOT.jar /ADD /docker-entrypoint.sh //RUN chmod +x docker-entrypoint.shENTRYPOINT ["./docker-entrypoint.sh"]docker-entrypoint.sh #!/usr/bin/env bashjava -jar $JAVA_OPTS -server \-XX:+UnlockExperimentalVMOptions \-XX:+UseCGroupMemoryLimitForHeap \-XX:-OmitStackTraceInFastThrow \-Djava.security.egd=file:/dev/./urandom \/$APP_JAR运行cmd,进入命令行窗口,切换到我的项目target同级目录,创立docker镜像,留神:最初面的那个点不能漏掉 push创立好的镜像到集体仓库 至此,docker打包我的项目到集体镜像仓库就实现了,如果须要应用该镜像应用命令 ...

March 8, 2023 · 1 min · jiezi

关于docker:dockercompose-搭建-redis-集群

GITHUB地址:https://github.com/xiaoxuan6/docker-redis-cluster1、启动容器docker-compose up -d2、开启集群轻易找一个容器进入,这里我抉择 node-1 进入。 在进入容器后,输出如下命令开启集群 . a、应用固定 ip自定义 network 网络 redis-cli --cluster create 172.27.0.11:6379 172.27.0.12:6380 172.27.0.13:6381 172.27.0.14:6382 172.27.0.15:6383 172.27.0.16:6384 --cluster-replicas 1b、应用动静 ip应用 network_mode 为 host 因为应用的是 Host 网络,因而间接 localhost + port 指定就行,--cluster-replicas 设置每个 Master 复制的数量# 留神将 ip 换成本人服务的 ip# redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1这里有个坑,ip 如何应用 127.0.0.1 程序代码执行会报错,必须应用本地中的 ip(ip address | grep eth0) 报错:Can't communicate with any node in the cluster 3、测试3.1、查看节点属性127.0.0.1:6379> cluster infocluster_state:okcluster_slots_assigned:16384cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3cluster_current_epoch:6cluster_my_epoch:1cluster_stats_messages_ping_sent:34cluster_stats_messages_pong_sent:37cluster_stats_messages_sent:71cluster_stats_messages_ping_received:32cluster_stats_messages_pong_received:34cluster_stats_messages_meet_received:5cluster_stats_messages_received:713.2、查看节点信息127.0.0.1:6379> cluster nodesd221716225e355966aa300efb8ca5bef496fd4b9 127.0.0.1:6380@16380 master - 0 1668232069546 2 connected 5461-10922357a2c306a0349e12ea2434c92655c6f0d5b207d 127.0.0.1:6384@16384 slave 7460b8066d02612d7028db2d8cecd368febd4e77 0 1668232069000 1 connectedc0d025968fdf0070dbecf5085f287e324264309e 127.0.0.1:6383@16383 slave 5d8ede04727c1581cd040f51da79f9f076e0c4fd 0 1668232070709 3 connected7460b8066d02612d7028db2d8cecd368febd4e77 127.0.0.1:6379@16379 myself,master - 0 1668232069000 1 connected 0-5460edfa7fe812375524b6c586897887033382864392 127.0.0.1:6382@16382 slave d221716225e355966aa300efb8ca5bef496fd4b9 0 1668232070000 2 connected5d8ede04727c1581cd040f51da79f9f076e0c4fd 127.0.0.1:6381@16381 master - 0 1668232069647 3 connected 10923-16383slave,master,myself 区别关键字阐明slave该节点为备份节点master该节点为主节点myself该节点为以后链接的节点3.3、插入一个值$ docker exec -it node-1 sh# redis-cli127.0.0.1:6379> get name(error) MOVED 5798 127.0.0.1:6380报错:(error) MOVED 5798 127.0.0.1:6380报错起因:是因为启动 redis-cli 时没有设置集群模式所导致,启动的时候应用-c参数来启动集群模式,命令如下:redis-cli -c正确用法:进入容器 node1 ...

March 7, 2023 · 2 min · jiezi

关于docker:资源广场上线|以开发者为中心打造开放资源共享平台

建木Hub「资源广场」正式上线啦! 资源广场包含容器镜像和建木节点两类开发资源。 镜像:开发者将服务打包成镜像后,能够公布到建木Hub,可能无效解决镜像拉取速度慢的问题。(以后大多数用户将镜像公布在Docker Hub,但因为服务器位于海内,会影响镜像拉取速度) 节点:节点是组成流水线的最小单位,每一个工作节点可满足特定需要,如编译、构建、测试、部署、告诉等。 各位开发者们不仅能够下载镜像/节点,以满足各种各样的业务需要;同样能够公布镜像/节点,让建木Hub泛滥用户看到并应用~ 接下来让咱们一起走进「资源广场」,一探到底吧! 01 资源聚合在资源广场,你能够发现平安可信的容器镜像、笼罩多种研发场景的建木节点。首页依据资源起源、下载量、品质等维度精选了16个举荐资源,不便大家在没有明确需要的状况下进行浏览~ 点击镜像卡片,进入镜像详情页,详情页包含镜像仓库根本信息、概览和标签。 镜像概览取自关联代码仓库的README,标签概览展现最近生成的标签,并将内容雷同的镜像标签进行分组展现,点击同组镜像标签将拜访Git仓库同一提交记录。 标签里寄存着该镜像仓库下所有镜像标签,标签目前反对Linux操作系统下的amd64和arm64架构。 如果本人的电脑是amd64,又想打出能在arm64架构下运行的镜像,不须要像以前那样适配一堆环境啦~在创立镜像仓库后-创立构建打算中勾选arm64即可~妥妥的简略勾一勾,不便你我他~ 点击节点卡片,进入节点详情页,节点详情页包含节点根本信息和节点版本 对于有明确需要的小伙伴,可间接在首页搜寻关键词,一键查找全站资源;同时反对对镜像/节点进行起源筛选,更快匹配你的需要,进步查找效率! 02 疾速复用镜像:执行docker run命令或在docker-compose脚本中应用节点:在建木新建我的项目,拖拽后填写参数应用 03 资源公布随着国产软件的崛起,国产代替化已是大势所趋。道阻且长,行则将至。咱们心愿与国内开发者共建本土化镜像生态,打造一个凋敝的镜像分享平台、资源开放平台。欢送各位开发者将本人的镜像/节点公布至资源广场,与其余小伙伴分享创意想法,传递价值~ 建木Hub资源广场:https://res.jianmuhub.com

March 6, 2023 · 1 min · jiezi

关于docker:Docker进阶学习

Docker的了解 Docker就是一个轻量化的容器,能够把零碎尽可能,按容器拆分到最小,通过指定的命令进行构建、散发、部署。该笔记只针对Docker的进阶应用,不去详解Docker的装置,简略容器的Docker装置。 Docker部署自定义的我的项目 咱们都实操过通过Docker装置Redis、Mysql并且通过文件挂载、映射端口,将容器与服务器买通。那么如何应用Docker来装置自定义的我的项目呢? 启动自定义镜像示例我的项目代码地址:https://github.com/gzyunke/test-docker 拉取示例代码 应用命令Docker命令启动 先进行编译【设置镜像名、版本号】docker build -t docker-test:version-1 . 服务器会依据dockerfile文件导入对应的包和环境。 运行构建的docker镜像 docker run -p 8090:8080 --name testDocker docker-test:version-1 -p 与服务器的端口挂载-d 后盾运行--name 指定docker容器的名称罕用的一些命令 `docker ps` 查看以后运行中的容器`docker images` 查看镜像列表`docker rm container-id` 删除指定 id 的容器`docker stop/start container-id` 进行/启动指定 id 的容器`docker rmi image-id` 删除指定 id 的镜像`docker volume ls` 查看 volume 列表`docker network ls` 查看网络列表目录挂载 日常开发中咱们经常在docker启动容器后可能后续开发中代码还会批改,须要重新启动,如果咱们生成的一些文件,比方日志这些如果没有和服务器挂载就会在容器敞开或者重启后隐没。因而咱们须要将Docker文件和服务器文件进行挂载,这样不论咱们容器启动多少次,都能把文件长久化到服务器上。 Docker提供了三种挂载形式 bind mount 间接把宿主机目录映射到容器内,适宜挂代码目录和配置文件。可挂到多个容器上volume 由容器创立和治理,创立在宿主机,所以删除容器不会失落,官网举荐,更高效,Linux 文件系统,适宜存储数据库数据。可挂到多个容器上tmpfs mount 适宜存储临时文件,存宿主机内存中。不可多容器共享。【个别不必】 将代码文件和docker容器文件挂载 docker run -p 8090:8080 -v /docker_test/test-docker:/app --name testDocker1 docker-test:version-1 留神:挂载后Docker会映射到服务器的本地代码,所以服务器也须要装置我的项目的运行镜像哦[这里是npm镜像,能够用yum装置一下]; ...

March 4, 2023 · 1 min · jiezi

关于docker:rabbitmq-如何在-docker-下做数据持久化

rabbitmq+docker 数据长久化生效、失败、没有报错、重启之后没有数据了,怎么办?如何解决? rabbitmq 服务器重启之后,数据失落、数据全副失落,怎么办?如何解决? rabbitmq 没有设置 hostname 导致数据全副失落,怎么办?如何解决? rabbitmq 重启之后,无奈登录,用户名账号全副失落,怎么办?如何解决? docker 部署 rabbitMQ 长久化不失效问题,怎么办?如何解决? 重启服务器后,rabbit用户失落问题,怎么办?如何解决? 参考文章: rabbitmq 重启之后无奈登录rabbitmq 如何在 docker 下做数据长久化?

February 28, 2023 · 1 min · jiezi

关于docker:docker容器无限重启不新建容器进入原容器修复bug

问题背景环境 : Centos7 下 docker 部署 Jenkins 2.235.5 故障:Jekins 依据页面提醒间接版本升级 2.392,重启之后,Jenkins 页面无法访问,容器有限重启,无奈进入容器。 起因:查看docker日志 提醒如下 Running with Java 8 from /java/jdk, which is older than the minimum required version (Java 11). 即原容器装置的是java 8,Jenkins 新版本最低需要是 java 11。 问题找到了,只有咱们能进入容器里,去降级下jdk,或者回退Jenkins版本,对于运维人员来说问题就好解决了,这里就略过后续。 当初问题来了,咱们怎么不新建容器,间接进入原容器去修复bug? 解决流程找到容器的配置目录里的 config.v2.json (参考扩大1)。要批改的中央有三个字段,别离是Path、Args,和Entrypoint(也可能是CMD)。这里咱们心愿容器能启动进入即可,所以启动命令能够为"sleep 3600" (休眠1小时)。 "Path": "sleep", // 可执行文件"Args": ["3600"], // 参数"Entrypoint": [ // 残缺命令 "sleep", "600"],留神:批改前留神先备份,前面修复后笼罩回来。 重启docker,使配置失效,即可运行容器。进入零碎修复bug后,改回配置,同样重启docker配置失效。留神:如果是有其余容器在运行中,不能重启docker的状况下,咱们能够依据理论状况变通去解决: 本例中我遇到的Entrypoint启动配置如下: "Entrypoint": [ "/sbin/tini", "--", "/usr/local/bin/jenkins.sh"],即通过运行 xx.sh 脚本来启动服务。这样咱们能够通过在 xx.sh 脚本前退出“sleep 3600” (参考扩大2),就能够间接启动进入容器。 扩大 如何查看容器的配置目录(通常为/var/lib/docker/containers/{CONTAINER ID}) ...

February 25, 2023 · 1 min · jiezi

关于docker:为什么docker-网段冲突会和宿主机冲突原因分析和解决方案

seo 优化: 为什么docker-compose 网段抵触会和宿主机抵触?然而间接应用 docker 不会抵触?docker网段抵触了怎么办?docker默认网段和主机网段抵触解决原本好好的,新开了一个容器之后,忽然无奈登录虚拟机(宿主机),如同是 docker 网段抵触怎么办?答复这个问题前,倡议先看上面两篇文章:docker0 和 br-xxxxxx 有什么区别?为什么 docker-compose 创立的网络模式为什么不在 docker 四大类型中? 私网地址是: A类地址:10.0.0.0~10.255.255.255. B类地址:172.16.0.0 ~172.31.255.255. C类地址:192.168.0.0~192.168.255.255起因剖析: docker 的虚构网卡网段应用的是『B类地址』 如果是个人电脑,咱们宿主机个别都是 192.168.xxx.xxx 所以,默认状况下,所有相安无事。 所以,如果你遇到抵触,个别是这样:所有都好好的,然而忽然,无奈登录主机了,连 ping 都 ping 不通 为什么呢?很简略,172 结尾的网段被用完了,docker 就去进犯 192.168 了 然而咱们的宿主机用的网段就是 192.168,所以网段抵触,咱们无奈登录宿主机 你可能有疑难,172 能够调配超级多的 ip,怎么就用完了?因为每跑一个 docker-compose.yaml 都是要创立一个 br 结尾的虚构网卡的,分走一个 172.xxx。因为 B类地址范畴是 172.16.0.0 ~172.31.255.255, 所以 172 结尾的最多只能跑 15 个 docker-compose.yaml当你需要太旺盛,一下子跑了 n 个 docker-compose.yaml,就可能导致 B 类地址被用完最恶心的是,你执行 docker-compose down 之后,有些虚构网卡不会被卸载,导致始终占用,所以并不是『同时15个把 B 类地址榨干』,而是『与日俱增,把 B 类地址榨干』 从此处能够看到,docker0 用的是 172.17.0.1 其余的 br 结尾的都是 docker-compose 创立的虚构网卡,也是 172.xxx.0.1 ...

January 30, 2023 · 1 min · jiezi

关于docker:docker-内容安全签名之-notary

简介在网络系统之间传输数据时, 信赖是一个次要问题。特地是,当通过不受信赖的媒体(例如Internet)进行通信时,确保零碎所解决的所有数据的完整性和发布者至关重要。您能够应用Docker Engine将图像(数据)推入和拉入公共或公有注册表。内容信赖使您可能验证通过任何渠道从注册表接管的所有数据的完整性和发布者。 装置应用 下载notary仓库# 如果clone过慢能够应用gitclone.com 这个网站进行减速解决git clone https://github.com/theupdateframework/notary.git因为该我的项目是国外仓库,导致有局部资源无奈下载,须要做一下非凡解决,所有的dockerfile# 替换软件源 RUN apk add --update git gcc libc-dev 替换成RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories# 减少环境变量ENV GOPROXY=https://goproxy.cn,direct我的项目的证书已于2021-04-01T03:38:34Z曾经过期了须要更新证书,更新须要下载cfssl 相干组件cfssljson、cfssl-certinfo、cfsslhttps://pkg.cfssl.org/R1.2/cfssljson_linux-amd64https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64https://pkg.cfssl.org/R1.2/cfssl_linux-amd64chmod +x cfssl*mv cfssl* /usr/bin进入我的项目fixtures 目录cd fixturessh ./regenerateTestingCerts.sh更新本地证书cp ./fixtures/root-ca.crt /etc/pki/ca-trust/source/anchors/update-ca-trust启用服务端 docker-compose up -d设置环境变量 export DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE="sezg6ogsmylknht8"export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="sezg6ogsmylknht8"export DOCKER_CONTENT_TRUST_SERVER=https://127.0.0.1:4443export DOCKER_CONTENT_TRUST=1在Docker中进行镜像签名要签名一个 Docker 镜像,须要一个密钥对,其能够应用命令在本地生成(默认状况下存储在 ~/.docker/trust/ 中),也能够由来自证书机构。 本地生成$ docker trust key generate point_meGenerating key for point_me...Enter passphrase for new point_me key with ID 9deed25:Repeat passphrase for new point_me key with ID 9deed25:Successfully generated and loaded private key.应用已有$ docker trust key load key.pem --name point_meLoading key from "key.pem"...Enter passphrase for new point_me key with ID 8ae710e:Repeat passphrase for new point_me key with ID 8ae710e:Successfully imported key from key.pem接下来,咱们将公钥增加到公证服务器上。如果是第一次执行的话,须要输出一些相干信息,才能够应用。 ...

January 28, 2023 · 1 min · jiezi

关于docker:Docker-基础-3

Web 服务器与利用Nginx我的Nginx Docker镜像## 设置继承本人创立的 sshd 镜像FROM caseycui/ubuntu-sshd## 维护者LABEL maintainer="CaseyCui cuikaidong@foxmail.com"## 装置 nginxRUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \ nginx \ geoip-bin \ fcgiwrap \ ssl-cert \ && rm -rf /var/lib/apt/lists/* \ && chown -R www-data:www-data /var/lib/nginx## 增加脚本,并设置权限COPY run-nginx.sh /run-nginx.sh##RUN chmod 755 /run-nginx.sh## 定义工作目录WORKDIR /etc/nginx## 增加挂载点 /var/wwwVOLUME /var/www## forward request and error logs to docker log collectorRUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log## 定义输入端口EXPOSE 80EXPOSE 443## 定义输入命令CMD ["/run-nginx.sh"]run-nginx.sh 脚本: ...

January 26, 2023 · 6 min · jiezi

关于docker:Docker-安装-Mysql-57

查找镜像查找镜像的形式如下: [zxd@localhost seata]$ docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 13614 [OK] mariadb MariaDB Server is a high performing open sou… 5197 [OK] phpmyadmin phpMyAdmin - A web interface for MySQL and M… 713 [OK] percona Percona Server is a fork of the MySQL relati… 597 [OK] bitnami/mysql Bitnami MySQL Docker Image 80 [OK]databack/mysql-backup Back up mysql databases to... anywhere! 77 linuxserver/mysql-workbench 45 ubuntu/mysql MySQL open source fast, stable, multi-thread… 40 linuxserver/mysql A Mysql container, brought to you by LinuxSe… 38 circleci/mysql MySQL is a widely used, open-source relation… 28 google/mysql MySQL server for Google Compute Engine 22 [OK]rapidfort/mysql RapidFort optimized, hardened image for MySQL 13 bitnami/mysqld-exporter 4 ibmcom/mysql-s390x Docker image for mysql-s390x 2 vitess/mysqlctld vitess/mysqlctld 1 [OK]newrelic/mysql-plugin New Relic Plugin for monitoring MySQL databa… 1 [OK]hashicorp/mysql-portworx-demo 0 rapidfort/mysql-official RapidFort optimized, hardened image for MySQ… 0 docksal/mysql MySQL service images for Docksal - https://d… 0 mirantis/mysql 0 rapidfort/mysql8-ib RapidFort optimized, hardened image for MySQ… 0 cimg/mysql 0 eclipse/mysql Mysql 5.7, curl, rsync 0 [OK]drud/mysql 0 silintl/mysql-backup-restore Simple docker image to perform mysql backups… 0 [OK]获取镜像docker能够应用上面的命令获取镜像: ...

January 20, 2023 · 2 min · jiezi

关于docker:LinuxDocker-中搭建Redis单节点以及集群

引言搭建集群首先须要装置Docker,Linux中装置比较简单,具体能够参考[[【Docker】Linux装置Docker(极简版)]](https://segmentfault.com/a/11...)。 [[【RocketMq】RocketMq 4.9.4 Windows-docker 部署]](https://segmentfault.com/a/11...) 中提到了Windows装置Docker的一部分些细节,这里不再过多探讨,装置实现之后的Redis集群搭建同样能够参考本篇进行构建。 过来集体在Mac上搭建过一次集群,和本文的搭建思路类似。如果是Mac用户能够参考:[[M1-Mac中docker的redis集群配置]](https://segmentfault.com/a/11...) Docker拉取Redis查找和拉取Redis的命令为 docker search redis和 docker pull reids:latest(或指定其余版本),查找之后拉取指定版本的Redis到本地Docker即可。 具体的操作流程如下,这里省略了docker search redis的过程。上面是在windows的Docker操作,Linux指定成果统一: 单节点启动单节点非常简单,适宜立马上手应用学习的开发者,依照上面的命令执行: #默认拉取一个最新的redis镜像docker pull redis#在默认的6379端口上启动一个redis服务docker run --name test-redis -p 6379:6379 -d redis#进入容器外部docker exec -it test-redis /bin/bash# 连贯redisredis-cli#进入之后装置常规 ping一下即可ping自定义配置单节点Linux中能够应用上面的形式: docker run -d -p 6380:6379 -v /usr/docker/redis/myRedis/redis.conf:/etc/redis/redis.conf -v /usr/docker/redis/myRedis/data:/data --name myRedis redis redis-server /etc/redis/redis.conf在Windows版本的docker仅仅是门路配置不太一样,须要替换为指定盘符的地址。 集群搭建集群构建的步骤其实并不算特地简单,关键在于配置以及一些模版命令上须要读者自行批改。 自定义redis-net创立docker newwork 虚构网段用于redis集群节点通信应用。 此命令须要提前执行,否则后续的步骤会报错,倡议一开始立刻执行。docker network create redis-net创立redis.conf配置模版咱们须要创立一个docker/redis/目录,在新建目录内创立6个redis.conf文件。比拟笨的传统方法是一个个构建,当然这样一个个复制切实是太麻烦了,咱们寻找更快的形式,下文会进行介绍。 为了更高效的构建redis的配置,咱们通过创立模板的形式构建redis.conf模板,留神这一份配置文件格式既不能有误也不能乱写,否则整个redis构建过程是必定会出问题的,配置文件如下: 先来个简略版本的模板: port ${PORT}cluster-enabled yesprotected-mode nocluster-config-file nodes.confcluster-node-timeout 5000#对外ip,这里的ip要改为你的服务器Ip。【留神不能应用127.0.0.1】cluster-announce-ip 192.168.58.128cluster-announce-port ${PORT}cluster-announce-bus-port 1${PORT}appendonly yes如果对于模板构建纯熟,能够应用简单点的版本,具体内容如下: ...

January 19, 2023 · 4 min · jiezi

关于docker:docker-打包-php-应用

我的项目文件./├── Dockerfile├── env.php└── index.phpDockerfile #根底镜像FROM php:7.4-cli# copy 以后宿主机目录下的内容到镜像目录COPY . /apps/demo# 设置工作目录WORKDIR /apps/demo# 定义一些环境变量作为运行参数ENV APP_NAME=""ENV APP_VER="0.0.1"# 设置容器入口程序(此时的 pwd 在工作目录下)ENTRYPOINT ["php", "./index.php"]tips: 如果须要登录容器后再启动服务,能够设为启动一个 bash 会话来保障容器不退出 ENTRYPOINT ["bash", "-c", "echo welcome to docker"]反正入口程序肯定要有 会话放弃 的个性,否则容器运行完命令后就会主动退出了。 index.php <?php// loop 作为入口程序 避免容器运行完结主动退出// 生产中大都是 http、websocket、tcp 等服务while (true) { echo "hello docker" . PHP_EOL; sleep(3);}env.php <?php// 读取容器中的环境变量echo getenv("APP_NAME") . PHP_EOL;echo getenv("APP_VER") . PHP_EOL;打包镜像# 打包要养成版本号的良好习惯docker build -t php-demo:v1 .docker build -t php-demo:v2 .# 查看本地镜像docker images创立/运行容器# 应用镜像创立容器 传入环境变量docker run -it \--privileged=true \-e APP_NAME="php-demo-1" \-e APP_VER="1.0.1" \--name php-demo-1 php-demo:v1# 查看容器docker ps# 登录容器docker exec -it php-demo-1 bash# 读取环境变量php env.php文件 cp# 拷贝宿主机文件到容器docker cp tmp.php php-demo-1:/apps/demo# 拷贝容器文件到宿主机docker cp php-demo-1:/apps/demo/env.php env.php

January 19, 2023 · 1 min · jiezi

关于docker:DockerLinux安装Docker极简版

概览整个配置大抵分为上面的步骤: 查看LInux内核版本,不能太老root权限更新yum清理旧版本。更换Docker镜像地址装置Docker1. 查看Linux内核版本倡议应用centerOs 7.9 以上的版本,内核基本上能够满足Docker的需要。 [zxd@localhost ~]$ uname -r3.10.0-1160.el7.x86_642. root权限更新yum集体Linux虚拟机应用了具备sudo权限的普通用户,所以命令有些许不同。 [zxd@localhost ~]$ sudo yum -y update........如果内核的版本低于3.1,则倡议应用上面的命令降级到最新版的内核。 yum -y update:降级所有包同时也降级软件和零碎内核;yum -y upgrade:只降级所有包,不降级软件和零碎内核3. 清理旧版本如果之前Linux装置过Docker,则须要先进行卸载。 卸载旧版本(如果之前装置过的话) [zxd@localhost ~]$ sudo yum remove docker docker-common docker-selinux docker-engine[sudo] password for zxd: y[而后按回车]4. 更换Docker镜像如果Docker下载或者更新过慢,能够应用上面的镜像进行替换,第一个为地方镜像,第二个为阿里镜像。 yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repoyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo5. 装置Docker5.1 装置依赖包装置须要的软件包,能够应用 yum-util 提供yum-config-manager性能。咱们能够执行上面的命令: [zxd@localhost ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2[sudo] password for zxd: 提醒:device-mapper-persistent-data lvm2是驱动所须要的依赖5.2 抉择docker版本并装置应用上面的命令抉择适合的版本装置。 > yum list docker-ce --showduplicates | sort -r * updates: mirrors.aliyun.comThis system is not registered with an entitlement server. You can use subscription-manager to register. : managerLoading mirror speeds from cached hostfileLoaded plugins: fastestmirror, product-id, search-disabled-repos, subscription- * extras: mirrors.aliyun.comdocker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stabledocker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stabledocker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stabledocker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stabledocker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable......docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stabledocker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable这抉择了18.03.1.ce-1.el7.centos版本进行装置,具体的装置命令如下: ...

January 19, 2023 · 1 min · jiezi

关于docker:Telegram-收发微信消息-Docker-compose-一键部署2023最新版

Telegram 收发微信音讯 - Docker compose 一键部署【2023最新版】github 地址:https://github.com/zhangyile/... efb我的项目的原理是这样的: Telegram bot > EFB > 微信网页版 > 微信 应用 itchat-uos 替换了 itchat itchat-uos: https://github.com/why2lyj/It...itchat: https://github.com/littlecode...0. 环境依赖一个失常应用的 Telegram 账号一个失常应用的微信号 (微信号需实名并绑有银行卡,否则无奈登录 UOS 网页版微信)docker / docker compose (本文以 docker compose 为例,怎么装置,本人网上找教程)一台 Linux 服务器 (需与 api.telegram.org 能通信)1. Telegram 上创立机器人并获取 Token 和 ID1.1获取 Bot Token在 Telegram 里, 对 @botfather 谈话: /newbot依照要求给 Bot 取名获取 Bot Token平安起因: Token 必须窃密(这串token要记好,待会要用)容许 Bot 读取非指令信息,对 @botfather 谈话: /setprivacy, 抉择disable容许将 Bot 增加进群组,对 @botfather 谈话: /setjoingroups, 抉择enable容许 Bot 提供指令列表,对 @botfather 谈话: /setcommands, 输出以下内容 (复制以下内容一次性发给botfather) ...

January 13, 2023 · 1 min · jiezi

关于docker:debain系统下修改docker的默认路径

docker的默认门路位于 /var 中,但往往 /var 门路的容量并不大,一旦docker的镜像、层等稍等大一些,便有把 /var 写满的危险。 本文给出一种迁徙docker默认门路的办法. 批改配置文件假如新的docker目录咱们设置为/home/docker。 批改前咱们先备份一下: panjie@debian-docker-pro:/lib/systemd/system$ sudo cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak批改/lib/systemd/system/docker.service 中的ExecStart=/usr/bin/dockerd -H fd://...为ExecStart=/usr/bin/dockerd -g /home/docker -H fd:// 以下是比照信息; panjie@debian-docker-pro:/home$ diff -uP -N /lib/systemd/system/docker.service.bak /lib/systemd/system/docker.service--- /lib/systemd/system/docker.service.bak 2023-01-11 16:00:45.071017829 +0800+++ /lib/systemd/system/docker.service 2023-01-11 16:03:42.330635006 +0800@@ -10,7 +10,7 @@ # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker-ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock+ExecStart=/usr/bin/dockerd -g /home/docker -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2进行服务进行所有的正在运行的docker容器后,咱们开始进行docker服务 ...

January 11, 2023 · 1 min · jiezi

关于docker:记一次部署在docker环境项目发送邮件出现No-appropriate-protocol

前言部门有个我的项目波及到邮件发送,发送性能在本地测试能够胜利发送,然而打包部署到docker环境中,却呈现 No appropriate protocol (protocol is disabled or cipher suites are inappropriate)前面在网上搜寻了一下,查到了这篇文章 https://stackoverflow.com/questions/67742776/docker-container-error-javax-mail-messagingexception-no-appropriate-protocol 这篇文章有个答主提到,他应用的版本的jdk 8u292,这个版本曾经禁用了不平安的TLSv1&TLSv1.1,于是我就查了一下咱们部署的docker根底镜像jdk版本,为jdk8u332。前面再搜寻了一下解决方案,大部分的解决方案都是通过批改java.security文件中的jdk.tls.disabledAlgorithms配置,删除掉TLSv1&TLSv1.1来解决 然而这种计划给我的感觉,有那么点欠妥。毕竟jdk禁用TLSv1&TLSv1.1应该是通过考量的。所以一开始我就先把这个计划作为其余计划都无奈解决的时候,最终兜底计划。上面就来回顾 一下,我的解决历程 解决历程计划一:将mail.smtp.ssl.protocols配置为TLSv1.2但改完后,报了如下异样 The server selected protocol version TLS10 is not accepted by client preferences [TLS12]因为server端反对的TLSv1.0,因而没招,mail.smtp.ssl.protocols就不能改为TLSv1.2 计划二:将javax.mail的包换成com.sun.mail <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>该计划是起源如下博文https://blog.csdn.net/qq_33601179/article/details/123069499他通过调整mail的gav解决,但我通过试验,发现该计划并没解决我的问题,依然会报 No appropriate protocol (protocol is disabled or cipher suites are inappropriate)计划三:进入docker容器外部,批改java.security文件中的jdk.tls.disabledAlgorithms配置,删除掉TLSv1&TLSv1.1网上查了材料,大多数都是通过宿主机去批改java.security,通过docker去批改,基本上没看到。 不过咱们能够通过进入容器docker外部,进行批改。但要批改java.security,首先就得晓得java.security文件的地位。不同的根底镜像,java.security文件的地位可能是不一样的。 那如何晓得java.security的具体位置呢? 这边提供一个思路,如果是自制的根底镜像,能够去问公司自制这个镜像的作者,如果是私有的镜像,能够通过docker hub,比方咱们这个我的项目的镜像是用到skywalking-java-agent:8.11.0-java8,因而咱们就能够去docker hub,搜寻该镜像,而后点开详情,外面有的会有IMAGE LAYERS由这个就能够晓得java的根本门路,而后进入容器外部 咱们就能够通过vim命令去批改java.security文件内容,不过失常批改的时候,要装下vim apt-get updateapt-get install vim批改完重启一下容器,而后通过拜访 ip:端口/actuator/health,前提要引入actuator <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>并配置 endpoint: health: show-details: always查看mail的衰弱状态或者能够间接发送测试邮件,验证也能够 ...

January 10, 2023 · 1 min · jiezi

关于docker:xxljob-docker-compose-deploy

xxljob docker compose deploy: could not create connection to database serverdocker-compose.yaml file version: '2'services: xxl-job: container_name: xxl-job image: xuxueli/xxl-job-admin:2.3.1 ports: - 8080:8080 links: - mysql depends_on: - mysql environment: PARAMS: '--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root --xxl.job.accessToken=dasj2nd81jf9asjdkl5jk234' networks: - xxl_job_net mysql: container_name: mysql image: mysql restart: always ports: - 13306:3306 volumes: - .:/docker-entrypoint-initdb.d command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: xxl_job networks: - xxl_job_netnetworks: xxl_job_net: driver: bridge>>> docker compose upCould not create connection to database server ...

January 9, 2023 · 1 min · jiezi

关于docker:minikube-因为互联网长城无法启动-ingressnginx-解决方案

应用 aliyun 镜像就好了 ─➤ minikube start --driver=docker --kubernetes-version=v1.23.9 --image-mirror-country cn --registry-mirror=https://hz4anb2p.mirror.aliyuncs.com Ubuntu 22.04 上的 minikube v1.28.0✨ 依据用户配置应用 docker 驱动程序✅ 正在应用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers Using Docker driver with root privileges Starting control plane node minikube in cluster minikube Pulling base image ... > registry.cn-hangzhou.aliyun...: 386.27 MiB / 386.27 MiB 100.00% 6.29 Mi > registry.cn-hangzhou.aliyun...: 0 B [_____________________] ?% ? p/s 40s Creating docker container (CPUs=2, Memory=6900MB) ... > kubelet.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s > kubectl.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s > kubeadm.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s > kubeadm: 43.13 MiB / 43.13 MiB [-------------] 100.00% 5.93 MiB p/s 7.5s > kubectl: 44.44 MiB / 44.44 MiB [--------------] 100.00% 4.17 MiB p/s 11s > kubelet: 118.43 MiB / 118.43 MiB [------------] 100.00% 6.22 MiB p/s 19s ▪ Generating certificates and keys ... ▪ Booting up control plane ... ▪ Configuring RBAC rules ... Verifying Kubernetes components... ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5 Enabled addons: storage-provisioner, default-storageclass Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default这个时候在启动 ingress 就无比顺畅了 ...

January 1, 2023 · 2 min · jiezi

关于docker:ubuntu-docker无法启动-minikube

解决办法: minikube delete --all --purge minikube start --driver=docker --kubernetes-version=v1.23.9 参考文章: minikube start #14523

December 27, 2022 · 1 min · jiezi

关于docker:docker部署storm

docker部署stormdocker run -d --restart always --name some-zookeeper zookeeperdocker run -d --restart always --name some-nimbus --link some-zookeeper:zookeeper storm storm nimbusdocker run -d --restart always --name supervisor --link some-zookeeper:zookeeper --link some-nimbus:nimbus storm storm supervisordocker run -d -p 8887:8080 --restart always --name ui --link some-nimbus:nimbus storm storm ui拜访 http://192.168.2.214:8887 提交topology集群 官网写的 docker run --link some-nimbus:nimbus -it --rm -v $(pwd)/topology.jar:/topology.jar storm storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology试了官网的形式 报错 Error: Could not find or load main class com.liang.netcar.charging.StormStart ...

December 25, 2022 · 1 min · jiezi

关于docker:ubuntu-使用aliyun镜像安装-docker

ubuntu正告:切勿在没有配置 Docker APT 源的状况下间接应用 apt 命令装置 Docker.筹备工作卸载旧版本旧版本的 Docker 称为 docker 或者 docker-engine,应用以下命令卸载旧版本: sudo apt-get remove docker docker-engine docker.io应用 APT 装置因为 apt 源应用 HTTPS 以确保软件下载过程中不被篡改。因而,咱们首先须要增加应用 HTTPS 传输的软件包以及 CA 证书。 sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release鉴于国内网络问题,强烈建议应用国内源,官网源请在正文中查看。 为了确认所下载软件包的合法性,须要增加软件源的 GPG 密钥。 tsinghua curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg而后,咱们须要向 sources.list 中增加 Docker 软件源: tsinghua echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null以上命令会增加稳固版本的 Docker APT 源,如果须要测试版本的 Docker 请将 stable 改为 test。装置 Docker更新 apt 软件包缓存,并装置 docker-ce。 ...

December 23, 2022 · 2 min · jiezi

关于docker:jenkinsdocker进行微服务部署

1、jenkins配置因为公司应用的是外部网络,没有关上互联网,所以在进行jenkins构建的时候,没法下载对应插件,刚开始应用镜像的形式制作了jenkins镜像,然而jenkins镜像外部又短少maven等插件,弄了许久还是须要下载插件;感觉有些麻烦,前面间接用之前外网的一个jenkins进行代替即可。jenkins配置次要蕴含2局部:1、jenkins的环境变量配置及jenkins启动war包 2、jenkins对应的插件及命名空间配置。 1.1、jenkins设置环境变量在咱们装置jenkins之前,须要晓得对于Jenkins怎么存储数据。事实上,不论你的Jenkins的war包村建寄存在哪里,jenkins都会把其所有重要数据寄存在一个专门用户、隔离的、成为Jenkins主目录的目录下。在这里,Jenkins存储对于构建服务器配置信息、构建作业、构建产物和其余有用的信息,当然包含你装置了任何插件。这个目录会耗费大量磁盘空间。默认状况下,Jenkins主目录被称为.jenkins,会被放在你的以后用户主目录下。例如,如果你再window7下运行一个机器,且用户名是"tom",主目录会在:c:\Users\tom.jenkins下,在linux下,主目录可能在:.home/tom/.jenkins等。 你能够应用定义JENKINS_HOME环境变量来强行使jenkins应用一个不同目录作为其主目录。咱们个别通过编写一个shell脚本实现,比方以下:主目录:/data/jenkins/data 配置环境变量:/etc/profile export JAVA_HOME=/root/software/jdk1.8.0_192CLASSPATH=.:$JAVA_HOME/lib/export JENKINS_BASE=/data/jenkinsexport JENKINS_HOME=/data/jenkins/dataexport PATH=$PATH:$JENKINS_BASE:$JENKINS_HOME:$JAVA_HOME/bin1.2、插件拷贝到JENKINS_HOME将另一个曾经装置好插件的机器上的JENKINS_HOME下的除workspace文件拷贝到以后机器的JENKINS_HOME下。 1.3、启动程序将jenkins.war也拷贝到此目录下,总体目录构造及文件如下: 对应启动脚本如下:jenkins_start.sh #!/bin/bashnohup java -jar jenkins.war --httpPort=8008 >jenkins.out 2>&1 &1.4、零碎拜访零碎输出: http://ip:8008零碎拜访失常: 2、jenkins+docker进行微服务后端构建2.1、镜像制作镜像打包制作的话,个别咱们有两种形式。形式一:应用Maven插件为SpringBoot利用构建Docker镜像。这种状况次要是在pom.xml文件中增加maven的docker镜像打包依赖:在利用的pom.xml文件中增加docker-maven-plugin的依赖: <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.1.0</version> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <imageName>mall-tiny/${project.artifactId}:${project.version}</imageName> <dockerHost>http://192.168.3.101:2375</dockerHost> <baseImage>java:8</baseImage> <entryPoint>["java", "-jar","/${project.build.finalName}.jar"] </entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration></plugin>相干配置阐明: executions.execution.phase:此处配置了在maven打包利用时构建docker镜像;imageName:用于指定镜像名称,mall-tiny是仓库名称,${project.artifactId}为镜像名称,${project.version}为仓库名称;dockerHost:打包后上传到的docker服务器地址;baseImage:该利用所依赖的根底镜像,此处为java;entryPoint:docker容器启动时执行的命令;resources.resource.targetPath:将打包后的资源文件复制到该目录;resources.resource.directory:须要复制的文件所在目录,maven打包的利用jar包保留在target目录上面;resources.resource.include:须要复制的文件,打包好的利用jar包。 另一种形式是通过构建shell脚本通过jenkins配置在服务器上打镜像。在此应用第二种形式,以网管为例,次要包含Dockerfile跟对应的构建脚本.sh文件。 2Dockerfile咱们以微服务中的网关为例: Dockerfile如下: FROM cytomine/java8:latest# 筹备环境ENV LANGUAGE=zh_CN.UTF-8ENV TZ=Asia/ShanghaiRUN mkdir /apps/WORKDIR /apps/ADD target/gtc-gateway-2.3.0.jar app.jarENTRYPOINT ["java","-jar","app.jar"]构建脚本对应的网关的脚本如下: #!/usr/bin/env bashapp_name='gtc-gateway'images_name='gtc-gateway:1.0'echo '----WORKSPACE----'echo ${WORKSPACE}cd ${app_name}# 启动容器docker stop ${app_name}echo '----stop container----'docker rm ${app_name}echo '----rm container----'docker rmi `docker images | grep ${app_name} | awk '{print $3}'`echo '----rm none images----'docker build -t ${images_name} .echo '----build images----'docker run -p 30080:8080 --name ${app_name} -d ${images_name}echo '----start container----'对应的地位Dokcerfile跟构建脚本在同一目录下,便于咱们前面通过jenkins的脚本来构建利用。 ...

December 19, 2022 · 2 min · jiezi

关于docker:如何使用-Dockerfile-构建-Docker-镜像

在 docker hub 有成千上万的 docker 镜像,咱们能够轻松的应用这些镜像构建容器。但在某些状况和用例中,咱们心愿在 docker 镜像中进行一些配置或更改,而这些更改应该在咱们运行容器时呈现。这能够通过应用 Dockerfile 构建 docker 镜像来实现。 Dockerfile 是一个文本文件,其中蕴含关键字和一组 Linux 命令,当咱们构建 Docker Image 时,这些命令会主动执行。应用 Dockerfile 创立 docker 镜像相似于虚拟化世界的模板概念。 在这篇文章中,咱们将介绍如何从 Dockerfile 逐渐构建 docker 镜像。让咱们假如咱们想要构建 Jboss EAP docker 镜像。上面列出了一些通常在 Dockerfile 中应用的关键字 FROMFROM 关键字指定将用于构建 Docker 镜像的根底镜像名称,Docker 命令将在本地搜寻该映像,如果在本地注册表中没有找到,那么它将尝试从 Docker hub 注册表中获取它。 Example: FROM jboss-eap:7MAINTAINERMAINTAINER 关键字指定了保护 Docker 镜像的社区或所有者的名称。 Example: MAINTAINER Linuxtechi Team <info@linuxtechi.com>RUN在创立 Docker 镜像时,将执行 RUN 关键字前面提到的命令 Example : RUN apt-get updateRUN apt-get install apache2 -yRUN echo 'Web site Hosted inside a container' > /var/ww/html/index.htmlRUN echo 'apache2ctl start' >> /root/.bashrcWORKDIRWORKDIR 用于定义容器的工作目录,用于执行 COPY、ADD、RUN、CMD 和 ENTRYPOINT 指令。 ...

December 19, 2022 · 2 min · jiezi

关于docker:Y-分钟速成-docker

源代码下载: docker-cn.bat :: 下载、装置、运行 hello-world 镜像(image)docker run hello-world:: :: 如果这是第一次运行,你应该能见到这些信息:: Unable to find image 'hello-world:latest' locally # 在本地找不到镜像xxx:: latest: Pulling from library/hello-world:: 1b930d010525: Pull complete:: Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064:: Status: Downloaded newer image for hello-world:latest:::: Hello from Docker! # 来自Docker的欢送:: This message shows that your installation appears to be working correctly. # 此信息表明你的装置仿佛胜利了:::: To generate this message, Docker took the following steps: # Docker进行了如下步骤来产生此信息:: 1. The Docker client contacted the Docker daemon. # Docker客户端分割Docker守护程序:: 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. # Docker守护程序从Docker Hub拉取镜像:: (amd64):: 3. The Docker daemon created a new container from that image which runs the # Docker守护程序从镜像中创立了一个容器:: executable that produces the output you are currently reading. # 运行了产生你正在读的输入的可执行文件:: 4. The Docker daemon streamed that output to the Docker client, which sent it # Docker守护程序把输入流式传输给Docker客户端,后者发送到你的终端上:: to your terminal.:::: To try something more ambitious, you can run an Ubuntu container with: # 若要尝试更弱小的货色,你能够用该命令运行Ubuntu容器:: $ docker run -it ubuntu bash:::: Share images, automate workflows, and more with a free Docker ID: # 应用收费的Docker ID来分享镜像,自动化工作流等:: https://hub.docker.com/:::: For more examples and ideas, visit: # 欲获取更多例子和想法,拜访:: https://docs.docker.com/get-started/:: 当初来看看以后正运行的镜像docker ps:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: 看看之前运行过的镜像docker ps -a:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: 4a76281f9c53 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago:: happy_poincare:: 名字(name)是主动生成的,因而它会和你的不同:: 移除(remove)咱们之前生成的镜像docker rm happy_poincare:: 测试是否真的删除了docker ps -a:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: 为容器(container)指定自定义名字docker run --name test_container hello-world:: Hello from Docker!:: This message shows that your installation appears to be working correctly.:::: To generate this message, Docker took the following steps::: 1. The Docker client contacted the Docker daemon.:: 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.:: (amd64):: 3. The Docker daemon created a new container from that image which runs the:: executable that produces the output you are currently reading.:: 4. The Docker daemon streamed that output to the Docker client, which sent it:: to your terminal.:::: To try something more ambitious, you can run an Ubuntu container with::: $ docker run -it ubuntu bash:::: Share images, automate workflows, and more with a free Docker ID::: https://hub.docker.com/:::: For more examples and ideas, visit::: https://docs.docker.com/get-started/docker ps -a:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: d345fe1a4f41 hello-world "/hello" About a minute ago Exited (0) About a minute ago:: test_container:: 如你所见,名字当初是咱们指定的了:: 从命名过的容器中获取日志(logs)docker logs test_container:: Hello from Docker!:: This message shows that your installation appears to be working correctly.:::: To generate this message, Docker took the following steps::: 1. The Docker client contacted the Docker daemon.:: 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.:: (amd64):: 3. The Docker daemon created a new container from that image which runs the:: executable that produces the output you are currently reading.:: 4. The Docker daemon streamed that output to the Docker client, which sent it:: to your terminal.:::: To try something more ambitious, you can run an Ubuntu container with::: $ docker run -it ubuntu bash:::: Share images, automate workflows, and more with a free Docker ID::: https://hub.docker.com/:::: For more examples and ideas, visit::: https://docs.docker.com/get-started/docker rm test_containerdocker run ubuntu:: Unable to find image 'ubuntu:latest' locally:: latest: Pulling from library/ubuntu:: 2746a4a261c9: Pull complete:: 4c1d20cdee96: Pull complete 0d3160e1d0de: Pull complete c8e37668deea: Pull complete Digest: sha256:250cc6f3f3ffc5cdaa9d8f4946ac79821aafb4d3afc93928f0de9336eba21aa4:: Status: Downloaded newer image for ubuntu:latestdocker ps -a:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: c19e9e5b000a ubuntu "/bin/bash" 5 seconds ago Exited (0) 4 seconds ago:: relaxed_nobel:: 在交互模式(interactive mode)下运行容器docker run -it ubuntu:: root@e2cac48323d2:/# uname:: Linux:: root@e2cac48323d2:/# exit:: exitdocker rm relaxed_nobeldocker ps -a:: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS:: NAMES:: e2cac48323d2 ubuntu "/bin/bash" 2 minutes ago Exited (0) About a minute ago:: nifty_goldwasserdocker rm nifty_goldwasser有倡议?或者发现什么谬误?在Github上开一个 issue ,或者发动 pull request ! ...

December 17, 2022 · 3 min · jiezi

关于docker:Docker安装及Docker私有仓库部署流程

Docker装置及Docker公有仓库部署流程docker装置此文档是基于Centos7操作。用户为root。零碎内核须要3.8或更高版本 //查看内核$ uname -a //装置docker,此脚本会查看内核并装置$ curl -fsSL https://get.docker.com/ | sh //启动服务$ systemctl start docker //查看版本$ docker --version 部署公有仓库镜像在私有仓库dockerhub拉取推送十分慢,而且把我的项目的镜像放在公网很不平安,在局域网内搭建公有仓库平安快捷。 docker registry server分为2个版本,第一版是python写成的,第二版是go写的。 本文档基于go版本,须要docker version 1.6以上。 //查看镜像$ docker images//删除镜像 -f示意强制删除$ docker rmi -f 镜像id//运行基于容器的registry. registry:2镜像不存在时 会去dockerhub下面下载镜像并运行。--restart 设置为always,无论容器的退出代码是什么,Docker都会重启该容器, 设置为on-failure时 只有当容器的退出代码为非0时才会重启,如--restart=on-failure:5示意最多重启5次$ docker run -d -p 5000:5000 --restart=always --name registry registry:2 //默认的registry data是存储在容器docker volume中的,如果registry进行volume是会被删除的//把data共享进去到宿主机目录/data下$ docker run -d -p 5000:5000 --restart=always --name registry -v /data:/var/lib/registry registry:2 //获取容器日志 与tail -f 相似$ docker logs centos_d_container -f//来查看以后零碎中正在运行的容器列表$ docker ps //命令会列出所有的容器$ docker ps -a //进行容器 start restart$ docker stop registry (容器名或容器id)//删除容器$ docker rm registry (容器名或容器id)//删除全副容器$ docker rm `docker ps -a -q`//当初测试下公有仓库//下载ubuntu镜像$ docker pull ubuntu //打tag 将ubuntu取名为192.168.1.182:5000/ubuntu 不写tag默认为latest$ docker tag ubuntu 192.168.1.182:5000/ubuntu //推送到公有仓库$ docker push 192.168.1.182:5000/ubuntu //查看//能够间接在宿主机共享目录 查到ubuntu$ ll /data/docker/registry/v2/repositories///应用API查看$ curl https://192.168.1.182:5000/v2/_catalog 客户端应用公有仓库先装置好Docker 请看上文 ...

December 15, 2022 · 3 min · jiezi

关于docker:为什么我们提供了新的公共镜像库

家喻户晓,建木在我的项目初期就曾经实现了“自举”,就是应用建木实现本身的全副CI/CD/CO等自动化流程。另外,因为建木自身和官网反对的节点都是打包为镜像公布到Docker Hub上,后果最近半年咱们频繁碰到如下场景。 场景一“CI服务的镜像构建步骤又失败了!曾经重试10次了!!” “什么起因?” “原始镜像死活下载不下来啊!” “为什么不必国内的mirror?” “用了啊!用了反而更慢了!!” 场景二“新利用明天部署不了啦!” “why?” “明天从Docker Hub下载太频繁,曾经触发了Rate limit。6个小时之后再试吧!” “……” 以上场景并非只有建木会碰到,大部分在国内应用容器镜像的集体或组织都会碰到。尽管能够用各种形式绕过,但体验十分之差。因而,咱们查看了一下根本原因。 起因剖析-为啥间接从Docker Hub下载会失败?因为Docker Hub与Github等服务一样宽泛应用了S3和CDN等服务,因而当下载申请被指向某些因为不可知起因而无法访问的网段时,会呈现无奈连贯的状况。 -为啥用国内的Mirror也不行?国内某些大厂提供的Mirror实质上是个缓存服务,因而当咱们拉取的镜像不是罕用镜像或因为缓存过期曾经被革除时,Mirror会从新从Docker Hub拉取镜像创立缓存,而后再响应下载申请。所以会用户会感觉比间接从Docker Hub下载的速度还要慢…… -从Mirror下载的镜像内容未更新某些Mirror会连镜像的“Image Manifest/index”文件一起缓存,导致用户曾经更新了Docker Hub上的镜像,但Mirror并未更新。 解决方案基于以上起因,咱们须要一个能够在国内工作良好的新的公共镜像库。因而,咱们曾经在已有的建木Hub根底上,新增了OCI镜像库的服务模块,并且提供了从代码库中的Dockerfile主动构建镜像的性能(主动构建能力由建木提供)。留神:是镜像库,不是Mirror 与之前一样,建木本身的镜像发布会先迁徙到本人的镜像库里。同时也为国内用户提供一个代替计划。与Docker Hub一样,用户的公共仓库数量不限,永恒收费。 目前服务还处于公测期间,性能还在陆续迭代中。如果你的我的项目与咱们相似,也须要一个公共仓库公布给国内用户,无妨来试试! 镜像服务体验链接:https://url.dghub.cn/mpmavj 也欢送各位小伙伴给咱们提出意见反馈,微信扫码退出用户群~

November 29, 2022 · 1 min · jiezi

关于docker:容器安全docker-使用普通用户运行程序

先贴出我的 Dockerfile FROM python:3.10-busterRUN (echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list) && (apt-get update) && (apt-get install -y vim netcat telnet)RUN /usr/local/bin/python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simpleRUN mkdir /codeWORKDIR /codeCOPY requirements-prd.txt /code/RUN pip install -i https://mirrors.aliyun.com/pypi/simple -r requirements-prd.txtCOPY config.yaml /code/ADD . /code/RUN groupadd -r ponponon && useradd -r -g ponponon ponpononUSER ponponon关键在于最初两行 先来看看倒数第二行: groupadd -r ponponon 创立用户组 ponpononuseradd -r -g ponponon ponponon 创立用户 ponponon,并增加到 ponponon 组中最初一行就是指定 CMD 由那个用户运行 ...

November 29, 2022 · 1 min · jiezi

关于docker:使用-docker-构建镜像文件

应用 docker 构建镜像文件的办法应用 docker 构建镜像文件,实现一次构建处处应用,从而缩小开发难度。本文应用 web动态文件 与 vue开发文件 为例,应用 Dockerfile 构建docker镜像。@[toc] 1. Dockerfile 文件中相干指令Dockerfile 是一个用来构建镜像的文本文件,文本内容蕴含了一条条构建镜像所需的指令和阐明。 相干指令含意: FROM:镜像的根底零碎环境格局:FROM nginx 或 FROM node:latest RUN:用于执行前面跟着的命令行命令有两种格局:RUN <命令>RUN ["可执行文件","参数1","参数2"] COPY :复制指令,从上下文目录中复制文件或者目录到容器里指定门路。有两种格局:COPY <原门路> <指标门路>COPY ["<原门路>", "<指标门路>"] <指标门路>:容器内的指定门路,该门路不必当时建好,门路不存在的话,会主动创立。ADD:ADD 指令和 COPY 的应用格局相似(同样需要下,官网举荐应用 COPY),性能也相似。CMD:为启动的容器指定默认要运行的程序,程序运行完结,容器也就完结。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所笼罩。相似于 RUN 指令,用于运行程序,但二者运行的工夫点不同: RUN 是在 docker build 时运行的CMD 是在 docker run 时运行的留神:如果 Dockerfile 中如果存在多个 CMD 指令,仅最初一个失效。格局:CMD <命令>CMD ["可执行文件","参数1","参数2"] ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就能够应用这个环境变量。格局:ENV <key> <value>ENV <key1>=<value1> <key2>=<value2> 若设置 NODE_VERSION = 7.2.0 , 在后续的指令中能够通过 $NODE_VERSION 援用EXPOSE: 仅仅只是申明端口帮忙镜像使用者了解这个镜像服务的守护端口,以不便配置映射。运行时应用随机端口映射时,也就是 docker run -P 时,会主动随机映射 EXPOSE 的端口。WORKDIR:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。当前各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建设目录。docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创立的目录才会始终存在。 ...

November 28, 2022 · 2 min · jiezi

关于docker:聊聊-Docker-的存储驱动-Overlay2

大家好,我是张晋涛。 上周在我的交换群里有个小伙伴问到了 Overlay2 相干的问题,这篇就来介绍一下。 本节,我将为你介绍 Docker 当初举荐应用的存储驱动 Overlay2,在开始之前,你能够执行以下命令来查看 Docker 正在应用的存储驱动: (MoeLove) ➜ ~ docker info --format '{{.Driver}}' overlay2如果你看到的后果也是 overlay2 阐明你的 Docker 曾经在应用 overlay2 存储驱动了。我在集体工作站上用的是 btrfs,这是因为自从 Fedora 33 开始,btrfs 就成为了 Fedora 默认的文件系统。不过服务器上就都是 overlay2 了。 你也可能会看到其余不同的后果,能够在启动 docker daemon 的时候,通过 --storage-driver 参数进行指定,也能够在 /etc/docker/daemon.json 文件中通过 storage-driver 字段进行配置。 目前对于 Docker 最新版本而言,你有以下几种存储驱动可供选择: overlay2fuse-overlayfsbtrfszfsaufsoverlaydevicemappervfs但它们对于你应用的文件系统之类的都有不同的要求,且实现形式也不尽相同。我以本节的重点 overlay2 存储驱动为例,它须要你应用 Linux 4.x 以上版本的内核,或者是对于 RHEL/CentOS 等须要应用 3.10.0-514 以上的内核(旧版本中存在一些兼容性问题,我在之前的文章中有提到过)。 同时,它反对你应用 ext4 的文件系统,或者减少了 ftype=1 的 xfs 文件系统。能够通过 docker info 进行失去文件系统相干的信息。 # 省略了局部输入(MoeLove) ➜ ~ docker info Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true存储驱动的作用后面尽管曾经聊了如何设置和查看以后在用的存储驱动,但尚未介绍为何肯定要应用存储驱动,以及它的作用。 ...

November 28, 2022 · 3 min · jiezi

关于docker:docker下进行mysql主从配置实现thinkphp读写分离

写在后面在上篇 docker环境下搭建PHP网站,实现nginx负载平衡和mysql主从配置中咱们应用docker搭建了1台负载均衡器,2个web服务器和两个主、从数据库服务器 实现了nginx负载平衡拜访网站web服务器 接下来咱们看一下如何进行mysql数据库主从配置和读写拆散,数据库服务器的搭建局部请看上篇 mysql主从配置批改主数据库服务器配置文件 sudo vim /data/mysql/mysql_master/conf.d/docker.cnf写入内容 [mysqld]server-id = 1log-bin=master-binlog-bin-index=master-bin.index批改从数据库服务器配置文件 sudo vim /data/mysql/mysql_salve/conf.d/docker.cnf写入内容 [mysqld]server-id = 2relay-log-index=slave-relay-bin.indexrelay-log=slave-relay-bin批改实现之后,进行容器重启docker restart mysql_master mysql_salve 在master数据库(主库)中创立同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。 create user 'myslave'@'%' identified by '123456';grant all privileges on *.* to 'myslave'@'%' with grant option;mysql -u myslave -p123456 -h 192.168.0.111 -P8114 --get-server-public-keymysql登陆之后输出命令show master status;获取如下两个参数 获取到之后来到从数据库服务器操作 change master to master_host='192.168.0.111',master_port=8114, master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=157;start slave;此处的参数来自主数据库服务器指出来的参数 实现之后输出show slave status\G 留神没有; 进行查看是否胜利 此处为yes即代表胜利配置 接下来咱们进行测试,首先在主数据库服务器创立一个数据库create database test_1;创立胜利起初到从数据库服务器,查看是否进行了数据复制 能够看到,实现了从主库到从库的数据同步 读写拆散实现了主从配置后就能够进行读写拆散操作了以thinkphp5为例 批改.env文件database.php 配置文件 ...

November 24, 2022 · 1 min · jiezi

关于docker:dockerce-阿里镜像源内网版本

参考:官网镜像减速

November 24, 2022 · 1 min · jiezi

关于docker:webssh

我的项目地位https://github.com/huashengdu... 下载文件后装置 docker-composecd ~/websshdocker-compose up -d上传到 我的镜像仓库registry.cn-hangzhou.aliyuncs.com/mkmk/alldocker tag webssh_web registry.cn-hangzhou.aliyuncs.com/mkmk/all:websshdocker-composeversion: '3'services: webssh: image: registry.cn-hangzhou.aliyuncs.com/mkmk/all:webssh restart: always ports: - "58888:8888"registry.cn-hangzhou.aliyuncs.com/mkmk/all:webssh

November 23, 2022 · 1 min · jiezi