docker-compose
docker - compose
自动编排工具,可以根据dockerfile自动化的部署docker容器
yaml文件格式,文件编排
vim nginx.conf:
version: '3'
#docker-compose的版本,默认就是3
#定义容器和自定义网络
services:
nginx:
#定义nginx的容器
hostname: nginx
#容器环境的宿主机名
build:
#根据dockerfile来创建镜像
context: /opt/nginx/
#声明dockerfile所在的位置
dockerfile: Dockerfile
#指定文件名
ports:
- 80:80
- 443:443
#定义容器和宿主机之间端口,443就是https端口
container_name: nginx_server
networks:
lnmp:
#表示自定义网络设备的名称
ipv4_address: 172.111.0.10
volumes:
- "nginx-data:/usr/local/nginx/html/"
#声明挂载点名称和路径
mysql:
hostname: mysql
build:
context: /opt/mysql/
dockerfile: Dockerfile
ports:
- 3306:3306
container_name: mysql_server
networks:
lnmp:
ipv4_address: 172.111.0.20
privileged: true
volumes:
- "mysql-data:/usr/local/mysql/"
php:
hostname: php
build:
context: /opt/php/
dockerfile: Dockerfile
ports:
- 9000:9000
container_name: php_server
networks:
lnmp:
ipv4_address: 172.111.0.30
volumes:
- "nginx-data:/usr/local/nginx/html/"
- "mysql-data:/usr/local/mysql/"
networks:
lnmp:
#创建自定义网络,名称为lnmp
driver: bridge
#自定义网络的类型
ipam:
#设置网络的网段
config:
- subnet: 172.111.0.0/16
#设置全局的挂载卷名称,让nginx和mysql的数据卷能够正常被使用
volumes:
nginx-data:
mysql-data:
docker - harbor ·········私有仓库
公有云 ---------- 阿里云、腾讯云
私有云 ---------- docker仓库
仓库 ················》保存镜像的地址
Harbor是vmware公司做的docker仓库的项目,就是帮助快速的搭建一个docker仓库,自带图形管理的ui
能够基于角色进行权限的控制
harbor仓库每一个组件都是依赖docker的容器构建,使用docker - compose一键部署
自带部署的模板
harbor的特点:
1、基于角色控制,不同用户在项目中有不同的权限。harbor是按照项目来进行组织的
2、多个harbor之间可以进行镜像之间的同步
3、可以在UI界面直接对镜像进行管理,增删改查
4、自带审计功能,所有的对镜像的操作都有记录
test1 客户端
test2 harbor A
test3 harbor B
镜像
容器
mv docker-compose-linux-x86_64 docker-compose
chmod 777docker-compose
cd /opt
docker-compose -v
tar -xf harbor-offfline-instaler-v2.8.1.tgz -C /usr/local/
cd harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
set nu
第5行 ···················》192.168.31.20(本机ip地址或者给它一个域名)
第13行开始到18行全部注释
第34行 ·········密码改为123456
. / prepare
. / install.sh
上传镜像:
docker pull nginx:1.22
docker images
docker tag nginx:1.22 127.0.0.1/ xy104/nginx:v1
docker imagas
docker login -u admin -p 123456 http://127.0.0.1
docker push 127.0.0.1 / xy104 / nginx:v1
vim /usr/local/lib/systemd/system/docker.service
set nu
13行 ··········fd:中间加入 --insecure-registry 192.168.31.20
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p 123456 http://192.168.31.20
docker images
docker tag opt-php:latest 192.168.31.20 /xy104/nginx:lnmp
docker的重点:
1、docker的基本操作:
docker cp 宿主机 ·············容器
容器 ···············宿主机
docker导出镜像、导入镜像
docker ps ·············· 查看正在运行的容器
docker ps -a ················ 查看所有的容器
dockre images ····················查看镜像
docker exec it 容器名 bash ··················进入正在运行的容器
docker logs -f 容器名 ·················都会自带标准输出,容器内部运行的情况,日志,查看日志的日志
docker status ················· 查看所有容器使用系统资源的情况
docker rm -f 容器名/容器id ·····················删除容器(正在运行的容器也可以删除)
docker rmi -f 镜像名/镜像id ·························删除镜像
2、容器之间的隔离
namespace ·····················命令空间的隔离
↓
6个
- UTS:主机名,域名
- IPC:进程可以用于独立的通信资源
- PID
- NETWORK
- MOUNT
- USER
网络模式:
-
bridge -------------- 默认模式
-
container --------------容器和容器之间共用网络
-
host ------------ 容器和容器之间共用网络
-
none -------------- 没有网络,单机模式
-
自定义网络 ---------------- 只有创建自定义网络之后,才能给容器指定ip地址 (特殊的bridge)
资源限制和数据卷:
-
cpu --cpu-quota 1000
-
–cpu-shares 512 模式1024,值必须是1024的倍数 多个容器配置权重才会生效
-
内存 -m 1g 限制容器使用的内存
数据卷:
-v 宿主机目录:容器目录
-v 目录 ····· 容器卷,容器之间的挂载
-volume-from 容器名
dockerfile:·············重点
FROM:
RUN:尽量在一个run命令中,写多个执行命令,减少分层,减少了镜像的大小
CMD和ENTRYPOINT的区别:
1、cmd和entrypoint一起使用,即cmd是给entrypoint传参的
2、cmd作为容器的启动命令,说如果在创建容器的时候穿了参数,会覆盖cmd的命令
3、entrypoint 的命令不会被覆盖
add和copy
add:可以解压,可以下载,可以复制,但是不能复制压缩格式的文件(不解压的)
copy:只需要复制,那就用copy
docker - compose:
一键编排容器
docker - harbor:
仓库,保存
docker的缺点:
1、docker是单机模式,只能在宿主机上进行通信,不能跨主机
2、docker没有管理工具,绝大部分都是依赖命令行,学习成本
3、docker 一旦创建,没有办法重新修改,只能推倒重来
4、docker没有副本,一旦容器或者节点主机故障,整个服务全部失败
原文地址:https://blog.csdn.net/PzZzang2/article/details/145161085
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!