zoukankan      html  css  js  c++  java
  • 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 恢复在暂定中的容器

    后记

    • 命令都都是持续更新中...
    • 参考文档:菜鸟教程
  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/Juaoie/p/13364604.html
Copyright © 2011-2022 走看看