zoukankan      html  css  js  c++  java
  • Docker理论简答

    Docker理论简答:

    1、        介绍对docker的认识(10分)

    Docker是容器,容器不是docker

    Dockers就是一个文件夹,它欺骗操作系统说自己是一个操作系统,然后把所需要的东西软连接进去所以它占用空间极少!

    Docker 可以让服务器上启用多个相同的服务而不产生冲突,因为docker把服务放在一个一个容器里!

    2、        docker四中网络模式及其理解(10分)

    host:跟物理机一样,docker 默认使用

    brige:为每个容器分配一个namespace

    container:多个容器使用相同的网络

    none:没有任何网络,自己是独立的(安全)

    3、        进入docker容器的命令,查看docker版本、容器、镜像的命令,下载、上传的命令(10分)

      Docker exec -it 容器名 /bin/sh或者/bin/sh

      Docker –version    docker ps -a    docker images  docker push    docker pull

    4、        描述docker的好处(10分)

    Docker 可以让两个相同的程序运行且不产生任何冲突

    Docker占用空间极小

    Docker启用方便灵活

    Docker节省资源

    5、        写出10个docker的常用命令(10分)

    Docker run -itd –name 123 centos

    Docker exec -it 123  /bin/sh

    Docker ps -a

    Docker network ls

    Dockers images

    Docker  rm -f 123

    Docker network create -d macvlan  --subnet=192.168.1.0/24 --gateway=192.168.1.1 mac

    Docker network rm mac

    Syctl show

    Docker start 123

    docker swarm init --advertise-addr 192.168.43.71

     实验

    三台虚拟机集群 然后

      Vim /etc/hosts     //添加节点服务器

    192.168.43.71 node1

    192.168.43.85 node2

    192.168.43.165 node3

    docker swarm init --advertise-addr 192.168.43.71  //创建集群

    docker swarm join

        --token SWMTKN-1-1ej7wnjhla8dmdhebff11wwl0n65t214u648z5h24r7jsfyiu4-asgad1z57w2d68x0hfqs28l6w

    192.168.43.71:2377    //在两台节点服务器输入让他加入

    Ssh-keygen  // 创建密钥

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.85 //传送免登录密钥

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.165//传送免登录密钥

    docker node ls   //查看你节点服务器

    sysctl -p      //刷新一下

       79  scp /etc/sysctl.conf root@node2:/etc/  

    Ssh node2  

    Sysctl -p

         scp /etc/sysctl.conf root@node3:/etc/

    ssh node3    

    sysctl -p

    docker pull registry:2  //下载本地仓库镜像

    docker run -itd -p 5000:5000 --restart=always -v /opt/data/registry/:/var/lib/registry --name registry registry:2 //创建仓库镜像容器

    vim /usr/lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.43.71:5000

    systemctl daemon-reload && systemctl restart docker.service

    scp /usr/lib/systemd/system/docker.service root@node2:/usr/lib/systemd/system/docker.service     //上传到节点2

    ssh node2

    systemctl daemon-reload && systemctl restart docker.service

    exit

    scp /usr/lib/systemd/system/docker.service root@node3:/usr/lib/systemd/system/docker.service   

    ssh node3

    systemctl daemon-reload && systemctl restart docker.service

    exit

    vi dockerfile     //nginx自启动镜像

    FROM centos

    RUN   yum -y install net-tools

    RUN   yum -y install pcre-devel

    RUN   yum -y install zlib-devel

    RUN   yum -y install gcc*

    RUN   yum -y install make

    RUN useradd  nginx

    COPY  nginx-1.6.0.tar.gz /

    RUN tar zxf nginx-1.6.0.tar.gz  -C /root

    WORKDIR /root/nginx-1.6.0/

    RUN  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

    RUN make && make install

    RUN ln -s /usr/local/nginx/sbin/nginx /usr/bin

    RUN ln -s /usr/local/nginx/sbin/nginx /etc/init.d/nginx

    RUN chmod +x /etc/init.d/nginx

    EXPOSE 80

    CMD  /usr/bin/nginx && /bin/bash

    Docker  build -t nginx .

    Docker tag nginx 192.168.43.71:5000/nginx   //打上标签

    Docker push 192.168.43.71:5000/nginx  //上传到私有仓库

    Rm dockerfile

    Vi dockerfile     //php的dockerfile

    FROM centos

    RUN    yum -y install net-tools gd libxml2-devel libjpeg-devel libpng-devel  make gcc* vim  dialog psmisc

    RUN useradd -M -s /sbin/nologin nginx

    ADD libmcrypt-2.5.8.tar.gz /

    WORKDIR /libmcrypt-2.5.8

    RUN ./configure && make && make install

    RUN ln -s /usr/local/lib/libmcrypt.* /usr/lib/

    ADD mhash-0.9.9.9.tar.gz /

    WORKDIR /mhash-0.9.9.9

    RUN ./configure && make && make install

    RUN ln -s /usr/local/lib/libmhash* /usr/lib/

    ADD mcrypt-2.6.8.tar.gz /

    WORKDIR /mcrypt-2.6.8

    ENV   LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    RUN ./configure

    RUN make && make install

    ADD php-5.3.28.tar.gz /

    WORKDIR /php-5.3.28

    RUN ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib

    RUN make && make install

    RUN cp /php-5.3.28/php.ini-development /usr/local/php/php.ini

    RUN sed -i "s/;default\_charset = "iso-8859-1"/default\_charset = "utf-8"/" /usr/local/php/php.ini

    RUN sed -i 's/short_open_tag = Off/short_open_tag = On/' /usr/local/php/php.ini

    RUN ln -s /usr/local/php/bin/* /usr/local/bin/

    RUN ln -s /usr/local/php/sbin/* /usr/local/sbin/

    WORKDIR /usr/local/php/etc/

    RUN cp php-fpm.conf.default php-fpm.conf

    RUN sed -i 's/;pid = run/php-fpm.pid/pid = run/php-fpm.pid/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/user = nobody/user = nginx/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/group = nobody/group = nginx/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/pm.max_children = 5/pm.max_children = 50/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/pm.start_servers = 2/pm.start_servers = 20/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 5/' /usr/local/php/etc/php-fpm.conf

    RUN sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 35/' /usr/local/php/etc/php-fpm.conf

    RUN /usr/local/sbin/php-fpm

    RUN cp /php-5.3.28/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm

    RUN chmod +x /etc/init.d/php-fpm

    RUN /etc/init.d/php-fpm restart

    RUN chkconfig --add php-fpm

    RUN chkconfig php-fpm on

    CMD /bin/bash && /etc/local/sbin/php-fpm

    docker build -t php .

    Dockers tag php 192.168.43.71:5000/php

    Docker push 192.168.43.71:5000/php

    其他两台主机下载两个镜像

    Docker network create -d overlay rj

    docker pull dockersamples/visualizer  //下载视图

    docker tag  dockersamples/visualizer 192.168.43.71:5000/visualizer

    docker push 192.168.43.71:5000/visualizer

    docker run -itd -p 8888:8080 -e HOST=192.168.43.71 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer 192.168.43.71:5000/visualizer      //创建可视化容器

    然后访问

     

    Mkdir /www

    docker service create --mode global --network rj  --mount type=bind,src=/www,dst=/www,ro=true  --name nginx -p 8002:80 -p 10124:22 192.168.43.71:5000/php     //生成三个nginx然后访问网页

     

     

    docker run -itd    --name 123 -v /www  192.168.43.71:5000/php  //创建php容器

    docker exec -it 123 /bin/bash

    vim /usr/local/php/etc/php-fpm.conf

    //其他需要修改的在dockerfile文件已修改!!!

    Mkdir /www

    Vim /www/index.Php

    <?php

    Phpinfo()

    ?>

    /etc/init.d/php-fpm restart

    Docker network connect bridge restartnginx.k39roraugubkdp99wqv1754gw.p2i73tdepcslpclqm3comtveb  //给nginx镜像添加bridge网卡

     

    Killall -s HUP nginx

     

    剩下两台容器跟前面步骤一样!

    开启一台

    在mysql授权

    grant all on *.* to 'root'@'192.168.43.%' identified by '';

    flush privileges;

    在所有php上创建测试文件

    <?php

    $link=mysql_connect('192.168.43.206','root','');

    if($link) echo"�~A��~V~��~^�~N��~H~P�~J~_";

    mysql_close();

    ?>

     

    开启一台虚拟机做nfs

    Mkdir /www   创建共享目录

    Vim /etc/exports

    /www 192.168.43.*  (insecure,rw,sync,no_root_squash)

    其他三台docker主机挂载 mount 192.168.43.198:/www /www

    在打开一台主机做keeplived+nginx

    tar zxf nginx-1.6.0.tar.gz

    cd nginx-1.6.0

    useradd -M -s /sbin/nologin nginx

    yum install -y pcre-devel zlib-devel

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

    make && make install

    ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

    vim /usr/local/nginx/conf/nginx.conf

    添加:

    upstream web {

            server 192.168.43.71:8002;

            server 192.168.43.85:8002;

            server 192.168.43.165:8002;

    }

    location =/ {

            proxy_pass http://web;

    }

     

     

    轮询成功

    搭建keepalived

    192.168.43.166为master

    192.168.43.167为backup

    Master上配置:

    tar zxf keepalived-1.2.13.tar.gz

    cd keepalived-1.2.13

    ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/

     make && make install

    cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak  ——备份

     vim /etc/keepalived/keepalived.conf

     

     

    开启另一台机器安徽组那个nginx与keeplived 和上面步骤一样

     

     

     

     

    访问成功

     

     

    安装论坛,在nfs服务器上

    unzip Discuz_7.2_FULL_SC_UTF8.zip

     rm -rf /www/*

     cd Discuz_7.2_FULL_SC_UTF8

     cp -p -R upload/* /www/

     chmod 777 /www/ -R

    useradd -M -s /sbin/nologin nginx

    chown nginx.nginx /www/ -R

    firefox 192.168.43.166  ——进行安装

     

     

    安装成功   !!!!

  • 相关阅读:
    修改sharepoint列表样式
    Zend Server 安装与配置图文教程
    安装zendstudio和破解方法及配置svn
    C#索引器
    曝光尚德机构亲身经历请大家不要上当
    不支持PowerShell 2.0版本(don't support PowerShell version 2.0. )
    SharePoint Project Server List 列表CURD操作使用rest api接口
    解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题
    Project Server2016升级安装问题项目中心无法显示
    Project Server 2016 RestAPI调用测试
  • 原文地址:https://www.cnblogs.com/guarderming/p/9455878.html
Copyright © 2011-2022 走看看