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


安装成功 !!!!
Docker理论简答的更多相关文章
- linux系统运维面试题简答
1. 简述常用高可用技术 解答: Keepalived:Keepalived是一个保证集群高可用的服务软件,用来防止单点故障,使用VRRP协议实现.在master和backup之间通过mast ...
- 安装python包时遇到"error: Microsoft Visual C++ 9.0 is required"的简答
简答 在Windows下用pip安装Scrapy报如下错误, error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall ...
- 【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 ...
- mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊
mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...
- Java 实现简答的单链表的功能
作者:林子木 博客网址:http://blog.csdn.net/wolinxuebin 參考网址:http://blog.csdn.net/sunsaigang/article/details/5 ...
- 安装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 ...
- .Net Core in Docker极简入门(下篇)
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 Docker-Compose 代码修改 yml file up & down 镜像仓库 最后 前言 上一篇[. ...
- 简答一波 HashMap 常见八股面试题 —— 算法系列(2)
请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注 ...
- Docker最简教程
本文旨在让你用最短的时间弄懂Docker命令操作,什么虚拟化都太泛泛了,不讲大道理,实践出真知,让你从此的日常开发和工作中在面对Docker时不再茫然失措而是得心应手.本文也不谈安装,我实在认为作为程 ...
随机推荐
- self attention pytorch代码
实现细节; 1.embedding 层 2.positional encoding层:添加位置信息 3,MultiHeadAttention层:encoder的self attention 4,sub ...
- 分布式系统session一致性解决方案
在单机系统中,不存在Session共享问题,但是在分布式系统中,我们必须实现session共享机制,使得多台应用服务器之间会话统一,如果不进行Session共享会出现数据不一致,比如:会导致请求落到不 ...
- 判断是否发生url跳转
url="https://www.baidu.com/" url='http://www.freebuf.com/fevents/133225.html' # 方法一:禁止跳转:a ...
- Linux下用的脚本
http://blog.itpub.net/29510932/viewspace-1166603/ 批量启动Tomcat 点击(此处)折叠或打开 #!/bin/bash #JDK路径 export J ...
- p3.BTC-协议
数字货币是文件,难伪造,但是容易复制,不像实体货币,花出去就没了,数字货币存在double spending attack,双花攻击. 去中心化的货币,需要解决两个问题: 1.货币的发行 挖矿 2.交 ...
- 码云和Git使用说明
Git下载网站: https://git-scm.com/download/win 码云网站 :https://gitee.com 下载Git,并一路下一步安装. 鼠标空白处右键点击,出现两个 ...
- SpringBoot使用MockMVC单元测试Controller
对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络 ...
- Flink原理(三)——Task(任务)、Operator Chain(算子链)和Slot(资源)
本文是参考官方文档结合自己的理解写的,所引用文献均已指明来源,若侵权请留言告知,我会立马删除.此外,若是表达欠妥的地方,欢迎大伙留言指出. 前言 在上一篇博客Flink原理(二) ——资源一文中已简要 ...
- 14.专攻python和centos7
大牛博客:https://blog.51cto.com/yangrong/p5 用户接口应用程序: [root@python01 ~]# ps aux|grep bashroot 23860 ...
- HTML&CSS基础-子元素的伪类选择器
HTML&CSS基础-子元素的伪类选择器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html的源代码 <!DOCTYPE html> <html& ...