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=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

你可能感兴趣的:(docker_example_01)