Docker

一,介绍

       Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,更支持linux。作用是可以把一台服务器隔离成一个一个的容          器,每个容器可以运行不同的应用,每个容器之间是相互隔离的,并且容器的创建和停止都非常快,容器占用的资源有限。

二,名词

       Container(容器):Docker将宿主机隔开的一个个独立空间。

       Image(镜像):一个特殊的文件系统,即对某一早时刻容器状态的备份。

       Registry(记录中心):下载镜像的地方。

                 https://hub.docker.com/      //docker官网,在国外,访问慢

                 https://dev.aliyun.com/search.html      //阿里云

                 https://c.163yun.com/hub#/m/home/     //网易云

三,网络配置

       host模式:和当前宿主机共用一个网络配置。

       container模式:共用已有的容器的网络配置。

       none模式:不配置,也就是不能网络通信。

       bridge模式(默认):最常用的配置,为当前的容器分配一个没被占用的IP,若不指定IP,IP地址会按顺序递增。

四,端口映射

       命令-p

五,Docker安装与使用

       安装:Ubuntu系统本地安装,命令:apt-get install -y docker.io

       启动:(sudo)service docker start      //sudo 如果在root权限不用加

       停止:service docker stop

       查看版本:docker --version 或者 docker -v

       查看镜像:docker images

       搜索镜像:docker search 镜像关键词

       镜像垃取:docker pull 镜像名称

       镜像删除:docker rmi 镜像id或镜像名称

       生成容器:docker run -d -p 8888:8080 --name 取的容器名 镜像名

              -d:表示后台运行

              -p:端口映射,8080容器里应用的端口,8888映射后访问的端口

       查看容器:

              查看正在运行的容器:docker ps 或者 docker ps|grep 容器关键词

              查看全部的容器:docker ps -a 或者 docker ps -a|grep 容器关键词

       进入容器:docker exec -it 容器的id/容器的名称 /bin/bash

              进入后可以访问里面的文件:比如Tomcat容器:usr/tomcat/webapps/root

       退出容器:exit

       停止容器:docker stop 容器ID或者名称

       启动容器:docker start 容器ID或者名称

       删除容器:docker rm 容器ID或者名称

       拷贝文件:docker cp 宿主机目录及文件 容器名称:容器目录

       设置固定IP:

              1,创建网络,指定网段:docker network create --subnet=172.18.0.0/16 网络名称

              2,创建容器,指定IP:docker run -d -it --net 网络名称 --ip 172.18.0.8 --name 取的容器名 镜像名

       查看容器的IP:

              查看容器的所有信息(包括IP):docker inspect 容器ID

      查看所有容器的IP:

                     docker inspect --format='{{.name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -ap)

六,dockerfile

       脚本文件,内置了命令,执行脚本文件生成镜像,解决多个容器发布相同的文件每个人生成容器的环境不一样的问题,更佳规范,统一,方便传播。

       1,编写Dockerfile文件

             文件的名称必须为Dockerfile,下面命令不一定要全写。

             FROM:依赖的底层镜像名称

             MAINTAINER:指定镜像创建者

             ENV:设置环境变量

             RUN:运行shell命令

             COPY:将编译机本地文件拷贝到镜像文件系统中   //copy usr/index.jsp usr/tomcat/webapps/ROOT/

             EXPOSE:指定监听端口     // EXPOSE 8080/tcp

             ENTRYPOINT:预执行命令,创建容器并启动后才执行

       2,执行命令生成镜像:docker build -t 取的镜像名称 Dockerfile文件的目录

七,容器可视化

       操作界面工具:DockerUI和Shipyard

       1,Shipyard的安装

             需要防火墙开方4001端口:sudo ufw allow 4001--

         安装命令:

                docker pull rethinkdb

                docker pull microbox/etcd

                docker pull shipyard/docker-proxy

                docker pull swarm

                docker pull shipyard/shipyard

                docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb

                docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd:latest -name discovery

                docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest

                docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://当前机器的IP:4001

                docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 当前机器的IP:2375 etcd://当前机器的IP:4001

                docker run -ti -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8080:8080 shipyard/shipyard:latest server -d tcp://swarm:3375

       2,访问Shipyard管理界面:URL:localhost:8080      用户:admin     密码:shipyard

 

八,搭建抢购网环境

      1,安装Ubuntu16.04系统

            安装SSH服务

            解决远程SSH连接root用户拒绝问题

      2,安装docker

      3,安装Shipyard

      4,下载基础镜像

             docker pull centos

      5,创建镜像

            a,上传环境文件

            b,给sh文件授权        chmod 777 *.sh

            c,执行创建镜像脚本  

                 全部执行: ./im-1.sh(文件名称) all n

                  指定执行:./im-1.sh文件名称 镜像名称 n dockerfile文件地址                       打开im-1.sh脚本文件,images[]="镜像名称",paths[]="dockerfile文件地址"

6,创建容器

      ./InitContainers-2.sh init

7,开始配置

      配置MySQL

      配置Redis

      配置nginx

8,分布式ID生成器,发布到容器

//公共的接口项目
public interface IdWorkerService{
    public long getId();
}



//提供者项目
@Component
@Service(interfaceClass=IdWorkerService.class)   //注册到注册中心
public class IdWorkerServiceImp implements IdWorkerService{
    public long getId(){
        try{
            //通过时间标识,机器标识算法获取唯一ID
            return IdWorker.getFlowIdWorkerInstance().nextId();
        }catch(Exception e){
            return 0;
        }    
    }
}



//消费者项目
@RestController
public class IdWorkerController{
    @DubboConsumer
    private IdWorkerService idWorkerService;
    
    @RequestMapping("getId")
    public IdWorker getId(){
        long id = idWorkerService.getId();

        IdWorker idWorker = new IdWorker();
        idWorker.setId(id);
        
        if(id<=0){
            idWorker.setId(0);
        }

        return idWorker;
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值