Docker
Docker
micromicrofat
Python | Go | Deep Learning
展开
-
【Docker】容器获取宿主机IP和MAC
【代码】容器获取宿主机IP和MAC。原创 2023-03-22 17:38:50 · 1672 阅读 · 0 评论 -
【运维】解决容器中supervisord无法获取宿主机环境变量的问题
dockerfile构建镜像docker-compose运行容器supervisor进程管理部署过程中,想通过在宿主机上设置环境变量,容器获取宿主机的环境变量,服务使用环境变量启动首先想到的是通过docker-compose.yml文件中的environment标签,将宿主机的环境变量传入容器中结果也确实传入容器中了,但supervisor启动的服务并没有获取到环境变量这是因为参考:https://supervisord.readthedocs.io/en/latest/subprocess.htm原创 2022-07-13 10:36:06 · 1354 阅读 · 0 评论 -
【Docker】解决docker-compose启动的容器一直处于restarting状态的问题
通过如下的文件启动容器后status一直处于Restarting且执行如下命令报错:改成如下后解决参考:https://stackoverflow.com/a/63990209原创 2022-07-12 11:55:58 · 9314 阅读 · 0 评论 -
【MongoDB运维】为副本集添加索引
服务器运维小伙伴说服务器CPU资源告警, 让我查一下问题原因mongo0容器长期占用过高CPU资源近期接口被调用频繁, TPH约7000, 而接口代码中使用{‘data_id’: data_id}为filter updateOne文档, 而data_id没有索引, 导致检索效率低为data_id创建索引我们知道mongoDB创建索引只需要执行但我这里是副本集, 需要在每个节点上创建索引, 而且接口要始终保持在线.undefinedDocker: 20.10.17一主一从一投票10.11.206.4 :原创 2022-06-16 15:35:58 · 365 阅读 · 0 评论 -
【Docker Swarm】删除worker节点
运行环境:Docker: 20.10.17OS: CentOS Linux release 7.9.2009 (Core)在manager节点上执行:在worker节点上执行:在manager节点上执行:原创 2022-06-16 08:29:22 · 880 阅读 · 0 评论 -
【Docker 运维】Docker迁移至新磁盘
将Docker整体迁移至新磁盘服务器运维小伙伴今天通知我说服务器磁盘快满了, 我上去df -h一下发现好嘛, 直接干到99了, 我问了运维小伙伴能不能扩容后, 对方直接说本来就有第二个磁盘, 是我没挂载…略把该磁盘挂载然后把Docker迁移上去就好了磁盘分区格式化为ext4将磁盘挂载到指定目录开机自动挂载目录迁移Docker暂停Docker迁移数据修改配置文件中的目录地址加载配置并重启Docker查看是否生效重启Docker参考:https://www原创 2022-06-13 12:29:44 · 4079 阅读 · 0 评论 -
【Docker】Dockerfile中的双箭头<<、星号*、&号都是什么意思
今天在看别人写的Dockerfile的时候,发现里面有很多之前没见过的符号原来是自己无知了,这个是yaml的语法,&用来创建锚点,*用来引用锚点,<<用来合并引用参考:https://www.ruanyifeng.com/blog/2016/07/yaml.html#:~:text=n%3C/p%3E%5Cn%27%20%7D-,%E4%B8%83%E3%80%81%E5%BC%95%E7%94%A8,-%E9%94%9A%E7%82%B9https://stackoverf原创 2022-01-14 11:50:51 · 959 阅读 · 0 评论 -
解决docker nginx无法查看日志的问题
我们知道,Nginx的日志默认存放在/var/log/nginx/access.log/var/log/nginx/error.log但在使用nginx镜像构建的容器时,出现无法查看日志的问题:用cat命令后无反应通过如下命令可以看到,文件被重定向到标准输出和标准错误>>> ls -la /var/log/nginx/lrwxrwxrwx 1 root root 11 Sep 9 18:26 access.log -> /dev/s原创 2021-09-14 11:59:23 · 8924 阅读 · 0 评论 -
树莓派容器中aplay没有声音的解决方案
>>> docker run -v /dev:/dev --priviledged ...进去后安装alsa-utils才能使用aplay>>> aplay -f cd -c 1 -r 16000 demo.pcm 但发现并没有声音但确实可以获取到声卡>>> aplay -l**** List of PLAYBACK Hardware Devices ****card 0: b1 [bcm2835 HDMI 1], device 0:原创 2021-08-05 17:36:06 · 1968 阅读 · 0 评论 -
树莓派docker容器中apt无法update的解决办法
今天在树莓派上用Dockerfile构建镜像时出现apt无法update的问题... ---> Running in 05393fa6f242Get:1 http://ports.ubuntu.com/ubuntu-ports focal InRelease [265 kB]Get:2 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease [114 kB]Err:1 http://ports.ubuntu.com/ubunt原创 2021-07-20 17:19:13 · 1845 阅读 · 1 评论 -
docker-compose中加入已存在的网络并设置ip地址
今天六一儿童节,昨天新闻报道称要开放三胎,要逐步延迟退休…假设你已经有一个容器在运行nginx,而现在你有一个新的服务app要加入nginx所在的网络nginx-proxy中,并设置ip地址,以便进行反向代理,那么新服务的docker-compose文件可以这么写:version: '3'services: app: image: app container_name: app networks: nginx-proxy: ipv4_add.原创 2021-06-01 22:38:37 · 2964 阅读 · 0 评论 -
基于Docker的ELK、Elastic APM部署
之前为了监控服务,部署了sentry,仅通过几行代码就将Flask的异常实时上传至sentry中,非常方便。但毕竟只是对异常进行了一个收集,其他粒度的信息则无法采集分析,这方面ELK以及新出的Elastic APM就非常合适,Elastic APM通过和sentry类似的低侵入性代码埋点方式,对Flask框架的服务进行性能监控,采集的指标非常详细,而且也能自定义指标。官方支持使用docker方式部署,但我一直没有部署成功。但通过一个热心网友的项目成功部署了,部署的是单机版,如果像部署集群,也是支持的,甚原创 2021-04-29 11:20:09 · 725 阅读 · 0 评论 -
【MongoDB】基于Docker的MongoDB replica set(副本集)搭建
最近项目中需要用到MongoDB,由于资源有限,手头上就只有两台云服务器和一些本地服务器,购买阿里云的MongoDB最低配的1C2G3节点的一年也要三四千块钱,索性自己搭一个吧。以下理论性质的内容是我用两天时间从各个博客汇总过来,再经过我个人的理解总结出来的,所以可能会有偏差,还望不吝赐教MongoDB集群分为三种:主从复制模式(Master Slave Replication)副本集模式分片模式##主从复制模式(Master Slave Replication)从官方文档中可以看到,原创 2021-04-26 21:36:50 · 2311 阅读 · 0 评论 -
基于Docker的MongoDB数据export和import
之前有命令如cloneCollection、cloneDatabase,随着版本更新,逐渐被废弃,目前官方推荐的导出导入方式为mongoexport和mongoimport两个命令以下方式适用于使用docker部署mongodb的方式mongoexport# 进入容器,注意是进入容器,而不启动mongo shell>>> docker exec -it mongo /bin/sh# 由于数据库使用了用户名密码验证,所以多了authenticationDatabase、userna原创 2021-04-25 11:09:39 · 917 阅读 · 0 评论 -
基于Docker的nginx配置ssl使https访问
今天要把用docker+nginx+flask搭的服务部署到服务器上,供小程序使用,小程序只能使用https方式访问接口,故需要进行一些配置。全过程只需要配置nginx即可,flask不需要动。容器必须把443端口打开将ssl证书.key和.pem两个文件放入容器中可以通过docker cp命令或者挂载目录的方式;将容器中的.key和.pem两个文件放在某目录下,比如/etc/nginx/ssl修改nginx配置文件server { listen 443 ssl; ss原创 2021-04-23 18:05:35 · 536 阅读 · 0 评论 -
【Sentry运维】基于Docker部署的Sentry数据备份与导入以及问题修复
由于之前部署sentry的服务器资源有限,故需要将其迁移至新的服务器官方有说明文档,有两种数据备份方式快速备份使用sentry提供的export命令,备份只包括配置数据,而不包括历史event数据完整备份将’sentry-'开头的所有容器进行备份,这种备份方式能备份所有历史event数据由于历史数据没什么用了,我选择快速备份,但在用官方的快速备份命令时,导入过程一直报错>>> docker-compose run --rm -T web import /home/back原创 2021-04-14 09:14:42 · 2499 阅读 · 0 评论 -
独立Docker部署的Portainer升级版本
大概一年前安装了Portainer 1.24.0,但中间没有进行过版本升级,今天相对其进行一次版本升级,发现遇到问题了。根据官方文档,Portainer版本大于等于1.24.1,升级只需要>>> docker stop portainer>>> docker rm portainer>>> docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always --pul原创 2021-04-13 17:37:31 · 1653 阅读 · 0 评论 -
pip按顺序安装requirements.txt中软件包
今天在用Dockerfile部署的时候出现问题,安装thriftpy时报错: error: command 'aarch64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for thriftpy搜了一下是因为thiftpy依赖cython参考:https://github.com/Thriftpy/thriftpy原创 2021-04-13 10:51:58 · 1675 阅读 · 0 评论 -
解决树莓派安装docker compose出现‘error: can‘t find Rust compiler’
操作系统:raspberry pi osPython:Python 3.8.8(通过编译安装)>>> pip3 install docker-compose error: can't find Rust compiler If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to i原创 2021-04-01 11:23:42 · 8382 阅读 · 0 评论 -
【Sentry运维】Docker下Sentry安装及使用
安装>>> git clone https://github.com/getsentry/onpremise>>> cd onpremise安装前先检查一下9000端口是否被占用:>>> netstat -nltp|grep 9000tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 22202/docker-proxy看到了吧,原创 2021-03-23 14:33:38 · 3042 阅读 · 2 评论 -
记一次因为docker空间爆满导致的进入容器失败解决过程
>>> docker volume rm $(docker volume ls -q)>>> docker system df>>> docker system df -v原创 2021-03-17 09:03:17 · 817 阅读 · 0 评论 -
在Ubuntu20.04容器中编译安装Python3.9(待解决)
由于python3.8没有removeprefix和.removesuffix方法,所以考虑将部署环境切换为python3.9但是发现在Ubuntu20.04的镜像上,无论如何也无法避免在不安装python3.8的情况下安装pip:没有python3.9-pip,只有python3-pip,而python3-pip会安装依赖python3.8通过get-pip.py安装同样缺少一个包,而安装那个包同样依赖python3.8所以就只能通过编译安装了,因为编译安装会默认把pip也装上# 编译安装原创 2021-03-12 20:03:19 · 1042 阅读 · 0 评论 -
Docker容器化部署Swagger Validator小工具
在使用swagger ui过程中不知道你们有没有注意到文档结尾右下角的小徽章点开后发现返回一串json{"schemaValidationMessages":[{"level":"error","message":"Can't read from file http://10.8.15.49:18081/wxapp_lottery_api.yaml"}]}这是Swagger提供的一个小工具,用来校验生成的文档说明文件是否符合语法规定的,如果符合就显示绿色的VALID徽章,否则就是黄色的原创 2021-02-23 15:32:40 · 398 阅读 · 0 评论 -
docker pull拉取超时的解决办法
最近docker pull镜像的时候非常不稳定,速度慢不说还经常超时失败Pulling xlxdsj_swagger_ui (swaggerapi/swagger-ui:)...latest: Pulling from swaggerapi/swagger-uiba3557a56b15: Pull complete1a18b9f93d41: Pull complete38ceab6c6432: Pull complete6104f3bd82cc: Pull complete750e0e12d7原创 2021-02-23 09:19:22 · 18982 阅读 · 1 评论 -
docker run中使用‘./‘相对路径挂载文件或目录失败的解决办法
docker-compose.yml文件中允许使用’./'相对路径version: '3' ... volumes: - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro - ./mongo-volume:/data/db ...会将当前路径下的init-mongo.js文件挂载到容器中的/docker-entrypoint-initdb.d/init-mongo.js,并且设置为只读方式;会将当前路径下的mon原创 2020-08-23 11:21:56 · 5550 阅读 · 0 评论 -
docker compose中默认网络设置测试
docker compose中如果不对网络进行任何设置,默认会:以docker-compose.yml文件所在的目录名为前缀创建名为"目录名_default"的网络,比如目录名为test,则网络名为test_default,通过"docker network ls"命令查看所有已创建网络;将docker-compose.yml中的容器添加至该网络中,通过"docker network inspect 网络名"命令查看该网络设置;最终效果就是在任意容器中均能通过服务名或容器名或ip地址访问另外容器原创 2020-08-22 10:48:12 · 2106 阅读 · 0 评论 -
容器中uWSGI listen queue of socket full错误解决办法
在进行接口压测时,发现在模拟200并发的场景下,出现大量502和504错误查看日志后发现并不是来自源代码错误,而是uWSGI# uWSGI日志中出现大量下面的错误uWSGI listen queue of socket "127.0.0.1:3100" (fd: 3) full !!! (101/100)这是由于uWSGI的监听队列满了,默认的监听队列长度为100,需要在uWSGI.ini文件中设置新的长度[uwsgi]listen = 500注意:太大的值会导致对ddos攻击防御力减原创 2020-08-21 15:30:56 · 4194 阅读 · 1 评论 -
树莓派安装docker-compose
由于树莓派的ARM架构原因,导致官方给的可执行文件无法使用,因而只能通过pip的方式进行安装系统环境树莓派4b 4GUbuntu 20.04.1 LTSLinux rasp04 5.4.0-1015-raspi #15-Ubuntu SMP Fri Jul 10 05:34:24 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux安装pip3>>> sudo apt install python3-pip安装docker-compose原创 2020-08-01 09:36:01 · 739 阅读 · 0 评论 -
记一次因2375端口暴露导致的服务器攻击事件
前几日在阿里云ECS上部署了一个web服务容器,没想到过了几天收到告警:云防火墙检测到您的系统IP:xx.xx.xx.xx 出现了高风险安全事件:主机存在挖矿行为。最开始以为是误报但是,SSH连接上以后发现:确实存在恶意容器,貌似是挖门罗币的一个容器,不禁一阵后背发凉:成肉鸡了?赶紧先rm、rmi把容器镜像删完,然后开始找原因搜索一番发现貌似是因为2375端口暴露在公网上了,这个端口是用来进行docker集群管理的,所以权限相当大,大到可以执行docker几乎一切命令:docker pull、d原创 2020-07-15 15:43:30 · 1243 阅读 · 0 评论 -
raspberry 4b 安装docker
Ubuntu 19.10一开始就对raspberry 4b 4G内存版不太友好,各种装不上,最开始的解决办法是将其内存限制到3G才能正常安装系统1,直到前些天Ubuntu官方发文称这个bug已经得到解决2,本人随即使用手边的板子尝试安装,果真一切顺利.但之后的docker又遇到问题,截至文章发布当日,docker未正式发布对Ubuntu 19.10的支持版本,github上的解决方案是使用针对19...原创 2019-12-21 14:16:16 · 868 阅读 · 0 评论 -
Portainer 1.24.0安装及使用
背景:随着工作的不断推进,部署的机器越来越多,逐渐形成多服务器的集群系统,而对这些服务器的容器运维管理目前都是通过命令行方式登录到该主机进行,对管理人员要求较高。Portainer是一个开源的跨平台docker可视化管理平台,采用B/S架构,通过docker方式部署portainer非常容易部署:服务器主机:# 修改docker配置# 方式一:>>> vim /usr/lib/systemd/system/docker.service# 在ExecStart参数后追加 -H原创 2020-06-16 10:03:25 · 1082 阅读 · 0 评论 -
Harbor 2.0.0安装及使用
背景:随着工作的不断推进,镜像越来越多,部署的机器越来越多,每次部署都需要build一次镜像非常耗时,尤其是在树莓派上build带有pip3 install pandas的镜像,往往耗时一个小时(虽然apt install python3-pandas快,但目前版本仅支持到0.25.3,1.0.0+的新接口并不支持,如pandas.json_normalize),因而就萌生了将镜像上传至镜像仓库中,而镜像仓库分为公共仓库和私有仓库,受限于隐私性,只能考虑私有仓库,目前的仓库部署方式:部署:服务器主机:原创 2020-06-08 16:18:58 · 4976 阅读 · 0 评论