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  ——进行安装

安装成功   !!!!

Docker理论简答的更多相关文章

  1. linux系统运维面试题简答

    1.     简述常用高可用技术 解答: Keepalived:Keepalived是一个保证集群高可用的服务软件,用来防止单点故障,使用VRRP协议实现.在master和backup之间通过mast ...

  2. 安装python包时遇到"error: Microsoft Visual C++ 9.0 is required"的简答

    简答 在Windows下用pip安装Scrapy报如下错误, error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall ...

  3. 【Python】安装python包时遇到"error: Microsoft Visual C++ 9.0 is required"的简答

    简答 在Windows下用pip安装Scrapy报如下错误, error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall ...

  4. mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊

    mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...

  5. Java 实现简答的单链表的功能

    作者:林子木  博客网址:http://blog.csdn.net/wolinxuebin 參考网址:http://blog.csdn.net/sunsaigang/article/details/5 ...

  6. 安装python包时遇到"error: Microsoft Visual C++ 9.0 is required"的简答(Python2.7)

    简答 在Windows下用pip安装Scrapy报如下错误, error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall ...

  7. .Net Core in Docker极简入门(下篇)

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 Docker-Compose 代码修改 yml file up & down 镜像仓库 最后 前言 上一篇[. ...

  8. 简答一波 HashMap 常见八股面试题 —— 算法系列(2)

    请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注 ...

  9. Docker最简教程

    本文旨在让你用最短的时间弄懂Docker命令操作,什么虚拟化都太泛泛了,不讲大道理,实践出真知,让你从此的日常开发和工作中在面对Docker时不再茫然失措而是得心应手.本文也不谈安装,我实在认为作为程 ...

随机推荐

  1. git 出现 fatal: remote origin already exists 错误

    当输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 出现 如下错误: 解决办法如下: 1.先输入 ...

  2. 我与SAP成都研究院吴院长的二三事

    这几天Jerry没怎么看手机,今天才注意到,昨天SAP中国研究院公众号上发布了一篇文章:SAP高管说: 体验经济时代下的SAP客户体验.仔细一看,这不是咱SAP成都研究院的吴院长么. 在今年没有发生部 ...

  3. 【hbase】hbase-2.2.1配置独立的zookeeper的安装与测试

    下载hbase-2.2.1-bin.tar.gz并执行安装命令: [hadoop@hadoop01 ~]$ tar -zxvf hbase--bin.tar.gz 查看安装目录: [hadoop@ha ...

  4. SQL SERVER-CROSS APPLY

    CROSS APPLY和 OUTER APPLY 区别详解 SQL Server 2005 新增 cross apply 和 outer apply 联接语句,增加这两个东东有啥作用呢? 我们知道有个 ...

  5. MyBatis-Migrations安装和使用

    这里本人是在MAC机上安装使用 1. 下载 mybatis-migraions安装包,地址:https://www.oschina.net/news/94218/mybatis-migrations- ...

  6. 使用VS.NET2019做为C++开发专用IDE

    一.下载安装包: https://visualstudio.microsoft.com/zh-hans/downloads/ 我下载的是企业版本. 二.安装支持C++ 序列号: Visual Stud ...

  7. Vue项目中自动将px转换为rem

    一.配置与安装步骤: 1.在 Vue 项目的 src 文件夹下创建一个 config 文件夹: 2.在 config 文件夹中创建 rem.js: 3.将以下代码复制到 rem.js 中: // 基准 ...

  8. 如何利用AI识别未知——加入未知类(不太靠谱),检测待识别数据和已知样本数据的匹配程度(例如使用CNN降维,再用knn类似距离来实现),将问题转化为特征搜索问题而非决策问题,使用HTM算法(记忆+模式匹配预测就是智能),GAN异常检测,RBF

    https://www.researchgate.net/post/How_to_determine_unknown_class_using_neural_network 里面有讨论,说是用rbf神经 ...

  9. 使用CIFAR-10样本数据集测试卷积神经网络(ConvolutionalNeuralNetwork,CNN)

    第一次将例程跑起来了,有些兴趣. 参考的是如下URL: http://www.yidianzixun.com/article/0KNz7OX1 本来是比较Keras和Tensorflow的,我现在的水 ...

  10. SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】-原生代码+@Bean+效果展示

    由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件,class MyServlet()/clas ...