当前位置 博文首页 > 懒妹子学IT的博客:初学docker(从小白到入门,超详细~)持续更

    懒妹子学IT的博客:初学docker(从小白到入门,超详细~)持续更

    作者:[db:作者] 时间:2021-09-11 19:56

    该篇文章每天都在持续更新中,欢迎各位大神阅读并指点…

    在这里插入图片描述

    一、简介与概述

    官网地址:https://docs.docker.com/ 和https://www.docker.com/

    1、为什么要使用docker

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。虚拟化容器技术 ,主要解决我们开发环境配置迁移的问题。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    2、使用docker的好处

    • 简化配置 安装创建非常的方便
    • 代码流水线(Code Pipeline)管理 传统项目部署可能需要经过很多环节,容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少
    • Devops 开发与运维一体化减少沟通的成本 (docker或者是k8s实现)
    • 虚拟技术 快速部署
    • 弹性扩容

    3、docker的应用场景

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

    4、容器与虚拟机区别

    1、虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器
    2、Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算
    3、Docker所用的资源更少,性能更高。同样一个物理机器Docker运行的镜像数量远多于虚拟机的数量
    4、虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。
    5、虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。
    容器与虚拟机区别的总结如表:

    特性容器虚拟机
    启动速度秒级分钟级别
    硬盘使用一般为MB一般GB
    性能接近原生弱于
    系统支持量单机支持上千个容器一般几十个
    隔离性完全隔离完全隔离

    二、Docker安装

    Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
    1、通过 uname -r 命令查看你当前的内核版本
    2、 使用 root 权限登录 Centos。确保 yum 包更新到最新。

    yum -y update
    

    3、 如果安装过旧版本的话,卸载旧版本

    yum remove docker docker-common docker-selinux docker-engine
    

    4、 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    yum install -y yum-utils device-mapper-persistent-data lvm2
    

    5、 设置yum源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    6、 可以查看所有仓库中所有docker版本,并选择特定版本安装

    yum list docker-ce --showduplicates | sort –r
    

    7、 安装docker

    sudo yum install -y docker-ce     #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
    

    8、 启动并加入开机启动

    systemctl start docker
    systemctl enable docker
    

    9、 验证安装是否成功,如下图:(有client和service两部分表示docker安装启动都成功了)
    在这里插入图片描述

    三、Docker常用命令

    • docker --help 帮助命令
    • docker --version docker版本

    docker images

    • docker images 查看本地镜像文件
      在这里插入图片描述
      属性说明:
    • REPOSITORY 存储库名称
    • Tag 镜像的标签 不写版本号码 默认下载最新latest镜像
    • IMAGE ID 镜像id
    • CREATED 创建时间
    • SIZE 大小
      参数说明
    • docker images -a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
    • docker images -q —只显示镜像的id
    • docker images --digests —显示镜像的摘要信息
    • docker images --no-trunc —显示完整镜像信息
    • docker rmi tomcat 删除镜像文件

    docker search

    在这里插入图片描述eg:docker search mysql 展示所有mysql的镜像文件
    docker search -s 30 mysql 列出点赞数超过30以上。
    latest 表示为最新的镜像文件 mysql8.0版本

    docker pull

    latest -----tag 最新版本的镜像文件
    eg:docker pull nginx:latest
    在这里插入图片描述

    • 默认的情况下 下载最新版本的镜像 可以通过https://hub.docker.com/_/nginxtab=tags&page=1&ordering=last_updated

    查看容器信息

    • Docker ps 获取到容器(正在运行的)
    • Docker ps -a 获取到容器(所有)
    • docker inspect 容器id --查看容器详细信息
    • docker ps -l 查询最后一次创建的容器

    容器的导入导出

    • 导出容器
      如果要导出本地某个容器,可以使用 docker export 命令。
      例如:导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
    docker export 1e560fca3906 > ubuntu.tar
    
    • 导入容器快照
      可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
    cat docker/ubuntu.tar | docker import - test/ubuntu:v1
    

    此外,也可以通过指定 URL 或者某个目录来导入,例如:

    docker import http://example.com/exampleimage.tgz example/imagerepo
    

    运行容器

    • docker run -i (保持容器一直运行)
    • docker run -t(给容器一个伪终端)
    • docker run -d(后台运行,不直接进入容器)
    • docker run --name=tomcat9.2(给启动容器起名字)
    • docker run -p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器) 【参数】(加入容器初始化命令)
    • docker run -it 启动的容器有两个特点 一创建就进入容器 exit退出容器 容器就会停止运行 —交互式容器
    • docker run -id 创建的容器 docker exec -it tomcat9.2(–name起的名称)进入容器 exit退出容器 容器不会停止运行 —守护式容器
    • docker exec -it [CONTAINER ID] bash 进入容器,有的镜像没有bash命令,可以用对应的shell,比如sh
      docker exec -it [CONTAINER ID] sh
    • docker container prune 清理掉所有处于终止状态的容器
    • docker port 容器id : 查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
    • docker logs -f 容器id : docker logs [ID或者名字] 可以查看容器内部的运行日志。
    • docker top 容器id : 查看容器内部运行的进程
    • docker --network:连接容器,例:
      运行一个容器并连接到新建的 test-net 网络:
    docker run -itd --name test1 --network test-net ubuntu /bin/bash 
    

    打开新的终端,再运行一个容器并加入到 test-net 网络:

    docker run -itd --name test2 --network test-net ubuntu /bin/bash
    

    在这里插入图片描述
    进入在test1 容器,输入以下命令:

    在这里插入图片描述
    同理在 test2 容器也会成功连接到:
    在这里插入图片描述
    这样,test1 容器和 test2 容器建立了互联关系。

    如果你有多个容器之间需要互相连接,推荐使用 Docker Compose,后面会介绍。

    四、 docker run 运行原理

    docker run mayikt
    在这里插入图片描述

    简单描述:首先会先从本地获取获取mayikt镜像文件,如果本地没有该镜像文件则会去
    阿里云仓库查找该镜像文件,如果阿里云仓库也没有该镜像文件,则会报错找不到
    镜像文件。
    获取到镜像文件之后直接运行。
    详细描述:
    1.docker在本机缓存中 mayikt镜像文件,如果本地存在该镜像文件
    ,则以该镜像文件作为模板在容器中运行。
    2.如果本地缓存中,没有mayikt镜像文件 则会从dockerhub 或者加速镜像中
    查找,如果查找不到的话,则返回错误找不到该镜像。
    3. 如果能够查找到该镜像,则以该镜像作为模板运行。
    在这里插入图片描述
    每个容器都有自己独立的网络 ip信息 运行成功 就是一个轻量级linux操作系统

    五、 docker快速入门

    1、Docker三大核心概念

    镜像、容器、仓库是docker的三大核心概念。

    • 镜像文件(image)
      简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息,比如:redis镜像、mysql镜等。每个镜像文件都有自己独立ip信息(轻量级的linux服务器 虚拟化,比如:镜像就是类 容器就是实例对象)
      镜像的来源方式:
      (1)自己做镜像 比如(自己开发微服务项目)
      (2) 拉取别人制作好的镜像, 例如 nginx、mysql、redis等。
    • 容器(container)
      容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、删除, 一个镜像可以创建多个不同的容器。
    • 仓库(repository)
      仓库就是存放一个个镜像的地方,下载镜像就是从仓库去下载。类似于maven中的中
      央仓库一样。
      Docker 公开仓库地址:https://hub.docker.com/
    • 宿主机
      当前操作系统

    简单概述他们之间的关系如下图:
    在这里插入图片描述

    1. 需要制作镜像文件(如:springboot项目,类似于开发者开发安装应用程序打包)
    2. 需要将我们制作好的镜像文件提交到docker仓库中(如:开发者将自己的app应用程序发布安卓手机助手中)
    3. 本地需要拉去我们docker仓库中下载镜像文件,在交给我们容器运行(如:用户从app市场中下载安装包运行)
    4. docker运行镜像文件(每个容器需要独立ip访问信息,端口号码映射)

    2、 Docker下载镜像的原理

    Docker pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。
    注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像
    在这里插入图片描述

    3、Docker加载镜像配置

    (1) 国内加速器服务

    https://hub.docker.com/search?q=redis&type=image —在国外访问可能比较慢
    国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

    • 科大镜像:https://docker.mirrors.ustc.edu.cn/
    • 网易:https://hub-mirror.c.163.com/
    • 阿里云:https://<你的ID>.mirror.aliyuncs.com
    • 七牛云加速器:https://reg-mirror.qiniu.com
      (当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。)

    (2)例如:配置阿里云加速镜像

    阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了(如下图):
    在这里插入图片描述
    配置加速镜像的操作命令:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://puaeb5rh.mirror.aliyuncs.com(自己的加速器专属地址)"]
    }
    EOF
    # 重新加载配置文件
    sudo systemctl daemon-reload 
    #重启docker
    sudo systemctl restart docker
    #查看是否配置成功
    docker info
    

    如下图,已显示我的加速专属地址,表示已配置成功

    在这里插入图片描述

    4、运行容器

    例:运行一个tomcat的容器

    1、拉取tomcat镜像

    docker pull tomcat:8(可以指定版本号,不指定默认最新版本latest,我这里 下载的tomcat8)
    

    在这里插入图片描述

    2、查看镜像

    docker images 
    

    在这里插入图片描述
    如图,我的tomca:8已下载成功,接下来运行tomcat

    3、运行

    • docker run -d -p 8081:8080 --name=tomcat8 tomcat:8.0 (参数说明已在讲命令的时候讲解)
    • 通过docker ps查看容器是否已运行成功。
    • 通过curl命令进行访问严重是否tocat启动成功了。如下图(tomcat下没有项目,所以运行返回的是tomcat的主页信息。也可以通过浏览器访问)
      在这里插入图片描述
      浏览器访问展示的信息:
      在这里插入图片描述
      好啦,可以成功访问啦。

    5、Docker Commit

    docker commit主要作用:根据当前容器制作为镜像文件
    例:下载一个tomcat:8版本的镜像文件,在tomcat的webapps目录下创建自己的一个mytomcat项目,默认访问地址index.html
    操作操作步骤:

    • (1)从docker hub中下载一个tomcat8镜像文件;并且运行
      docker run -p 8081:8080 tomcat:8

    • (2)进入tomcat容器中,在webapps 目录中新增 mytomcat文件夹且创建index.html

    docker exec -it 3a06b4c779a8   bash
    cd webapps 
    mkdir mytomcat 
    cd mytomcat
    touch index.html
    echo "hello,这是我自个创建的镜像哟,嘻嘻" >>index.html
    

    在这里插入图片描述
    (3)根据当前容器作为模板制作为镜像文件
    docker commit -m=“mytomcat” -a=“mytomcat” 3a06b4c779a8 mytomcat:1.0
    (4)以当前自己制作的镜像文件运行
    docker run -d --name=mytomcat -p 8081:8080 mytomcat:1.0
    在这里插入图片描述
    (5)验证是否能正常访问(如下图,已成功运行自己创建的镜像,且正常访问创建的文件)
    在这里插入图片描述

    六、 docker 数据卷

    基本概念

    数据卷就是宿主机上的一个文件或目录
    当容器目录和数据卷(宿主机)目录绑定,双方修改会立即同步操作
    一个数据卷可以被多个容器同时挂载
    数据卷作用:容器数据的持久化 外部机器和容器间接通信 容器之间数据交换
    使用 -v命令。

    数据卷添加的方式

    1. 直接命令形式添加 docker run -it -v 宿主机绝对路径目录:容器内目录 镜像文件名称
    2. Dockerfile方式添加

    例:安装nginx实现负载均衡

    • 创建挂载目录
      mkdir -p /data/nginx/{conf,conf.d,html,logs}
    • 启动docker容器
    docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx
    

    说明:-v /data/nginx/html 虚拟机目录 --挂载 容器目录,/usr/share/nginx/html 上传一个 html 放入到 /data/nginx/html。

    • 在 /data/nginx/html下创建index.html,在进入nginx容器中的/usr/share/nginx/html下检验是否能看到index.html
      在这里插入图片描述
      通过上图,可发现在/data/nginx/html目录下创建index.html文件在nginx容器中也可以访问,说明已正常挂载成功。

    • 挂载多个文件,如nginx .conf文件和日志文件

    docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html \
    -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /data/nginx/logs:/var/log/nginx  nginx 
    

    说明:\反斜杠 表示换行

    七、DockerFile

    1、DockerFile编写规范

    • A.#描述注释
    • B.指令必须要大写,后面至少需要带至少一个参数;
    • C.指令是按照从上到下,顺序执行;

    2、 DockerFile常用指令

    指令说明
    1. FROM指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令
    2. MAINTAINER维护者
    3. RUN容器创建的时候执行一段命令 构建镜像时执行的命令
    4. ADD将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
    5. COPY功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
    6. CMD构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件
    7. ENV设置环境变量
    8. EXPOSE指定于外界交互的端口
    9. VOLUME用于指定持久化目录,数据卷挂载的目录
    10. WORKDIR设置进入容器时的路径 默认访问的目录

    下面的Tomcat的dockerFile,大家可以参照刚才讲到的指令,看下是否能够读懂:
    https://github.com/docker-library/tomcat/blob/385e8403a38fab7097d4c3fed2484caba7dfd099/8.5/jdk8/openjdk-slim-buster/Dockerfile

    3、例:构建自己centos镜像

    实现效果:

    1. 进入容器中 默认访问目录/usr;
    2. 实现支持vim插件;

    操作步骤

    1. 在根目录的usr下创建DockerFile文件
      在这里插入图片描述

    2. 编辑dockerFile文件

    #继承docker hub中centos的镜像文件
    FROM centos
    #维护者信息
    MAINTAINER mycentos-chenlili
    #配置环境变量
    ENV MYPATH /usr
    #进入到容器默认访问的目录
    WORKDIR $MYPATH
    #安装vim插件
    RUN yum -y install vim
    #外部访问端口
    EXPOSE 80
    #启动容器后,自动进入容器中
    CMD /bin/bash
    
    1. 该Dockerfile实现打包成镜像文件
      打包前可以删除自己所有的镜像文件,以便清晰查看自己创建的centos文件)
      docker stop $(docker ps -q) & docker rm $(docker ps -aq) —停止/删除所有的容器
      docker rmi $(docker images -q)删除所有镜像文件
    命令:docker build -f Dockerfile -t mycs:1 .
    #参数说明
    Dockerfile ------配置文件
    mycs----打包镜像文件名称
    1 tag 版本号码
    

    如下图可清晰看到在打包镜像文件过程中,我们制作的dockerFile文件内容从上到下的顺序在执行:
    在这里插入图片描述

    结果验证

    如图,我的镜像文件以及所依赖的centos父镜像也都有了,且运行自己创建的镜像(mycs)成功后,自动进入了/usr目录,vim查看也有安装成功。说明本次创建自己的DockerFile文件实验成功啦
    在这里插入图片描述

    4、例:用DockerFile打包第一个SpringBoot项目

    操作步骤

    1、创建一个springboot项目
    项目创建步骤省略,可参考https://blog.csdn.net/zyhlwzy/article/details/78730587
    下图是我创建的测试类:
    在这里插入图片描述
    2、将springboot项目打包成jar包(打包方式有多种,相信正在做过java项目的同学都都会,这里就不介绍了)
    在这里插入图片描述
    打包成功后,我的项目下demo\target目录就能看到打包好的jar包了
    在这里插入图片描述
    3、定义dockerfile文件,描述springboot项目配置依赖和环境变量(注意:springboot内置嵌入我们的tomcat服务器 所以不需要额外的tomcat容器)

    #继承docker hub中centos的镜像文件
    FROM  java:8
    #维护者信息
    MAINTAINER mydemo-chenlili
    # VOLUME 指定了临时文件目录为/tmp。
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名为demo.jar
    ADD demo-0.0.1-SNAPSHOT.jar demo.jar
    # 运行jar包
    RUN bash -c 'touch /demo.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
    #暴露8080端口
    EXPOSE 8080
    

    4、将DockerFile文件和springboot项目jar包上传到服务器
    (在根目录的usr下创建mydemo,然后上传文件)
    在这里插入图片描述
    5、讲DockerFile文件打包成镜像文件

    命令:docker build -f Dockerfile -t mydemo:1 .
    

    如下图可清晰看到在打包镜像文件过程中,我们制作的dockerFile文件内容从上到下的顺序在执行:
    在这里插入图片描述
    7、启动容器,访问springboot验证部署是否成功

    命令:docker run -d -p 8081:8080 --name=mydemo   mydemo:1
    

    如下图,可以正常访问我的springboot项目啦,表示用DockerFile打包第一个SpringBoot项目
    在这里插入图片描述

    八、 Docker Compose

    Docker-compose简介

    参考:https://www.cnblogs.com/minseo/p/11548177.html
    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

    Docker-Compose将所管理的容器分为三层:分别是工程(project),服务(service)以及容器(container)

    Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

    Docker-compose中两个重要的概念

    • 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
    • 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

    Docker-compose的安装

    1、我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。

    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
    

    2、添加可执行的权限

    sudo chmod +x /usr/local/bin/docker-compose
    

    3、验证是否安装成功

    docker-compose -v
    

    如下图,已正常显示安装的版本,表示已安装成功啦
    在这里插入图片描述

    Docker-Compose常用命令

    1、Docker-Compose命令格式

    docker-compose [-f …] [options] [COMMAND] [ARGS…]
    命令选项如下:

    • -f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
    • -p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
    • -x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
    • -x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
    • -verbose输出更多调试信息
      – v,–version打印版本并退出

    2、docker-compose up

    docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]
    选项包括:

    • -d 在后台运行服务容器
    • –no-color 不使用颜色来区分不同的服务的控制输出
    • –no-deps 不启动服务所链接的容器
    • –force-recreate 强制重新创建容器,不能与–no-recreate同时使用
    • –no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
    • –no-build 不自动构建缺失的服务镜像
    • –build 在启动容器前构建服务镜像
    • –abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
    • -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
    • –remove-orphans 删除服务中没有在compose文件中定义的容器
    • –scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在- compose中通过scale指定的参数
    • docker-compose up
      启动所有服务
    • docker-compose up -d
      在后台所有启动服务
    • -f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
      例如:docker-compose -f docker-compose.yml up -d

    3、docker-compose ps

    docker-compose ps [options] [SERVICE…]

    • docker-compose ps 列出项目中目前的所有容器

    4、docker-compose stop

    docker-compose stop [options] [SERVICE…]
    选项包括:

    • -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
    • docker-compose stop停止正在运行的容器,可以通过docker-compose start 再次启动

    5、docker-compose -h

    docker-compose -h 查看帮助

    6、docker-compose down

    docker-compose down [options] 停止和删除容器、网络、卷、镜像。
    选项包括:

    • –rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
    • -v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷
    • –remove-orphans,删除服务中没有在compose中定义的容器
    • docker-compose down 停用移除所有容器以及网络相关

    7、docker-compose logs

    docker-compose logs [options] [SERVICE…]
    查看服务容器的输出。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过–no-color来关闭颜色。

    • docker-compose logs 查看服务容器的输出

    8、docker-compose build

    docker-compose build [options] [–build-arg key=val…] [SERVICE…]
    构建(重新构建)项目中的服务容器。
    选项包括:

    • –compress 通过gzip压缩构建上下环境
    • –force-rm 删除构建过程中的临时容器
    • –no-cache 构建镜像过程中不使用缓存
    • –pull 始终尝试通过拉取操作来获取更新版本的镜像
    • -m, –memory MEM为构建的容器设置内存大小
    • –build-arg key=val为服务设置build-time变量,服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务

    9、docker-compose pull

    docker-compose pull [options] [SERVICE…]
    拉取服务依赖的镜像。
    选项包括:

    • –ignore-pull-failures,忽略拉取镜像过程中的错误
    • –parallel,多个镜像同时拉取
    • –quiet,拉取镜像过程中不打印进度信息
    • docker-compose pull 拉取服务依赖的镜像

    10、docker-compose restart

    docker-compose restart [options] [SERVICE…]
    重启项目中的服务。
    选项包括:

    • -t, –timeout TIMEOUT,指定重启前停止容器的超时(默认为10秒)
    • docker-compose restart 重启项目中的服务

    11、docker-compose rm

    docker-compose rm [options] [SERVICE…]
    删除所有(停止状态的)服务容器。
    选项包括:

    • –f, –force,强制直接删除,包括非停止状态的容器
    • -v,删除容器所挂载的数据卷
    • docker-compose rm 删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。

    12、docker-compose start

    docker-compose start [SERVICE…]

    • docker-compose start 启动已经存在的服务容器。

    13、docker-compose run

    docker-compose run [options] [-v VOLUME…] [-p PORT…] [-e KEY=VAL…] SERVICE [COMMAND] [ARGS…]
    在指定服务上执行一个命令。

    • docker-compose run ubuntu ping www.baidu.com
      在指定容器上执行一个ping命令。

    14、docker-compose scale

    docker-compose scale web=3 db=2 设置指定服务运行的容器个数。通过service=num的参数来设置数量

    15、docker-compose pause

    docker-compose pause [SERVICE…] 暂停一个服务容器

    16、docker-compose kill

    docker-compose kill [options] [SERVICE…]
    通过发送SIGKILL信号来强制停止服务容器。
    支持通过-s参数来指定发送的信号,例如通过如下指令发送SIGINT信号:
    docker-compose kill -s SIGINT

    17、dokcer-compose config

    docker-compose config [options]
    验证并查看compose文件配置。
    选项包括:

    • –resolve-image-digests 将镜像标签标记为摘要
    • -q, –quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
    • –services 打印服务名,一行一个
    • –volumes 打印数据卷名,一行一个

    18、docker-compose create

    docker-compose create [options] [SERVICE…]
    为服务创建容器。
    选项包括:

    • –force-recreate:重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数
    • –no-recreate:如果容器已经存在,不需要重新创建,不兼容–force-recreate参数
    • –no-build:不创建镜像,即使缺失
    • –build:创建容器前,生成镜像

    19、docker-compose exec

    docker-compose exec [options] SERVICE COMMAND [ARGS…]