恶补Docker

   日期:2020-05-22     浏览:153    评论:0    
核心提示:设置keystone,在重启httpd时候报错-- Unit httpd.service has begun starting up.5月 18 20:50:59 openstack130 httpd[24988]: AH00526: Syntax error on line 4 of /etc/httpd/conf.d/wsgi-keystone.conf:5月 18 20:50:59 openstack130 httpd[24988]: Invalid command WSGIDaemonPro运维

什么是容器

  • 应用程序封装和交付的核心技术
  • 容器三个内核技术组成
  •  1.Cgroups(Control Groups) --资源管理
    
  •  2.NameSpace-进程隔离
    
  •  3.SELinux安全
    
  • 由于是在物理机上实施隔离,启动一个容器,可以像启动一个程序一样快速(真的很快)

什么是Docker

  • 完整的一套容器管理系统
  • Docker提供一组命令,让用户更加方便直接地使用容器技术,而不需要过关心底层内核技术

Docker特点

优点

  1. 相比传统虚拟化,容器更加简洁
  2. 相比于传统虚拟机,不用安装给每个容器安装操作系统,容器使用的共享公共库和程序

缺点

  1. 容器隔离性没有虚拟化强
  2. 共用Linux内核,安全性先天不足
  3. SELinux难以驾驭
  4. 监控容器和容器排错是挑战

安装部署

因为现在容器技术确实是跟这夏天一样的热,所以镜像什么不是问题。
各大镜像站点都温馨的提供了镜像,各位各取所需
简单的举个栗子:
清华大学站点有相应的说明,
点击进入 清华大学Docker Community Edition 镜像使用帮助

yum install docker-ce

什么是镜像

  1. Docker中容器是基于镜像启动的
  2. 镜像是启动容器的核心
  3. 镜像采用分层设计
  4. 使用快照COW,确保底层数据不丢失

自定义镜像

命令:docker commit
简单的栗子

docker run -it docker.io/centos
#首先运行一个镜像
然后你在里面一顿增删改之后
docker ps
docker commit 原镜像id 新镜像:标签

Dockerfile
就是以名为Dockerfile文件形式创建你自己的镜像,通俗点就是写个药方,照方抓药。
***文件名开头一个字母要大写哦
Dockerfile语法格式:

– FROM:基础镜像

– MAINTAINER:镜像创建者信息(说明)

– EXPOSE:开放的端口

– ENV:设置环境变量

– ADD:复制文件到镜像

– RUN:制作镜像时执行的命令,可以有多个

– WORKDIR:定义容器默认工作目录

– CMD:容器启动时执行的命令,仅可以有一条CMD

[root@docker1 bulid]# vi Dockerfile
FROM  docker.io/myos:latest
RUN yum -y install httpd
ENV EnvironmentFile=/etc/sysconfig/httpd
WORKDIR /var/www/html/            //定义容器默认工作目录
ADD index.html index.html
EXPOSE 80                //设置开放端口号
EXPOST 443
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
#然后执行创建命令
#格式:docker build -t 新的镜像名字 Dockerfile所在文件目录
举个栗子
[root@docker1 bulid]# docker build -t docker.io/myos:http .

创建私有镜像仓库

大家都知道wifi放在隔壁房间,信号就是差一点。同样的官方镜像仓库hub.docker。也是这样的。国内是由有其他的公有镜像仓库,像是阿里啊,有兴趣大家去看看,速度肯定是ok的。既然有公的,那肯定也有私的,个人就是可以创建的。
网上教程都是有的,大多是直接拿私有仓库镜像当仓库。这里给大家弄一个别的款式的。

[root@docker1 bulid]# yum install docker-distribution
[root@docker1 bulid]# systemctl start docker-distribution
[root@docker1 bulid]# systemctl enable docker-distribution
装包,起服务。

然后,在另外的客户端就可以配置使用

[root@docker2 ~]# vim /etc/sysconfig/docker
INSECURE_REGISTRY='--insecure-registry docker1:5000'
ADD_REGISTRY='--add-registry docker1:5000'
[root@docker2 ~]# systemctl restart docker
[root@docker2 ~]# docker run -it myos:http /bin/bash 
#你想看看还有什么镜像可以直接使用
[root@docker1 bulid]# curl http://私有仓库地址:5000/v2/_catalog
#查看某个镜像标签
[root@docker1 bulid]# curl http://私有仓库地址:5000/v2/docker.io/busybox/tags/list 

自定义网桥

既然镜像上面是跑程序,当然是离不开网络。

  • 查看默认Docker给大伙准备的网络模型
[root@docker1 ~]# docker network list
996943486faa        bridge              bridge              local                              
63c88dcc3523        host                host                local               
5e5ab3d45e27        none                null                local 
#虚拟机网络三件套 一桥接二主机三无网络
[root@docker1 ~]# ip a s
#默认情况下你装了docker之后你查看你所有的网卡信息里面是会多出来一个dockerXX这样的网卡

你可以动手做一个新的网桥

[root@docker1 ~]# docker network create --subnet=新的ip/子网掩码 新的网桥名称
[root@docker1 ~]# docker network list #查看所有网络模型
[root@docker1 ~]# ip a s #查看所有网卡信息
[root@docker1 ~]# docker network inspect 新网桥名字 #你可以检查下网桥的基础详情

自定义网桥启动容器食用方法

[root@docker1 ~]# docker run --network=你的网桥名字 -itd 镜像/标签
[root@docker1 ~]# docker inspect 已启动容器id 
#你可以看到.NetworkSettings.IPAddress 就是容器ip
[root@ae1500292be8 /]# ping 172.17.0.3 #一般ping容器自己的id肯定能通

删除网桥

[root@docker1 ~]# docker network rm 网桥名字

题外话

关于docker网络对宿主机网络的影响
有人是已经有做过相关实验
总结起来就是docker会在你心爱的自己上自立门户,影响貌似没有影响,因为这里涉及到iptables。本人愚钝,不是很熟。有心人可以,循着下面链接过去,走上一遭。文章里面相关的信息挺全的。就这样子了。友情连接
不要觉得中间少了一个一块docker的基础操作,因为基础这么多年烂大街,我补的是自己那些不常用的。
祝君工作顺利。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服