Docker入门
来源:互联网 发布:淘宝客服常用问候语 编辑:程序博客网 时间:2024/06/05 21:11
一、Docker是什么
个人简单的认为,Docker作为一个容器引擎跑在linux宿主机上,容器内部署服务非常轻量,且做到容器随时创建删除的可伸缩性。
二、Docker怎么用
以下为本人入门阶段的总结。
1、准备
开发环境和工具:
win7(64-bit) jdk1.8 maven eclipse
win10之前的版本只能安装Docker Toolbox,安装步骤全部默认。
Docker Quickstart Terminal用git的bash命令行打开。
一番初始化后,docker安装完成,运行在win7(本机)虚拟机上。
# Docker Quickstart Terminal可执行命令# 查看运行docker的宿主虚拟机$ docker-machine ls # 和default虚拟机docker daemon交互需要用到的环境变量$ docker_machine env default
2、开发阶段
主要利用docker-maven-plugin插件将Docker构建镜像集成到IDE内。
3、部署阶段
上篇部署helloworld时,最后将源码复制到了云端进行编译打包,再构建镜像运行容器。正式开发的话肯定不会将源码放到生产环境去编译打包部署。这时一般有两种方法:
1、生产环境Docker开启remote Api服务,本机远程访问Docker端口,并发布构建镜像、运行容器等命令。此方法安全风险非常高(安全加固方法主要解决访问控制和通信加密),但是对远程容器操作非常简单。
2、本地编译打包并构建镜像,将镜像保存成文件上传云端,云端加载镜像运行容器。此方法非常简单,但是步骤较多。
简单记录下第二种方法遇到的一些坑:
1、利用mvn clean package docker:build命令构建镜像时(简称构建,下同),抛出异常Connect localhost:2375 failed。
解决方法:缺少环境变量,执行docker-machine env default命令,把环境变量配置进系统。default虚拟机最好分配一个固定ip,默认为192.168.99.100。
2、构建时,抛出异常Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection。
解决方法:虚拟机默认是以NAT方式访问互联网,先排除本机网络问题。另外可以考虑Docker Quickstart Terminal执行命令docker-machine restart default,重启虚拟机。
3、docker save load迁移镜像,发现导入的镜像为none:none。
解决方法:save时使用image id作为源镜像参数,新导入的镜像会是none:none,旧镜像不变。使用repository时,如果repository:tag已存在则新镜像占用此rep:tag,旧镜像变成none:none。另外,还有其他几种情况会生成none:none镜像,可查阅资料解决。
# 保存镜像,第一个参数尽量使用repository$ docker save example | gzip > c:/example-latest.tar.gz# 载入镜像$ docker load -i example-latest.tar.gz
三、借鉴来的最佳实践
1、容器应做到层次精简,控制镜像大小。
2、应用解耦,每个容器运行单一服务,利用容器关联特性解决服务依赖问题。
3、易读的镜像标签,避免镜像和容器空间膨胀。
经验有限,暂时先写这么多。。。
- docker--docker入门理论
- Docker入门
- Docker入门
- Docker 入门
- docker 入门
- docker入门
- docker入门
- docker 入门
- Docker 入门
- docker 入门
- Docker入门
- Docker-入门
- docker入门
- docker 入门
- docker 入门
- docker入门
- Docker入门
- Docker入门
- 数据降维笔记——非负矩阵分解(NMF),人脸数据特征提取
- Ubuntu修改环境变量关掉终端就没了,问题解决办法
- 9月20日云栖精选夜读:异构计算&高性能计算分论坛——揭秘拿什么实现超算平民化、国际化?
- java 报错信息
- Haproxy+keepalived实现高可用负载均衡
- Docker入门
- Google的catographer论文《real-time loop closure in 2D LiDAR SLAM》翻译讲解
- LoRa学习:信道占用检测原理(CAD)
- Genymotion
- OkHttp3封装
- Thinkphp5微信小程序获取用户信息接口调用笔记
- Android Studio怎么从GitHub克隆下载代码
- SQL日期查询
- PHP 动态导出生成 excel,csv文件