-
安装APP前后的日志记录如下:打包debian时使用的beyonddc.service如下:想请教一下,是不是service的实现有问题?
nbsanxing-qincf
发表于2023-05-10 20:07:46
2023-05-10 20:07:46
最后回复
nbsanxing-qincf
2023-05-11 15:03:05
118 1 -
参考资料文档为边缘计算网关二次开发指南(T2系列).chmlog如下:
nbsanxing-qincf
发表于2023-05-10 13:56:47
2023-05-10 13:56:47
最后回复
nbsanxing-qincf
2023-05-10 16:12:56
85 2 -
第一次操作时,install-->start是正常的,但是stop后进行start会提示Failed to start container.log如下:将容器卸载后再次安装,start,则不会出现该问题。
nbsanxing-qincf
发表于2023-05-09 15:23:40
2023-05-09 15:23:40
最后回复
nbsanxing-qincf
2023-05-11 15:46:45
108 4 -
日志记录:安装指令:编写APP服务:生成deb包脚本:生成ova包:/data/eciot-ova/system/external/sdk/usr/local/bin/create-ova -t app -d beyonddc.deb -n beyonddc -s beyonddc 50 50 -s dcweb 40 50 -version_short V001 -ar armel -ot debian -ov buster -vendor sanxing
nbsanxing-qincf
发表于2023-05-09 13:12:59
2023-05-09 13:12:59
最后回复
nbsanxing-qincf
2023-05-09 16:42:35
141 1 -
Hi,我在使用./build_ova.sh armel 2.0.0 huawei download unprivileged命令进行LXC容器包制作时,产生了报错如下:create deb file success!usage3:./create_rootfs.sh {armel|arm64} {privileged|unprivileged} {passwd} [custom_dir]cp: cannot stat 'armel-buster-lxc-rootfs.squashfs': No such file or directoryERR: Sorry, i can't find the file: armel.imgmv: cannot stat 'ECarmelunprivileged.ova': No such file or directorymu'qian'wo'shi'yong'de
nbsanxing-qincf
发表于2023-05-04 11:28:51
2023-05-04 11:28:51
最后回复
nbsanxing-qincf
2023-05-04 16:23:14
226 2 -
运行环境为VMvare下的Ubuntu18.04及20.04;sourcelist使用清华源/阿里源;apt-get update无异常,且下载docker无异常,docker version为Docker version 23.0.4, build f480fb1 脚本来源为https://support.huawei.com/enterprise/zh/doc/EDOC1100199326下载的chm文件中附带的rar文件但是运行build_sdk_base.sh会出现update部分文件失败。
nbsanxing-qincf
发表于2023-04-26 19:40:13
2023-04-26 19:40:13
最后回复
nbsanxing-qincf
2023-05-04 10:40:52
157 1 -
在需要操作word的场景中,比如代码生成word合同,导出数据到word模板,word文件转pdf文件等常常需要中文字体,而发布到docker环境的程序默认没有中文字体,就需要打包镜像的时候手动安装自己,下面就以一个jar打包成镜像的示例,Dockerfile如下FROM openjdk:8WORKDIR /build# 安装字体COPY simhei.ttf /usr/share/fonts/my-fonts/simhei.ttfCOPY simsun.ttc /usr/share/fonts/my-fonts/simsun.ttcRUN yum install mkfontscale -yRUN yum install fontconfig -yRUN mkfontscaleRUN mkfontdirRUN fc-cache -fv#拷贝其他文件COPY . .CMD java -jar api-0.0.1-SNAPSHOT.jar上面的yum命令是基于centos7的,如果版本不对需要调整版本号。然后就可以docker build后再run了。
-
docker的安装脚本: # 更新yum源为阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo yum install -y yum-utils device-mapper-persistent-data lvm2 # 华为源 yum-config-manager --add-repo https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/use-framework-upgrade/docker-ce.repo # 阿里源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce systemctl start docker systemctl enable docker docker version 构建docker镜像 在centos系统下创建目录 /root/mydocker 将项目jar包复制到/root/mydocker内 创建Dockerfile文件,文件内容: FROM openjdk:8 WORKDIR /build COPY . . CMD java -jar test.jar 4. 将Dockerfile文件复制到/root/mydocker文件夹内 5. 在/root路径下执行命令: docker build mydocker -t mydocker:v1 6. 至此镜像制作完毕,可以通过命令运行 docker run -d -p 8081:8080 mydocker:v1 7. 将打包好的镜像导出到服务器上 docker save 999c20aee5da > /root/mydocker.tar mydocker:latest 999c20aee5da为镜像ID 8. 加载服务器上镜像文件 docker load < /root/mydocker.tar 9. 停止,删除,删除镜像,重新build,run脚本,rebuild.sh docker stop myapi docker rm myapi docker rmi myapi:latest docker build /www/myapi -t myapi:latest docker run -d --name=myapi -p 80:80 myapi:latest ************************************************************************************** docker使用 1.centos下安装docker CentOS Docker 安装 | 菜鸟教程 2.常用命令: centos下启动docker服务:systemctl start docker 查看本地镜像:docker images 删除本地镜像:docker rmi [imageId] 下载一个镜像:docker pull [imageName] 运行一个容器:docker run -d:后台运行 -p:指定端口映射 -it:交互式运行,配合/bin/bash进行命令行输入 -v:数据卷指定,用户文件路径映射 例如: docker run -d -p 8081:8080 -v /root/myfiles:/root/myfiles tomcat 查看运行中的容器:docker ps 查看所有容器:docker ps -a 删除容器:docker rm [containerId] 停止容器:docker stop [containerId] 启动/重启容器:docker start/restart [containerId] 以交互式进入容器内部:Docker exec -it [containerId] /bin/bash 查看容器日志:Docker logs [containerId] 查看数据卷列表:docker volume ls 删除数据卷:docker volume rm [VolumeName] 主机和容器之间复制文件: 从主机复制到容器 sudo docker cp host_path containerID:container_path 从容器复制到主机 sudo docker cp containerID:container_path host_path
-
docker最近迷恋使用doker容器,在docker容器进行部署MySQL,以前针对容器的安全性一直存在怀疑的态度,不过如果能够通过容器也能数据库备份问题,就这样开始docker容器备份备份和恢复:第一种方式12345678910#全部备份[root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /home/movice202302.sql#备份数据转移[root@localhost home]# docker cp /home/movice202302.sql salve-mysql:/var # salve-mysql 是容器 #全部恢复root@6faa12ee2d96:/# mysql -uroot -p123456 < /var/movice202302.sql#查看恢复数据库情况:mysql -uroot -p123456 -e 'drop database SCHOOL;'mysql -uroot -p123456-e 'SHOW DATABASES;'恢复:导出数据库的表结构和表数据mysqldump -uroot -pdbpasswd db_name >db.sql;12[root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli' > /home/movie0216.sqlWarning: Using a password on the command line interface can be insecure.123456789101112131415导出数据库表数据mysqldump -uroot -pdbpasswd -t db_name >db.sql;root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -t movice_fuli' > /home/movie.sql导出数据库表结构mysqldump -uroot -pdbpasswd -d db_name >db.sql;root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli' > /home/movie.sql导出数据库中某个表的表结构mysqldump -uroot -pdbpasswd -d db_name table_name >db.sqlroot@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli user' > /home/movie.sql导出数据库中某个表的表结构和表数据mysqldump -uroot -pdbpasswd db_name table_name >db.sql;root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli user' > /home/movie.sql自动化备份mysql1 创建目录/usr/data用于存放mysql的数据存放12345678910111213141516171819root@localhost ~]# cd /usr[root@localhost usr]# lsbin etc games include lib lib64 libexec local sbin share src tmp[root@localhost usr]# mkdir data[root@localhost usr]# lsbin data etc games include lib lib64 libexec local sbin share src tmp[root@localhost usr]# cd data[root@localhost data]# ls [root@localhost data]# touch back_clean.sh [root@localhost data]# touch backup .sh[root@localhost data]# mkdir logs[root@localhost data]# mkdir mysql_bak[root@localhost data]# lsback_clean.sh backup logs mysql_bak[root@localhost data]# rm backuprm:是否删除普通空文件 "backup"?y[root@localhost data]# touch backup.sh[root@localhost data]# lsback_clean.sh backup.sh logs mysql_bak2 编辑 备份脚本和清除大于给定期限的备份数据backup.sh,back_clearn.sh1234567891011121314151617181920212223242526vi backup.shBACKUP_ROOT=/usr/data/BACKUP_FILEDIR=$BACKUP_ROOT/mysql_bak#当前日期DATE=$(date +%Y%m%d)# 获取容器mysqlid=docker ps -aqf "name=c_mysql"#查询所有数据库DATABASES=$(docker exec -i ${mysqlid} mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")#循环数据库进行备份for db in $DATABASESdoechoif [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];thenecho "jump over ${db}"elseecho ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------docker exec -i ${mysqlid} mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gzecho ${db}echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------echofidoneecho "备份完成"1234vi back_clear.shecho ----------CLEAN BEGIN----------find /usr/data/mysql_bak/ -mtime +7 -name "*.gz" -exec rm -rf {} \;echo ----------CLEAN COMPLETE---------设置定时任务利用Linux crontab 进行设置定时任务查看定时任务crotab -l修改定时任务crontab -e12345#每天02:00自动清理大于7天的mysql备份00 2 * * * /usr/data/backup_clean.sh > /usr/data/logs/backup_full_clean.log 2>&1#每天11:00自动备份mysql00 11 * * * /usr/data/backup.sh > /usr/data/logs/backup.log 2>&1到此这篇关于Docker 下MySQL数据库的备份和恢复的文章就介绍到这了转载自https://www.jb51.net/article/275649.htm
-
在我们使用Docker时,如果需要运行多个容器,在没有Docker-compose之前,你可能需要一个个的定义和启动。docker-compose诞生之后,你只需要把这些容器、依赖关系、端口映射等配置在一个yaml文件中即可,大大提升了管理效率。今天就以一个Python项目来说说Docker-compose的使用步骤。Docker-compose目录树flask项目中要用到mysql,因此我们准备2个容器:mysql镜像、flask项目镜像。flask代码目录如下:12345678910.├── docker-compose.yml├── flask│ ├── Dockerfile│ ├── __init__.py│ ├── gunicorn_conf.py│ ├── manage.py│ ├── requirements.txt│ └── settings.py└── mysqlflask目录下文件首先来编写MySQL连接文件settings.py:1234567import pymysqldb = pymysql.connect( host='mysql', port=3306, user='root', password='root123456')再编写代码文件manage.py,代码很简单,就是开启一个flask服务,需要用到上述的mysql服务:1234567891011121314151617181920from flask import Flaskfrom settings import dbapp = Flask(__name__)def mysql_test(): cursor = db.cursor() sql = "show databases" cursor.execute(sql) res = cursor.fetchall() cursor.close() db.close() return res @app.route('/')def index(): res = mysql_test() re_list = [] for row in res: re_list.append(row[0]) return "res: {}".format(re_list)if __name__ == '__main__': app.run()进程管理方面,我们使用gunicorn来管理服务,因此编写gunicorn配置文件gunicorn_conf.py:123worker = 4worker_class = "gevent"bind = "0.0.0.0:5000"接着,我们来编写Dockerfile:12345FROM python:3.7-slimCOPY . /homeWORKDIR /homeRUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleCMD gunicorn -c gunicorn_conf.py manage:app然后,再编写一下flask项目依赖文件requirements.txt:12345Flask==2.0.3gunicorn==20.1.0gevent==21.12.0PyMySQL==1.0.2cryptography==39.0.0docker-compose.yml文件编写编写docker-compose.yml,我们要描述应用的构成(一个web服务器和一个数据库)、使用的Docker镜像、镜像间的连接、挂载到容器的数据卷、服务开放的端口。1234567891011121314151617181920212223242526272829version: '3'services: mysql: image: mysql:latest restart: always networks: # 配置网络 - diy_net expose: - 3310 ports: - "3310:3306" environment: # 环境变量(可防止泄露不必要的数据) - MYSQL_ROOT_PASSWORD=root123456 flask: build: ./flask depends_on: # 依赖于mysql容器,启动时会先启动mysql - mysql networks: # 配置网络 - diy_net environment: - MYSQL_USER=root - MYSQL_PASSWORD=root123456 - MYSQL_DB=docker_db ports: - "5000:5000"networks: # 网络设置 diy_net: name: diy_net external: true # 表示已有的网络备注: networks的配置是为了让flask应用和mysql应用同处在一个网络,这样才能保证容器间的连通性。 当然保证容器间的连通性,还有其他方式,如用--link配置。用networks配置起来更加方便。代码完成后,开启服务:1docker-compose up -d服务正常开启,来测试一下两个容器的连通性。进入flask容器docker-compose exec flask bashping一下mysql容器:ping -c 3 mysql,显示信息如下:12345678# ping -c 3 mysqlPING mysql (172.18.0.3) 56(84) bytes of data.64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=1 ttl=64 time=0.717 ms64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=2 ttl=64 time=0.432 ms64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=3 ttl=64 time=0.376 ms--- mysql ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2005msrtt min/avg/max/mdev = 0.376/0.508/0.717说明容器间互联成功。整个项目就运行起来了。转载自https://www.jb51.net/article/275903.htm
-
描述在特定的情况下,或者在网络策略特殊定义下,需要自定义dns进行域名访问,在宿主机上配置了域名解析,对于docker容器无效。对于局域网内的域名解析,Docker 需要到 Docker 容器中配置 hosts 文件。实现方式docker-compose配置【推荐】通过增加 extra_hosts 属性 进行host配置12345678910111213141516version: '2'services: # 指定服务名称 portainer-docker-compose: image: portainer/portainer container_name: portainer volumes: - /etc/localtime:/etc/localtime ports: - 29999:8080 environment: spring.profiles.active: dev extra_hosts: s3-qos.qiniu-solutions.com: 10.12.32.4 demos.s3-qos.iot-st-armtest.qiniu-solutions.com: 10.12.32.4 restart: always进入容器内部修改进入容器1docker exec -it 0485008fc3e5 /bin/sh修改容器内的hosts1cat /etc/hostsdocker run 命令的时候添加进行dns映射:s3-qos.qiniu-solutions.com:10.12.32.412345docker run -d -p 9000:9000 \--restart=always \--add-host s3-qos.qiniu-solutions.com:10.12.32.4 \-v /var/run/docker.sock:/var/run/docker.sock \--name portainer portainer/portainer官方文档:cid:link_2docker build构建镜像时添加1docker build --add-host=docker:10.180.0.1 .官方文档:cid:link_1结尾如果是单机推荐大家采用docker-compose的方式进行编排【开发测试环境】,生产环境可以采用k8s进行编排。官方文档:cid:link_0转载自https://www.jb51.net/article/276037.htm
-
华为云openEuler 20.03相当于centos 7还是8?如何安装docker ce 19.3.8或以上版本 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 修改Docker官方源的版本号 默认识别到的是“20.03LTS_SP3”,应该改成8,也就是CentOS 8。 sed -i 's/\$releasever/8/g' /etc/yum.repos.d/docker-ce.repo 注:如果不执行这一步,会出错: yum makecache Docker CE Stable - aarch64 259 B/s | 391 B 00:01 Error: Failed to download metadata for repo 'docker-ce-stable': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried 刷新包缓存 dnf clean all dnf makecache dnf -y install docker-ce 提示: Last metadata expiration check: 0:03:11 ago on Mon 07 Nov 2022 02:07:21 PM CST. Error: Problem: cannot install the best candidate for the job - nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:20.10.21-3.el8.aarch64 (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
-
这篇文章主要介绍了docker自定义网桥docker0及docker的开启,关闭,重启命令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧问题公司将服务器迁移后,docker默认创建的doker0网桥与公司的外网网关产生冲突,导致外网无法连接服务器。解决方式修改默认的配置文件 /etc/docker/daemon.json对Docker进行配置。如果没有直接创建1、关闭 docker服务1systemctl stop docker2、修改bip1234{ "bip": "192.168.0.1/24", # 修改此处 ....}3、重启docker1systemctl restart dockerdocker 关闭、重启、启动命令123456sudo service docker stop # 关闭 或sudo systemctl stop dockersudo service docker restart # 重启 或sudo systemctl restart dockersudo service docker start # 启动sudo systemctl start docker # 启动补充:修改docker0默认ipDocker 服务启动后默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。可以用编辑/etc/docker/daemon.json文件,添加内容 "bip": "ip/netmask" [ 切勿与宿主机同网段 ]12[root@localhost /]# vi /etc/docker/daemon.json{"bip":"192.168.100.1/24"}以上为个人经验,希望能给大家一个参考转载自https://www.jb51.net/article/208223.htm
-
这篇文章主要介绍了浅谈docker-compose网络设置之networks,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧networks使用方式之官网教程官网的docker-compose.yml参考文档:Compose file version 3 reference较为准确的中文翻译版:Compose file version 3 referencenetworks通常应用于集群服务,从而使得不同的应用程序得以在相同的网络中运行,从而解决网络隔离问题。这种应用在swarm部署中,非常常见。不过,本文并不做讨论。一般对于集群服务,常常通过docker-compose.yml文档快速编排、部署应用服务。官网中给出了如下的使用场景和方式:1. 未显式声明网络环境的docker-compose.yml例如,在目录app下创建docker-compose.yml,内容如下:1234567891011121314version: '3'services: web: mage: nginx:latest container_name: web depends_on: - db ports: - "9090:80" links: - db db: image: mysql container_name: db1234567891011121314使用docker-compose up启动容器后,这些容器都会被加入app_default网络中。使用docker network ls可以查看网络列表,docker network inspect 可以查看对应网络的配置。12345678910$ docker net work lsNETWORK ID NAME DRIVER SCOPE6f5d9bc0b0a0 app_default bridge local0fb4027b4f6d bridge bridge local567f333b9de8 docker-compose_default bridge localbb346324162a host host locala4de711f6915 mysql_app bridge localf6c79184ed27 mysql_default bridge local6358d9d60e8a none null local123456789102. networks关键字指定自定义网络例如下面的docker-compose.yml文件,定义了front和back网络,实现了网络隔离。其中proxy和db之间只能通过app来实现通信。其中,custom-driver-1并不能直接使用,你应该替换为host, bridge, overlay等选项中的一种。123456789101112131415161718192021222324252627version: '3'services: proxy: build: ./proxy networks: - front app: build: ./app networks: - front - back db: image: postgres networks: - backnetworks: front: # Use a custom driver driver: custom-driver-1 back: # Use a custom driver which takes special options driver: custom-driver-2 driver_opts: foo: "1" bar: "2"123456789101112131415161718192021222324252627值得注意的是,这里定义了back和front两个网络,似乎它们的名字就定义成了back和font,但是你使用docker network ls命令并不能找到它们。假如你是在myApp目录下运行的docker-compose up命令,那么这两个网络应该分别对应myApp_back和myApp_front。3. 配置默认网络1234567891011121314version: '2'services: web: build: . ports: - "8000:8000" db: image: postgresnetworks: default: # Use a custom driver driver: custom-driver-112345678910111213144. 使用已存在的网络1234networks: default: external: name: my-pre-existing-network1234遇到的问题学习了上面的东西,笔者准备将自己的项目付诸实践。我的项目包含了两个docker-compose.yml,且使用了links选项,所以必须使用networks配置。其中,一个docker-compose.yml用于启动mysql服务,位于mysql/目录下:12345678910111213141516171819202122232425262728293031323334353637383940414243 version: "3"services: dbmaster: image: master/mysql:latest container_name: dbmaster ports: - "3308:3306" volumes: - $HOME/Work/data/dbmaster:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: master logging: driver: "json-file" options: max-size: "1000k" max-file: "20" networks: - app dbslave: image: slave/mysql:latest container_name: dbslave ports: - "3309:3306" depends_on: - dbmaster volumes: - $HOME/Work/data/dbslave:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: slave logging: driver: "json-file" options: max-size: "1000k" max-file: "20" links: - dbmaster networks: - appnetworks: default: external: name: app12345678910111213141516171819202122232425262728293031323334353637383940414243另一个docker-compose.yml用于启动服务程序,位于cloudgo/目录下:123456789101112131415161718192021222324252627282930313233343536373839version: "3"services: web: image: nginx:latest container_name: web depends_on: - cloudgo ports: - "9090:80" volumes: - $HOME/Work/docker/docker-compose/nginx/conf.d:/etc/nginx/conf.d links: - cloudgot logging: driver: "json-file" options: max-size: "1000k" max-file: "20" networks: - app cloudgo: image: cloudgo:latest container_name: cloudgo ports: - "8080:8080" logging: driver: "json-file" options: max-size: "1000k" max-file: "20" external_links: - dbmaster - dbslave networks: - appnetworks: app: external: true123456789101112131415161718192021222324252627282930313233343536373839我决定使用预先创建的网络,然后把他们加入这个已经创建好的网络,从而实现通信。为此,我运行了如下命令:1$ docker network create app1之后,开始运行编写好的docker-compose.yml文件。首先运行启动mysql的配置文件,结果如下:12l$ docker-compose upERROR: Service "dbmaster" uses an undefined network "app"12明明已经创建好了,却还是报了错,说该网络未定义。尝试改变名称mysql_app,但是依旧报出同样的错误。最终证明,这种方法无法实现,至今没有找到官方文档给出的例子。所以,最终决定将第一个docker-compose.yml文件中的networks配置改为如下内容:123networks: mysql_app: driver: bridge123在这个文件中定义一个网络,以便在后面使用。这里修改完毕,该文件其他地方凡是引用到了该网络的地方均要作出相同的修改。同样,第二个文件也一样。其他的一些用法使用aliases代替link一般的使用格式如下:12345678910services: some-service: networks: some-network: aliases: - alias1 - alias3 other-network: aliases: - alias212345678910在下面的例子中,我的web容器可以直接通过database:3306或者db:3306访问db容器了。它们同时属于一个网络,并且db设置了主机别名,所以这样的访问方式是完全可以的。123456789101112131415161718192021222324252627version: '2'services: web: depends_on: - worker networks: - new worker: depends_on: - db networks: - legacy db: image: mysql networks: new: aliases: - database legacy: aliases: - mysqlnetworks: new: legacy:123456789101112131415161718192021222324252627此时直接使用depends_on已经不再需要link,如果woker需要访问db,可以直接通过mysql:port的方式。使用networks的要点在于:1. 注意自定义网络的方式2. 注意docker-compose.yml文件的位置与网络默认命名的关系3. 注意遇到问题尝试几种替代方式去解决以上就是本文的全部内容,希望对大家的学习有所帮助转载自https://www.jb51.net/article/148061.htm
-
背景因为最近一直在折腾Kubernetes集群版本升级、Docker版本升级,所以不停的把测试环境安装、还原、升级、降级,简直乱的不行。终于,在测试Docker版本升级后,启动Docker时,遇到了docker.service: Unit not found。问题虽然不大,但是却折磨了我几个小时,所以在此mark一下。操作系统:Red Hat Enterprise Linux 7原因1:docker.socket最初在启动docker时遇到问题,是因为docker.socket引起的,虽然记不清问题是表现为Unit not found还是执行systemctl start docker.service命令时hang住了,但是也一并记录在这里。问题描述我是从Docker 1.10.3升级到1.13.1版本,通过rpm包安装的。由于要保留自定义的一些Docker配置,所以在升级后,使用原来的/usr/lib/systemd/system/docker.service覆盖了新的docker.service。但是在1.10.3版本中,docker.service的[UNIT]里规定了Requires=docker.socket,也就是说,docker.service默认依赖于docker.socket,因为需要使用docker.socket来获取容器的信息。12345[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network.target docker.socketRequires=docker.socket但是在1.13.1版本中,已经不再依赖于docker.socket了,所以系统里没有docker.socket,而我继续使用原来的docker.service,所以在启动的时候,就会出错。解决办法删除/usr/lib/systemd/system/docker.service的[UNIT]里包含的docker.socket,然后systemctl daemon-reload,最后systemctl start docker.service,发现启动成功了。类似情况如果是类似的情况,缺少docker.socket,但是新版本需要docker.socket。有两种方法可以解决该问题:可以卸载docker,再重新安装,即可出现docker.socket。或者创建一个/usr/lib/systemd/system/docker.socket文件,然后systemctl daemon-reload,最后systemctl start docker.service,即可启动成功。/usr/lib/systemd/system/docker.socket文件如下:12345678910[Unit]Description=Docker Socket for the APIPartOf=docker.service[Socket]ListenStream=/var/run/docker.sockSocketMode=0660SocketUser=rootSocketGroup=docker[Install]WantedBy=sockets.target原因2:flanneld.service就如背景里描述的,我恰好在这台出问题的机器上,安装过Kubernetes,以及flannel,然后又删掉了我之前以为的“所有”相关的文件。正是由于flannel的文件没有删除干净,导致出现了docker.service: Unit not found的问题。问题描述在确定不是因为docker.socket的问题导致的之后,我第一反应就是删除flannel导致的,因为我了解flanneld.service与docker.service直接是有启动顺序的关联的:1234567[Unit]Description=Flanneld overlay address etcd agentAfter=network.targetAfter=network-online.targetWants=network-online.targetAfter=etcd.serviceBefore=docker.service真正困扰了我很久的是,/usr/lib/systemd/system/flanneld.service我已经删除了,也systemctl daemon-reload了,究竟还有哪个文件漏删了。经过检查,/etc/systemd/system/flanneld.service依然存在,并且存在/etc/systemd/system/docker.service.requires目录,在该目录下包含了软连接flanneld.service,该软链接指向了真正的flanneld.service,从而实现了两个服务的启动顺序的关联。定位该类问题,经常会用到的命令有:systemctl list-unit-files 列出所有可用的Unitsystemctl list-units 列出所有正在运行的Unitsystemctl --failed 列出所有失败单元systemctl mask httpd.service 禁用服务systemctl unmask httpd.servicesystemctl kill httpd 杀死服务systemd-analyze critical-chain:分析启动时的关键链systemd-analyze blame 分析启动时各个进程花费的时间解决办法使用systemctl unmask flanneld.service禁止flanneld服务,然后删除/etc/systemd/system/docker.service.requires/flanneld.service,使用systemctl daemon-reload重新加载服务配置文件,最后systemctl start docker.service,发现docker启动成功了。以上所述是小编给大家介绍的docker.service启动失败:Unit not found的原因分析及解决办法,希望对大家有所帮助转载自https://www.jb51.net/article/111680.htm
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签