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

注意:监控报警:微信报警,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
命令行测试:

七、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
}