1 预备安装软件虚拟机 VMware Fusion ,或者其他虚拟机。保证本地有一个linux的centos7 的操作系统。
1.1 配置虚拟机网络: 详细机器参考《》Page-Page
1 克隆虚拟机(在关机情况下)虚拟机->完整克隆
2 配置网络 修改文件 /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.153.3
或IPADDR=192.168.153.4
或IPADDR=192.168.153.5
4 重启机器 reboot
5 ifconfig 看ip已经改变
6 ping baidu.com 测试网络
7 ping不同的情况下:
在文件/etc/sysconfig/network-scripts/ifcfg-ens33
添加:
DNS1=8.8.8.8
DNS2=8.8.4.4
改完后重启网卡: service network restart
参考链接: http://www.th7.cn/system/lin/201711/232748.shtml
2 docker 安装
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
Sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
Step 4: 开启Docker服务
sudo service docker start
Step 5: 查看安装版本
Docker -v
wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm
3 运行一个docker容器:
3.1 拉去Mysql镜像
docker pull mysql
3.2 运行mysql镜像
命令: docker run --name test-mysql(容器名) -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
3.3 mysql镜像运行后:
3.4 进入mysql的终端,给用户授权
连接容器并连接Mysql服务: docker exec -it db524021f943(容器id) mysql -uroot -p123456
给root用户授权:参考链接:https://blog.csdn.net/gf0515/article/details/80466213
mysql> ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.09 sec)
mysql>
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql>
3.5 并测试使用Navicat连接,如下图:
4 本地的仓库创建:参考链接:https://segmentfault.com/a/1190000011277971
4.1 下载镜像:
4.2 启动容器
docker run -d -v /Users/kate/docker-data/localregistry:/var/lib/registry -p 5000:5000 --restart=always --name localregistry registry
-d : 后台运行容器,并返回容器ID
-v : 指定容器的目录到宿主机的目录的挂载
-p : 指定容器暴露端口
--restart=alwagys : 如果想让registry作为永久的可用仓库,应该在Docker machine重启 或退出之后,设置registry仍然能够自动重启或保持使用状态。
-name : 是指定容器名, localregistry表示此容器的名称,registry表示了镜像本身
4.3 使用nginx镜像作为例子上传到本地仓库:
4.3.1 docker search nginx
4.3.2 docker pull nginx
4.3.3 docker run -d -p 8081:80 nginx:latest
4.3.4 查看本地的端口:
netstat -na|grep 8081
或者直接访问localhost:8081
4.3.5 停止容器:docker stop【容器id】
4.3.6 修改镜像标签:
4.3.7 推送镜像到私服
4.3.8移除主机docker中已经存在的镜像
docker remove localhost:5000/nginx
注意:docker stop 【容器id】这个命令指示停止容器,此时不能删除镜像,必须移除所有停止的容器才能删除镜像
**需要移除所有停止状态的容器:
docker container ls -a
docker container prune
**参考链接:https://yeasy.gitbooks.io/docker_practice/container/rm.html
4.3.9 重新从私服中拉取
对于镜像仓库的其他操作参考:
https://blog.csdn.net/qq_39623859/article/details/79752803
https://docs.docker.com/registry/spec/api/#use-cases
5 网络层
参考链接:http://www.ywnds.com/?p=4714
5.1 bridge--容器默认的网络模式
主机:192.168.154.4
5.1.1 启动两个容器
docker run -d -i -t --name=centos_bridge /bin/bash
docker run -d -i -t --name=centos_bridge2 /bin/bash
主机查看网络:
docker network ls
docker network inspect bridge
docker network inspect [networkId]
进入centos容器:doceker exec -it 【容器id】 /bin/bash
在容器内安装ifconfig : yum install net-tools.x86_64
在容器内查看网络信息:ifconfig
容器cenos_bridge的网络:
容器cenos_bridge2的网络:
宿主机的网络:
5.2 overlay---多主机的网络模式
下载镜像 : docker pull progrium/consul
容器安装consul
启动节点1(server模式):
docker run -d -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name=node1 consul agent -server -bind=172.17.0.2 -bootstrap-expect=3 -node=node1
docker run -d -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name=node2 consul agent -server -bind=172.17.0.3 -join=172.17.0.2 -node-id=0)}') -node=node2
docker run -d -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name=node3 consul agent -server -bind=172.17.0.4 -join=172.17.0.2 -node-id=0)}') -node=node3 -client=172.17.0.4
docker run -d -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' --name=node4 consul agent -bind=172.17.0.5 -retry-join=172.17.0.2 -node-id=0)}') -node=node4
docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name=consul-node1 -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 53:53/udp -h consul consul agent -server -bind=172.17.0.2 -bootstrap -node=consul-node1
docker run -d -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name=consul-node2 consul agent -server -bind=172.17.0.7 -join=172.26.6.42 -node-id=0)}') -node=consul-node2
172.26.6.42
docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
docker run -d --name=node1 -h node1 -p 8400:8400 -p 8500:8500 -p 8600:53/udp progrium/consul -server -bootstrap-expect 3
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
3 镜像基本操作
3.1 创建阿里云的个人镜像仓库
3.1.1 注册账号
地址:
https://cr.console.aliyun.com/repository/cn-hangzhou/kate/repov1/images
3.1.2 创建镜像仓库
- 可以绑定你们的github地址
3.2 拉取公网的镜像并推送到阿里云的个人镜像仓库:
step 1:
拉取公网镜像:docker pull registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8
step 2:
查看镜像:docker images
step 3:
登录阿里云Docker Registry:
docker login --username=katehxq registry.cn-hangzhou.aliyuncs.com
step 4:
将镜像推送到Registry:
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/kate/repov1:[镜像版本号]
step 5:
docker push registry.cn-hangzhou.aliyuncs.com/kate/repov1:[镜像版本号]
step 6:
推送成功后:
4 dockerfile打包项目成为镜像
4.1 maven 安装http://maven.apache.org/download.cgi
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
环境准备:
Mvn -v
IEDA打开:spring-boot项目代码:
spring-boot-docker
测试运行:localhost:8080
Maven 项目打包:
打包
mvn package
启动
java -jar target/spring-boot-docker-1.0.jar
使用dockerfile打包成镜像:
mvn package docker:build
使用docker images命令查看构建好的镜像:
springboot/spring-boot-docker 就是我们构建好的镜像,下一步就是运行该镜像:
docker run -p 8080:8080 -t springboot/spring-boot-docker
启动完成之后我们使用docker ps查看正在运行的镜像:
可以看到我们构建的容器正在在运行,访问浏览器:localhost:8080/
查看容器的详细信息
[容器id] : docker ps 获得container id
Docker inspect [容器id]
进入运行中的容器:
docker exec -it dd5053708ec4 /bin/sh
Docker insperct 【容器id】 获得本地的source目录到容器的挂载目录Destination:
6 容器监控: cAdvisor、 InfluxDB和Grafana
cAdvisor:用于数据采集
InfluxDB:用于数据存储
Grafana: 用于数据展示
参考文档:https://segmentfault.com/a/1190000015548692
step 1: 部署 influxDB 服务
docker run -d --name influxdb -p 8086:8086 tutum/influxdb
说明:
step 2: 布署cadvisor服务
docker run -d \
--name=cadvisor \
-p 8082:8080 \
-v /:/rootfs,ro \
-v /var/run:/var/run \
-v /sys:/sys,ro \
-v /var/lib/docker/:/var/lib/docker,ro \
google/cadvisor \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxdb:8086
step 3: 部署granafa
docker run -d --name grafana -p 3000:3000 grafana/grafana
6 docker的网络层介绍
7 docker的存储层介绍
8 容器编排技术介绍
Marathon
Kubernate
9 mesos + marathon + docker
10 dice平台架构介绍
11
参考链接:https://www.alibabacloud.com/help/zh/doc-detail/60743.htm
阿里云镜像仓库:https://cr.console.aliyun.com/cn-qingdao/images
Docker Devicemapper存储介绍: https://www.jianshu.com/p/6ec8c9ecc5c2
lvm讲解: http://blog.51cto.com/fengyunshan911/1958236
Docker 文档:https://docs.docker.com/
docker安装:https://yeasy.gitbooks.io/docker_practice/install/centos.html
docker安装: https://blog.csdn.net/yohoph/article/details/80079078
dockerfile打包spring-boot项目:
http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html
阿里巴巴开源软件:https://opsx.alibaba.com
参考命令:
查看linux内核版本:
Uname -r
Uname -a
rpm -q centos-releas
Ps: 以下材料不限制本课程使用:
学习资源:
MIT在线课程:
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/
在线文档:
redhat官网:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/6.6_technical_notes/device-mapper-persistent-data
最好的提问网站:
Stackflow:
https://stackoverflow.com/search?q=spring+mvc
推荐书:
《docker》
1 window访问本机的虚拟机
2 开通本机的端口并且做到虚拟机的映射关系
3 win能访问本机的端口
4