Docker

什么是Docker?

  • 定义:是一个开源的、流行的、牛逼的容器技术

  • 场景:

    • Docker在多环境中(开发、测试、生成)过程中迁移环境
    • 自动化运维
      • DevOps
      • GitOps
      • AiOps
  • 特点:

    • 容器是完全使用沙箱机制,相互隔离
    • 容器性能开销极低(体积小和启动快)
  • 原理

    • daemon守护进程,监控docker容器运行状态【了解】
    • docker客户端:用于数据docker指令操作docker的客户端
    • image(镜像):是docker容器运行的程序包(类似被人写的jar)
    • repository(镜像仓库):用于存放镜像程序包
    • container(容器):docker镜像运行后的转态

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Docker安装

环境要求:centos7及以上

  • 安装软件
# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源,/etc/yum.repos.d
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
  • 配置

    • 创建文件/etc/docker/daemon.json

    • 在文件中配置docker镜像源

      {"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]}
      
    • 重启docker 服务

      systemctl restart docker
      

Docker服务管理命令【6个】【精通】

  • systemctl start docker 启动
  • systemctl stop docker 停止
  • systemctl restart docker 重启
  • systemctl status docker查看状态
  • systemctl enable docker 设置开启启动
  • systemctl disable docker 设置开启不自动启动

Linux防火墙服务管理命令【6个】【精通】

  • systemctl start firewalld 启动
  • systemctl stop firewalld 停止
  • systemctl restart firewalld 重启
  • systemctl status firewalld 查看状态
  • systemctl enable firewalld 设置开启启动
  • systemctl disable firewalld 设置开启不自动启动

Docker镜像管理命令【6个】【精通】

  • docker search 查询可用的镜像(hub.docker.com)
  • docker pull [镜像名称,镜像名称:镜像版本]下载镜像
  • docker images 查看本地镜像列表
  • docker rmi [镜像名称,镜像名称:镜像版本,镜像ID]
  • docker tags 设定镜像的名称
  • docker push 推送镜像到远程

Docker镜像制作命令【6个】【精通】

  • 使用容器制作(注意:制作容器时,只生成容器内的数据)

    • docker commit 容器id 镜像名称:镜像版本
    • docker save -o 文件名称 把镜像打包成tar压缩包
    • docker load -i 文件名称 把tar压缩包恢复成镜像
  • 使用Dokcerfile

    • docker build 把dockerfile制作成镜像

      docker build -f dockerfile文件 -t 镜像名称:镜像版本 .
      

Docker容器管理命令【8个】【精通】

  • docker run 创建

    • 交互式:退出之后,容器自动停止。开发过程,做容器的检查测试

      docker run -it --name=[自定义容器名称] 镜像名称:镜像版本 /bin/bash
      
    • 守护式(后台运行):一直后台运行。生成程序运行

      docker run -d --name=[自定义容器名称] 镜像名称:镜像版本
      
  • docker exec 进入守护式容器

    docker exec -it 容器名称 /bin/bash
    
  • docker ps 查看容器列表

    • docker ps 只查看运行中的容器
    • docker ps -a 查看所有容器
  • docker start 容器名称 启动

  • docker stop 容器名称 停止

  • docker restart 容器名称 重启

  • docker rm 容器名称 删除

  • docker inspect 容器名称 查看容器的详细信息

    • ip
    • 端口
    • 网络

Docker 数据卷【了解】

  • 作用
    • 在宿主机上存放重要数据
      • 包括类似mysql数据文件
      • 包括部署的程序

Docker创建时的参数【重要】

  • -v 挂载本地文件夹到容器中

    • 可以挂载多个目录
    dockerrun -d -v 本地目录:容器目录 -v 本地目录:容器目录 -v 本地目录:容器目录 --name=c1 镜像名称
    
    # 下面省去了宿主机的目录,docker会自动创建一个宿主机目录与之挂载
    docker run -it --name c3 -v /volume centos
    
  • -volume-from 复制容器的-v参数到当前容器中

    docker run -it --name c3 -v /volume:/volume centos
    docker run -it --name c1 -v /volume:/volume centos
    docker run -it --name c2 -v /volume:/volume centos
    
  • -p 端口映射

在这里插入图片描述

  • -e 配置系统的环境,可配置多个(environment)

Docker 安装Mysql步骤【熟悉】

  • 查找对应的可用镜像

  • 下载镜像

  • 运行容器

    docker run -id \
    -p 3306:3306 \
    --name=c_mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    mysql:5.7
    

DockerFile关键字【9个】【精通】

关键字作用重要程度备注
FROM指定父镜像必要指定dockerfile基于那个image构建
MAINTAINER作者信息用来标明这个dockerfile谁写的
LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用
COPY复制文件build的时候复制文件到image中
ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

Docker-compose【熟练】

  • 定义:是一个容器编排工具

  • 语法:

    docker run -it -v ./nginx/conf.d:/etc/nginx/conf.d -p 3307:3306 --name=[自定义容器名称] 镜像名称:镜像版本 /bin/bash

    • 文件名称必须是docker-compose.yml
    • version: ‘3’ 指定语法版本可用关键字,3~3.7
    • services 定义多个服务
      • nginx/app 是服务名称 --name
      • images 指定基础镜像名称 镜像名称:镜像版本
      • ports:指定端口 -p
      • links:指定服务可用直接访问的容器列表,服务名称
      • volumes:挂载文件目录 类似-v
      • expose:暴露端口,作用类似 -p 8080:8080
    version: '3'
    services:
      nginx:
       image: nginx
       ports:
        - 80:80
       links:
        - app
       volumes:
        - ./nginx/conf.d:/etc/nginx/conf.d
      app:
        image: app
        expose:
          - "8080"
    
  • 命令

    • docker-compose up 创建并启动一组容器
    • docker-compose down 停止并删除一组容器
    • docker-compose start 启动一组容器
    • docker-compose stop 停止一组容器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值