【运维】docker-compose入门

docker可以使用单个镜像快速部署应用;docker-compose用于同一台机器上高效管理部署多个镜像;docker swarm 用于管理多台机器的集群容器;
kubernetes 也用于多台集群容器管理,是终极企业解决方案.

本文章主要记录总结,使用docker-compose中碰到的一些问题, 方便后续快速使用


安装

确认已经安装了docker

docker-compose 安装方式

版本:请使用最新版本
本文使用的是v2.11.2

项目编排&部署思路

项目背景:
go语言实现一个Helloworld项目,go项目依赖数据库Mysql功能,本地可以正常运行,现提出需求,需要快速部署到服务器。

操作步骤:
1.go项目根目录创建Dockfile文件,实现Docker镜像创建功能。
2.go项目根目录创建docker-compose.yaml文件,编排:mysql go项目.
3.数据库Mysql,将数据进行磁盘映射,容器销毁后数据即可保存在磁盘中

注意:
此处 Mysql使用的是远端镜像,go项目使用的是本地构建的方式;之后部署只需在服务端拉仓库代码,然后在服务端进行docker-compose up -d 进行构建即可;
当前你也可以先把go项目构建成镜像文件,然后推送到镜像仓库,然后在docker-compose.yaml中的go项目不使用本地构建方式依赖,直接依赖远端镜像,那么你可以在服务端直接用docker-compose.yaml文件进行编排部署

踩坑记

1.容器内访问127.0.0.1locahost, 并不是宿主机器的地址,只是容器内的回路地址
2.数据库需要使用工具mysqldump导出使用,不能自己手写,手写的格式错误
3.yaml顶部声明的版本和使用的docker-compose版本不匹配,导致编排失败
4.linux服务器上面,容器通信,可以直接使用容器名称,不用自定义网络, 即:使用容器名发起网络请求,和连接数据库
5.MacOS,容器通信,可以直接使用host.docker.internal 访问容器内网络

常用命令

清空不使用的废弃数据
docker system prune --all
docker volume prune
docker image prune

构建容器并运行
docker-compose up --build

构建容器并在后台运行
docker-compose up -d

重新构建容器并运行 (代码修改后重新部署)
docker-compose up -d --build --force-recreate

构建容器
docker-compose build

查看日志
docker-compose logs -f

进入运行中的容器
docker exec -it name bash

导出数据库(指定库名)
mysqldump -uroot -p --databases mydatabase > ~/Downloads/mydata.sql

导入(指定数据库)
mysql -u username -p -D mydatabase < mydata.sql

导出(指定库名和表名)
mysqldump -uroot -p --databases mydatabase --tables mytable > ~/Downloads/mydata_mytable.sql

导出容器中的数据库(端口非默认端口 因为电脑上装了数据库 默认端口存在)
mysqldump -u root -P 3307 -h 127.0.0.1 -p --databases mytest > ~/Downloads/mydata.sql

导入
mysql -u root -p
use mydatabase;
source mydata_mytable.sql


Docker、Docker-Compose、k8s区别和发展
docker compose的使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容