美文网首页
docker镜像的分层

docker镜像的分层

作者: zwb_jianshu | 来源:发表于2019-07-24 20:04 被阅读0次

一、介绍

docker镜像的分层(kvm 链接克隆,写时复制的特性)
镜像分层的好处:复用,节省磁盘空间,相同的内容只需加载一份到内存。
修改dockerfile之后,再次构建速度快

二、查看docker镜像分层

docker  load -i 镜像名 导入镜像时可以查看分层信息
docker  image   history  镜像名(id)查看镜像分层信息

三、通过修改dockerfile来优化镜像分层信息

影响docker分层信息的dockerfile字段:ADD、RUN等。
尽量合并RUN和ADD的使用来减少镜像分层数,达到优化镜像目的。

四、容器间的互联(--link 是单方向的!!!)

docker run -d -p 80:80 nginx
docker run -it --link web01:web01 nginx /bin/bash
ping web01  

五、使用docker运行zabbix-server
1.下载并上传相关zabbix和mysql镜像包

zabbix-java-gateway.tar.gz
zabbix-server-mysql.tar.gz
zabbix-web-nginx-mysql.tar.gz
docker-mysql-5.7.tar.gz

2.执行docker命令

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

3.在客户端安装zabbix-agent,并配置server

vim /etc/zabbix/zabbix_agentd.conf
server   10.0.0.11
启动agent
systemctl  restart  zabbix-agent.service

4.服务端重启mysql的docker服务

systemctl   restart  zabbix_mysql-server

3.浏览器访问查看,并配置zabbix

image.png
注意:监控报警:微信报警,alpine
yum 安装zabbix好使

六、docker registry(私有仓库)
1.普通的registry

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry
上传镜像到私有仓库:
a:给镜像打标签
docker  tag nginx:v1 10.0.0.11:5000/nginx:v1
b:上传镜像
docker push 10.0.0.11:5000/nginx:v1
docker run -d 10.0.0.11:5000/nginx:v1
如果遇到报错:
The push refers to repository [10.0.0.11:5000/centos6.9_ssh]
Get https://10.0.0.11:5000/v2/: http: server gave HTTP response to HTTPS client
解决方法:
vim  /etc/docker/daemon.json
{

  "insecure-registries": ["10.0.0.11:5000"]
}
systemctl restart docker

2.带basic认证的registry

安装httpd并创建加密文件
yum install httpd-tools -y
mkdir /opt/registry-var/auth/ -p
htpasswd  -Bbn zwb 123456  >> /opt/registry-var/auth/htpasswd
运行并挂载仓库
docker run -d -p 5000:5000 --restart=always -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e  "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry 

命令行测试:

image.png

七、docker-compose(单机版的容器编排工具)

1.安装(一)
yum install -y python2-pip(需要epel源)
pip install docker-compose(默认pypi源在国外)
##pip 加速
1.安装(二)
yum install docker-compose  -y (需要epel源)
2.##详细指令
http://www.jianshu.com/p/2217cfed29d7
3.docker-compose.yml文件配置
mkdir  /data/my_wordpress/ -p
cd /data/my_wordpress/
vim docker-compose.yml
version: '3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - web_data:/var/www/html
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
    web_data:
4.#启动
docker-compose up[start|stop|restart|down]
5.#后台启动
docker-compose up -d

八、重启docker服务,容器全部退出的解决办法

方法一:docker run  --restart=always

方法二:"live-restore": true
docker server配置文件/etc/docker/daemon.json参考
{
 "registry-mirrors": ["http://b7a9017d.m.daocloud.io"],
 "insecure-registries":["10.0.0.11:5000"],
 "live-restore": true
}

相关文章

  • master docker 4(镜像)

    1.查看镜像 docker image ls 2.查看镜像分层信息 docker image history 镜像...

  • docker镜像的分层

    一、介绍 二、查看docker镜像分层 三、通过修改dockerfile来优化镜像分层信息 四、容器间的互联(--...

  • 镜像分层原理及容器层写时复制

    一、镜像分层与容器层 在进行docker pull 下载镜像的时候,通过下图可以看到镜像是分层下载并解压的。如ng...

  • (三)Docker高级应用

    Docker中的文件和数据 Docker镜像通过UnionFS进行分层存储(可以通过docker history查...

  • Docker镜像分层

    假如你拥有100平米的房子(服务器),由于你(PHP应用)需要吃喝拉撒睡,所以整个房子分隔出卧室、厨房、卫生间等,...

  • Docker-镜像

    镜像 base镜像 镜像分层结构 Dockerfile构建镜像 Docker构建镜像时会使用缓存,下载时也会 Do...

  • Day81-Docker_镜像分层,容器间互联,镜像仓库

    docker镜像的分层(kvm 链接克隆,写时复制的特性) 镜像分层的好处: 复用,节省磁盘空间,相同的内容只需加...

  • docker(二)

    第十一章 docker镜像的分层(kvm 链接克隆,写时复制的特性) 镜像分层的好处:复用,节省磁盘空间,相同的内...

  • docker详解2——镜像管理,容器的基本操作,镜像制作

    Docker镜像管理 镜像的结构 docker镜像是一个典型的分层结构 只有最上面一层是可写的 其他都是只读的固化...

  • docker镜像分层机制

    什么是 Docker 镜像分层机制?首先,让我们来看下 Docker Image 中的 Layer 的概念: Do...

网友评论

      本文标题:docker镜像的分层

      本文链接:https://www.haomeiwen.com/subject/rsmfrctx.html