docker镜像的分层

2019-07-24  本文已影响0人  zwb_jianshu

一、介绍

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
}
上一篇 下一篇

猜你喜欢

热点阅读