docker_example_01

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=(uuidgen | awk '{print tolower(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=(uuidgen | awk '{print tolower(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=(uuidgen | awk '{print tolower(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=(uuidgen | awk '{print tolower(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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350