昨日内容回顾:
- dockerfile的优化
- 编译速度
- 充分利用缓存镜像,将不常变更的指令放在靠前的位置;
- 在不影响功能的前提下,最好是可以合并多条指令,可以减少中间容器或者镜像的产生;
- 软件源最高更换国内较稳定的软件源,相比国外的软件源速度会更快;
- 使用".dockerignore"文件忽略Dockerfile编译不需要的文件;
- 镜像体积大小
- 删除无用的缓存文件,比如说已经安装的编译器,软件包,缓存等信息;
- 如果软件能够在较小的基础镜像运行起来,建议使用小镜像,比如alpine,busybox;
- 基于多阶段构建,将需要的软件包进行拷贝即可;
- 进阶知识
- namespace:
对资源进行隔离,包括但不限于: ipc,user,mnt,net,uts,pid....
- chroot:
将程序所在一个目录路径下,指定为个目录为根目录。
- cgroup:
对资源限制,包括但不限于cpu,memory,disk,...
- overlay2
联合文件系统,lower(只读),upper(读写),work(临时存储文件),merged(给用户的展示层)
- docker 容器相关的命令补充:
- docker logs
信息输出到"/dev/stderr","/dev/stdout"
- docker run --restart
no:
不重启。
always: *****
总是重启。
unless-stop: ***
除非重启前容器已经处于退出状态,否则也会重启。
on-failure
等效于always。
on-failure:3
表示重启次数达到3次后就不在重启。
- docker网络
- 单机网络
- none
不分配和任何网卡。
- host
和宿主机共享网络空间。效率最高。
- bridge
桥接模式,默认模式。会生成一对虚拟网卡。
- container
使用某个已存在容器的网络空间。
- custom
自动以网络。
- 跨主机网络
- overlay
叠加网络。
今日内容:
- docker-compose
- docker registry
- harbor
- hub的仓库使用
- prometheus
安装docker-compose:
1.部署docker-compose
yum -y install epel-release
yum -y install docker-compose
2.查看docker compose的版本
docker-compose version
快速部署:
wget http://192.168.11.253/Docker/day05-/softwares/oldboyedu-docker-compose.tar.gz
tar xf oldboyedu-docker-compose.tar.gz && cd docker-compose && yum -y localinstall *.rpm
使用docker-compose批量启动zabbix系统:
cat > docker-compose.yaml <
# 指定网络配置
networks:
# 网络名称
zabbix-net:
# 配置和IP地址相关的信息
ipam:
# 指定驱动,若不指定,则默认值为default,以单点网络为例,默认的网络是bridge类型哟~
# driver: default
# 指定网络的配置信息
config:
# 指定子网
- subnet: 172.30.100.0/24
# 对于gateway参数目前仅有"version 2"才支持哟~
# gateway: 172.30.100.254
# 给网络打标签
labels:
school.oldboyedu.com: "老男孩IT教育"
class.oldboyedu.com: "Linux80"
auther.oldboyedu.com: "oldboyedu-linux"
# 指定服务配置
services:
# 服务的名称
mysql-server:
# 指定服务的镜像名称
image: mysql:8.0
# 指定容器的重启策略
restart: always
# 向容器传递环境变量
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
# 指定网络
networks:
- zabbix-net
# 容器的启动命令,相当于Dockerfile的CMD指令
command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:alpine-6.2-latest
restart: always
networks:
- zabbix-net
zabbix-server:
# 指定服务依赖,表示当前依赖于"mysql-server"服务
depends_on:
- mysql-server
image: zabbix/zabbix-server-mysql:alpine-6.2-latest
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
ZBX_JAVAGATEWAY: zabbix-java-gateway
networks:
- zabbix-net
# 指定端口映射,左边的是宿主机的端口,右边是容器端口,类似于"-p"选项。
ports:
- "10051:10051"
zabbix-web-nginx-mysql:
depends_on:
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
ports:
- "80:8080"
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
networks:
- zabbix-net
EOF
创建:
docker-compose -f 1111 -p oldboyedu-linux82 up -d
通用选项说明:
-f:
指定docker-compose的配置文件,若不指定,则默认值为"docker-compose.yaml"或者"docker-compose.yml"。
-p:
指定项目名称。
up:
启动服务,常用选项"-d",表示后台启动。
docker-compose run zabbix-web-nginx-mysql nginx -t
启动容器时指定命令。类似于docker run,他会创建新的容器哟。
删除:
docker-compose -f 1111 -p oldboyedu-linux82 down # 删除容器和网络
docker-compose -f 1111 -p oldboyedu-linux82 down -v # 删除匿名存储卷
docker-compose -f 1111 -p oldboyedu-linux82 down -v --rmi # 删除镜像和匿名存储卷
查看:
docker-compose ps
查看各个服务的容器信息。
docker-compose ps zabbix-web-nginx-mysql
查看指定服务的容器信息。
docker-compose logs -f zabbix-web-nginx-mysql
查看"zabbix-web-nginx-mysql"服务的日志
docker-compose top zabbix-web-nginx-mysql
查看"zabbix-web-nginx-mysql"服务容器的进程信息
docker-compose images
查看服务使用的镜像信息。
docker-compose config
查看docker-compose的配置文件。
其他:
docker-compose stop
停止服务
docker-compose start
启动服务。
docker-compose restart
重启服务。
docker-compose build
编译或者重新编译服务镜像。
如果你要执行该命令,请必须有build字段,该字段内得有Dockefile相关信息。若不指定该字段,则会跳过编译!
docker-compose结合Dockerfile实战:
cat > docker-compose.yaml <
services:
oldboyedu-linux82-docker-compose:
image: oldboyedu-linux82-docker-compose:v3.0
# 指定镜像编译的相关参数
build:
# 指定上下文,表示当前所在的路径,便于找到dockerfile
context: ./dockerfile
# 指定dockerfile的名称
dockerfile: Dockerfile
oldboyedu-linux82-docker-compose-2022:
image: oldboyedu-linux82-docker-compose:v4.0
build:
context: ./dockerfile
dockerfile: Dockerfile
EOF
今日内容回顾:
- 单机编排工具:docker-compose
- 私有仓库: docker-registry
- 企业级私有仓库: harbor
- http部署
- https部署
- docker registry ---> harbor
- 主从复制
- 高可用架构
- 官方镜像仓库: docker hub