-
docker-compose+harbor
-
docker网络概念
-
当大规模使用docker时,容器间通信就成了一个问题。
-
docker支持的四种网络模式在run时指定
-
host模式
-
--net=host
-
容器和宿主机共享一个网络命名空间
-
-
container模式
-
--net={容器id}
-
多个容器共享一个网络
-
-
none模式
-
--net=none
-
容器拥有独立的网络,但是没有进行任何配置
-
-
bridge模式
-
--net=bridge
-
默认模式,通过-p 指定端口映射
-
-
-
直接创建一个网络
-
docker network create -d 模式名称 网络名称
-
在运行时加入该网路
-
docker run -itd --rm --name web01 --network mynet nginx
-
-rm 在容器状态为退出时自动删除该容器,不论正常退出还是错误退出。
-
-
-
-
-
-
docker的重启策略,在生产环境中
-
-
docker容器常见的退出状态码
-
-
在docker-compose中指定:
-
restart:: 加策略名称
-
-
在运行时指定
-
docker run -dit --restart=always nginx
-
-
-
docker-compose
-
概念
-
前身fig,是一个定义和运行多个容器的工具,是一个编排技术。
-
编排
-
批量管理
-
批量管理:对大量容器实例的生命周期管理,支持跨平台。对一组,成套成体系的容器管理。
-
实例
-
实例:程序跑在内存,程序本身以及配置文件参数,运行起来
-
-
-
-
支持副本
-
编辑,排版,然后批量管理
-
-
-
-
docker-compose的安装
-
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-
或者将下载好离线包拷贝到/usr/local/bin并赋予执行权
-
最后利用docker-compose -v验证安装结果
-
-
docker-compose的使用
-
需要在编辑好的docker-compose.yaml文件下,docker-compose的使用依赖这个文件。
-
因为采用yaml语言编写因此有些事项需要注意
-
docker-compose.yaml常用的字段
-
以lnmp为例的docker-compose.yaml
-
services: mysql: hostname: mysql restart: always image: mysql container_name: mysql ports: - "3306:3306" networks: - lnmp volumes: - mysql-config:/etc/mysql - mysql-log:/var/log/mysql - mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_USER: user MYSQL_PASSWORD: user123 php: hostname: php container_name: php build: context: ./php dockerfile: Dockerfile volumes: - /opt/compose_lnmp/nginx-html:/var/www/html networks: - lnmp nginx: hostname: nginx container_name: nginx build: context: ./nginx dockerfile: dockerfile ports: - "80:80" - "443:443" networks: - lnmp volumes: - /opt/compose_lnmp/nginx-config/nginx.conf:/usr/local/nginx/conf/nginx.conf #- nginx-log:/var/log/nginx - /opt/compose_lnmp/nginx-html:/var/www/html networks: lnmp: volumes: mysql-config: mysql-log: mysql-data: # nginx-html: # nginx-config: nginx-log:
-
build dockerfile context
-
指定dockerfile文件名构建镜像上下文路径
-
-
image
-
指定镜像
-
-
command
-
执行命令,覆盖默认的镜像命令
-
-
container_name
-
指定容器名称
-
-
deploy
-
指定部署和运行相关配置,只能在swarm模式使用
-
-
environment
-
添加环境变量
-
-
networks
-
加入网络
-
-
ports
-
暴露容器端口,与-p相同,但端口不能低于60
-
-
volumes
-
映射宿主机路径或映射配置文件
-
-
restart
-
重启策略
-
-
-
-
-
-
docker-compose的常用命令
-
build
-
重新构建服务
-
-
ps
-
列出容器
-
-
up
-
创建和启动容器
-
docker-compose up -d
-
-
-
exec
-
在容器里面执行命令
-
-
scale
-
指定一个服务器启动的数量,注意不能映射端口
-
-
top
-
显示容器进程
-
-
logs
-
查看容器输出
-
-
down
-
删除容器,网络,数据卷,和镜像
-
-
stop/start/restart
-
停/启/重启服务
-
stop后不加容器名称则是关闭所有容器
-
-
-
-
-
harbor
-
简单来说就是镜像仓库,能够上传,拉取镜像并且提供一些功能如访问控制,创建副本,访问日志,web界面管理等。
-
建议使用离线安装包
-
https://github.com/goharbor/harbor/releases/tag/v2.4.3 https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz
-
-
下载后上传到服务器,然后解压
-
进入目录后将模板配置文件 harbor.yml.tmpl,去掉tmpl就是配置文件,然后修改几项参数
-
hostname: 192.168.10.102
-
harbor节点所在ip
-
-
harbor_admin_password: pwd123
-
根据需要修改管理员密码
-
-
如果没有https的服务需要将有关选项注释掉
-
-
-
需要检查是否有docker-compose,harbor安装需要该组件,/etc/local/bin/docker-compose
-
运行./install.sh
-
-
之后就可以进行访问了
-
harbor的使用可以结合docker push
-
第一需要在/etc/docker/daemon.json中添加harbor服务器
-
第二要有授权的账号
-
第三要将上传的镜像名称修改成规范的镜像名称
-
主机ip:端口/项目名称/镜像名称:标签
-
-
之后才可以进行上传
-
-
-
复制内容到xmind即可形成条理性笔记。