• docker容器技术


    简单介绍

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
    

    应用场景

    • Web 应用的自动化打包和发布。
    • 自动化测试和持续集成、发布。
    • 在服务型环境中部署和调整数据库或其他的后台应用。
    • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

    docker的基本概念

    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
    • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    以上都是来自菜鸟教程的资料

    简单介绍

    docker就是一个可以产生很多虚拟机的应用容器引擎,每个虚拟机都是需要镜像的,每个镜像都是一个单独的应用,例如mysql,redis等等,容器就是虚拟机,所以使用docker可以快速搭建很多应用服务,而告别一些繁琐的配置

    • docker 有官方的仓库来保存很多的镜像,这里的仓库和npm、maven代码仓库是同理,同样的仓库在国外,最好使用国内的仓库地址会比较快,例如:daocloud等等
    • 当然也可以创建自己自定义的镜像,这样的自定义镜像可以帮助同事快速搭建环境,解决环境不一致的问题,同样自定义镜像也可以上传到云上保存

    docker的安装和启动

    • CentOS 7 的版本安装可以使用 curl -sSL https://get.daocloud.io/docker | sh
    • CentOS 8 安装可能会报错,反正我是踩坑了,缺少依赖,找度娘去吧
    • 安装完成后当前目录会产生一个containerd文件夹,不要惊讶

    关于开机自启的命令

    • 启动docker sudo systemctl start docker
    • 查看已经启动的服务 systemctl list-units --type=service
    • 查看是否设置了开机自启 systemctl list-unit-files | grep enabled
    • 设置开机自启 systemctl enable docker.service
    • 关闭开机自启 systemctl disable docker.service

    docker的常见命令

    • docker ps 查看当前工作的容器
      • docker ps -a 查看所有容器
    • docker logs 容器id 查看容器内部的输入日志
    • docker run -itd 镜像名称 bash 指定镜像在后台启动一个新容器
    • docker start 容器id 启动一个停止的容器
    • docker restart 容器id 重启一个容器
    • docker stop 容器id 停止容器
    • docker exec 进入容器,废话一句,这里和进入一个linux的虚拟机感觉一样
    • docker rm -f 容器id 删除容器
    • docker rmi 镜像名称 删除镜像

    docker-compose介绍

    docker存在的一些问题

    • docker对管理多个容器配置还需要一条命令的重复操作

    • docker对配置端口的映射等等配置麻烦,不适合批量管理

    • 一台服务器往往存在多个应用服务,docker重复配置效率低下

      Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

    dokcer-compose的安装

    • sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 下载安装docker-compose
    • sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 创建软链

    docker-compose.yml例子

    # 关闭防火墙后docker需要重启:service docker restart
    version: '3.1'
    services:
      nginx:  
        restart: always
        image: daocloud.io/library/nginx:latest
        container_name: "nginx"
        ports:
          - "80:80"
        volumes:
          - "/opt/docker_nginx/nginx/conf.d:/etc/nginx/conf.d"
          - "/opt/docker_nginx/postCode:/usr/share/nginx/html/postCode/web"
      mysql:
        restart: always
        image: daocloud.io/library/mysql:5.7.4
        container_name: "mysql"
        ports:
          - "3306:3306"
        environment:
          TZ: Asia/shanghai     #指定时区
          MYSQL_ROOT_PASSWORD: dojanep47902tyoslwYIJ547865_901f_hrzg
        volumes:
          - "/opt/docker_mysql/data:/var/lib/mysql"
      redis:
        restart: always
        image: daocloud.io/library/redis:3.2.9
        container_name: "redis"
        command: redis-server --requirepass qazwsxedcrfvtgbyhnujmikolp
        ports:
          - "6379:6379" 
        environment:
          TZ: Asia/shanghai     #指定时区
        volumes:
          - "/opt/docker_redis/redis:/usr/local/etc/redis"
      rabbitmq:
        restart: always
        image: daocloud.io/library/rabbitmq:3.7.26-management
        container_name: "rabbitmq"
        hostname: myRabbitmq
        ports: 
          - "8672:15672"  #http端口
          - "8673:5672"   #通信端口
        environment:
          - RABBITMQ_DEFAULT_USER=root
          - RABBITMQ_DEFAULT_PASS=15572046172
        volumes:
          - "/opt/docker_rabbitmq:/var/lib/rabbitmq"
    

    docker-compose的常用命令

    • docker-compose --version 查看版本
    • docker-compose up -d 在后台运行该服务
    • docker-compose ps 列出所有容器
    • docker-compose stop 停止正在运行的容器
      • docker-compose stop 容器名称 停止指定容器
    • docker-compose start 启动停止的容器
      • docker-compose start 容器名称 启动指定容器
    • docker-compose down 停止并删除容器
    • docker-compose logs 输出所有容器的日子
    • docker-compose pull 镜像名称 拉取服务中的镜像
    • docker-compose restart 重启项目中的服务
      • docker-compose restart 容器名称 重启指定名称
    • docker-compose rm 删除所有停止状态的容器
      • docker-compose rm 容器名称 删除指定的容器
    • docker-compose pause 暂定容器
    • docker-compose unpause 恢复在暂定中的容器

    后记

    • 命令都都是持续更新中...
    • 参考文档:菜鸟教程
  • 相关阅读:
    HDU 6040 Hints of sd0061 —— 2017 Multi-University Training 1
    HDU 6038 Function —— 2017 Multi-University Training 1
    HDU 6034 Balala Power! —— Multi-University Training 1
    使用python将excel数据导入数据库
    python reload(sys)找不到,name 'reload' is not defined
    伯乐在线资讯URL
    伯乐在线文章URL
    慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章
    javascript HTML DOM 简单介绍
    css样式大全
  • 原文地址:https://www.cnblogs.com/Juaoie/p/13364604.html
Copyright © 2020-2023  润新知