自学内容网 自学内容网

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)!