Docker入门

77 阅读2分钟

需求

  • 应用隔离
  • 环境配置
  • 安装部署
  • 持续集成
  • 持续发布
  • DevOps

基本概念

Docker是一个用于 构建 运行 传送 应用程序的平台

Docker可以将 应用程序 和 它运行时所需要的 各种依赖包 第三方软件库 配置文件 等打包在一起,以便在任何支持Docker的环境中正确运行

Docker和虚拟机的区别

image.png

核心概念

image.png

Docker使用Client-Server架构模式,Docker Client 和 Docker Daemon 之间通过Socket或者RESTful API进行通信,Docker Daemon 就是服务端的守护进程,负责管理Docker的各种资源

  • 镜像:一个只读模板
  • 容器:一个镜像的运行实例。一个镜像可以有多个实例
  • 仓库:存放镜像的地方,如Dockerhub
  • 容器化:将应用程序打包成容器,然后在容器中运行应用程序的过程,步骤:
    1. 创建一个Dockerfile(告诉Docker构建应用程序镜像所需的步骤和配置)
    2. 使用Dockerfile构建镜像
    3. 使用镜像创建和运行容器
  • Dockerfile:一个文本文件,里面包含一条条指令,用来告诉Docker如何来构建镜像,这个镜像包含了我们应用程序执行的所有命令(各种依赖、配置环境、运行应用程序所需要的所有内容),内容:
    1. 安装操作系统
    2. 安装运行环境
    3. 复制应用程序、依赖资源
    4. 执行启动命令运行程序

安装配置

image.png

常用命令

Dockerfile实践

  1. 编写Dockerfile
    1. 创建HelloDocker文件夹
    2. 文件夹内创建文件echoHelloDocker.sh,添加内容
    #!/bin/bash
    echo Hello Docker
    
    1. 文件夹内创建文件Dockerifle,添加内容
    FROM baseImage
    COPY source(相对于Dockerfile) dest(相对于镜像)
    ENV <key> <value>
    
    CMD ["exec1", "parameter1", "parameter1", ...], ["exec2"], ....
    
    ARG GCC_VERSION=8
    
    FROM ubuntu
    
    MAINTAINER swwl
    
    RUN apt update && apt install -y \
    gcc-$GCC_VERSION \
    automake \
    build-essential && \
    useradd -s /bin/bash -d /home/swwl -m swwl && \
    echo 'swll ALL=NOPASSWD: ALL' > /etc/sudoers.d/swwl && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    
    USER swwl
    
    WORKDIR  /home/swwl
    
    ADD poco-tmpp.tar.gz .
    
    RUN make -f ./poco-tmpp/Makefile
    
  2. 创建镜像
docker build -t hellodocker .
docker images
  1. 启动容器
docker run hellodocker
  1. 上传镜像

  2. 下载镜像

docker pull lxr/hellodocker

Docker Compose & Kubernetes

Docker Compose:用于定义和运行多个Docker应用程序的工具,使用YAML文件来配置应用程序的服务,一条命令即可创建并启动所有服务