docker
可以使用单个镜像快速部署应用;docker-compose
用于同一台机器上高效管理部署多个镜像;docker swarm
用于管理多台机器的集群容器;
kubernetes
也用于多台集群容器管理,是终极企业解决方案.
本文章主要记录总结,使用docker-compose
中碰到的一些问题, 方便后续快速使用
项目编排&部署思路
项目背景:
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.1
和locahost
, 并不是宿主机器的地址,只是容器内的回路地址
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 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
导入
mysql -u root -p
use mydatabase;
source mydata_mytable.sql
网友评论