浅谈近期关于Docker部署产生的一些问题

一、前言

由于这不算正式博客,只是记录当下使用Docker时产生的一些小问题,所以我不会用严格的格式去讲,只是作为一个小随笔去记录。

二、Docker-compose

前面我也使用过docker-compose,但是用得不够熟练,以前确实是没啥问题的,毕竟当时虚拟机上装的也就那么一两个项目所需的容器,而且多半都是mysql、redis这些最常用的容器,所以我当时就懒得去动了,直接几个项目共用同一个容器,几个月以来也是没出什么大问题的。

但是现在问题就来了,到现在我已经有五六个项目需要共用同一个容器了,所以我痛定思痛,决定不能懒了,要拆出来了,事实上本来就应该拆除,全怪我前面太懒了。

所以现在重新来熟悉docker-compose,首先docker-compose本来就是为了便于创建容器的一个工具,只需要把所有的命令写在一个yml文件上,就能同时拉取没有的镜像并且按照指令创建对应容器,同时将对这些容器进行统一管理。

docker-compose有几个特性:

1.如果本地没有镜像,就会自动拉镜像(这和普通的指令是一样的)。

2.整个docker-compose的名字由yml文件所在文件夹名来命名。

3.容器如果没有手动设置名字就自动生成默认的名字。(格式是文件夹名+服务名+序号)

因此由于这几个特性,我们创建的步骤也应该规范:

1.在虚拟机中创建一个文件夹,名字为项目的名称(文件夹的根目录尽量在opt/)

2.检查docker-compose.yml中容器的名字是否手动设置(这里建议保持自动,这样就可以避免冲突问题,一会儿会提到)

3.将docker-compose.yml复制到虚拟机中的项目文件夹中

4.cd到项目文件夹,运行指令,自动创建容器。

这里有几个点需要注意:

1.容器名冲突的问题,docker-compose看上去是和其他容器分隔开的,但是事实上,只要是在同一个docker中的容器都算一个整体,因此就不允许出现两个同名容器,所以docker-compose中的容器名也不能和外面的容器名冲突。

比如下面两个容器名就不能冲突:

所以这里为啥我建议自动生成容器名,因为默认策略会根据文件夹名来命名,同时也不要担心认不到服务是哪个,因为docker-compose下面有两级目录,第一级是以服务名命名的,点开第一级目录才是容器(显示真正的容器名)

至于执行命令应该如下:(新版的,老板命令是docker-compose -f)

bash 复制代码
docker compose -f docker-compose-xxx.yml up -d

最后呢建议还是尽量去使用Docker-compose,因为他还有个好处,就是一旦对容器配置有改动,直接修改docker-compose.yml文件内容即可,然后重新执行一次命令就行了,很方便。

如果是按照以前的做法,就必须要把容器删了,然后重新写命令行(更麻烦的是由于不是用文件装的命令,以前的命令多半都不见了,这就导致要重新写了)

相关推荐
刘梦薇9 小时前
SSH连接失败connection reset解决办法
linux·运维·ubuntu·ssh·腾讯云
Rsingstarzengjx9 小时前
stm32m157 U-boot 测试
linux·运维·服务器
江湖有缘9 小时前
5款开源wiki知识库工具,支持Docker快速部署!
docker·容器·开源
头茬韭菜10 小时前
功能点 1:项目骨架与启动流程 —— 源码阅读笔记
运维·笔记·debian·fluss
workflower10 小时前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
张小姐的猫10 小时前
【Linux】网络编程 —— 传输层协议 TCP(下)
linux·运维·服务器·网络·tcp/ip·http·php
程序员AlbertTu11 小时前
第2章 上手 Linux:环境与文件操作
linux·运维·服务器
云上飞4763696211 小时前
Windows WSL2 + Docker 环境下NVIDIA PhysicsNeMo 安装指南
windows·docker·physicsai·physicsnemo
抓不住时间的沙11 小时前
N1搭建Hexo个人博客,部署到Github
python·docker·node.js·debian·github·arm
☆凡尘清心☆12 小时前
CentOS Stream 9 源码编译搭建 Zabbix7.0.29 完整部署方案(部署成功)
linux·运维·centos