what is docker
what’s the difference between docker and VM?
Docker功能
- 简化配置
- 整合服务器
- 代码流水线管理
- 调适能力
- 提高开发效率
- 多租户
- 隔离应用
- 快速部署
容器编排工具 K8s
what is DevOps?
传统服务器的弊端
虚拟化优缺点
开发和运维面临环境不一致的难题
- 解决了开发和运维之间的矛盾
- 在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案
vagrant
创建一台虚拟机
vagrant init centos7
vagrant up
vagrant ssh
docker version
docker-machine version
docker-machine create demo 创建一台小巧的虚拟机
docker-machine ls 查看
docker-machine start demo
docker-machine ssh demo
docker-machine env demo 输出demo的环境变量
linux eval $(docker-machine env demo) 本地远程创建虚拟机
远程创建阿里云
首先下载docker-machine-driver-aliyunecs放到/usr/local/bin
验证 docker-machine create -d aliyun --help 显示命令,则成功
然后再访问控制创建用户,再添加一个AccessKey
然后执行图片中的命令
eval $(docker-machine env demo)
如果想退出
docker-machine env --unset
Docker架构
Docker Engine
底层技术
Docker Image
docker run 镜像名
docker image ls
docker image rm
Image获取
去掉sudo
sudo groupadd docker
sudo groupwd -a vagrant docker
sudo service docker restart
vagrant ssh
创建自己的镜像 Dockerfile最佳实践
- scratch表示从头构建一个image
- FROM尽量使用官方的image作为base image
- LABEL Metadata不能少 (帮助信息)
- Run 使用反斜线换行
- WORKERDIR 不要使用RUN cd 尽量使用绝对目录
这里的hello是我们刚编译的一个c文件
vim Dockderfile
文件内容
FROM scratch
ADD hello /
CMD ["/hello"]
然后
docker build -t hanxiao/centos-vim .
Run vs CMD
Container
docker container ls
docker container ls -a
构建自己的Docker镜像
docker container commit 把修改的container提交成一个新的image 不提倡,因为其他人也可以获取
docker image build 根据Dockerfile创建一个镜像(推荐)
镜像发布
docker login
docker push loginid/name:version
docker registry 私有仓库,不共享
关闭hyper
bcdedit /set hypervisorlaunchtype off
开启hyper
bcdedit /set hypervisorlaunchtype auto
打开App,阅读手记