一、关于基础的系统管理的命令
    1.1用户管理命令:
    二、关于Linux系统目录管理的常用命令
    三、查看jdk信息的命令
    docker 的基础操作
    一、docker的初步认识
    二、初识docker
    1.1docker的概念
    1.2docker的安装(CentOS(Linux)系统下)
    1.3docker的架构详解
    1.4配置docker镜像加速器
    1.5docker相关的基础命令
    1.6docker容器的数据卷
    1.7dockerfile
    1.8服务编排
    (1)Docker Compose 概述
    (2)Docker 私有仓库
    (3)docker相关的概念总结

    一、关于基础的系统管理的命令
    说明:直接输入操作的命令按回车会提示出该命令附属的所有的可选参数
    1.1用户管理命令:
    (1)单个用户的管理
    #①创建新用户(添加新用户): useradd (可选参数) 要创建的用户名 #设置用户的密码: passwd (可选参数) 要设置密码的用户 #修改用户信息(包括用户名): (举例为修改用户名的命令) usermod (可选参数) #删除用户名: userdel (可选参数) 要删除的用户
    (2)用户组的管理
    #添加用户组 groupadd (可选参数) 要创建的用户组名 #修改用户组: groupmod (可选参数) 新修改的用户名、要修改的用户组 #查询用户所在的组: groups 用户名 #删除用户组 groupdel 用户组名 #将用户添加到组 gpasswd -a 用户名 用户组 #查看该组下的所有的用户 grep ‘用户组名’ /etc/group
    (3)日期管理
    #显示系统日期与时间的命令 date (可选参数) # 获取帮助 date —help
    (4)显示用户
    #显示登录的用户信息 logname #切换用户 su 要切换的用户名 #变更用户并执行ls命令后返回原用户 su -c ls root
    (5)显示id
    #id指令(中包括里的是可选参数) id [-gGnru][-help][—version][用户名称]
    相关的参数:
    -g 或 -group:显示用户所属群组的id
    -G 或 -groups :显示用户所属附加群组的id
    -n 或 -name :显示用户,所属群组或附加群组的名称
    -r 或 -real :显示实际的ID
    -u 或 -user :显示用户的id
    -help :显示帮助
    -version :显示版本信息
    (6)提高(管理)用户的权限:sudo
    ①sudo -V:显示sudo的版本
    ②sudo -h:显示版本号及指令的使用方式说明
    ③sudo -l 显示出自己(执行 sudo 的使用者)的权限
    ④sudo -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
    ⑤sudo -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
    ⑥sudo -b 将要执行的指令放在背景执行
    ⑦sudo -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
    ⑧sudo -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
    ⑨sudo -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
    ⑩sudo -H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )
    ⑩①sudo - command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
    (7)查看进程:top
    ①查出的显示参数说明:
    PID — 进程id
    USER — 进程所有者
    PR — 进程优先级
    NI — nice值。负值表示高优先级,正值表示低优先级
    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR — 共享内存大小,单位kb
    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU — 上次更新到现在的CPU时间占用百分比
    %MEM — 进程使用的物理内存百分比
    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    COMMAND — 进程名称(命令名/命令行)
    ②相关的命令
    补全top指令 :top -c
    显示指定进程信息:top -p PID号
    (8)查看任务管理的进程信息(状态):ps
    ①显示进程信息:ps -A
    ②显示指定用户信息: ps -u 用户名
    ③显示所有进程信息:ps -ef
    (9)结束(杀死)竭诚命令:kill ;语法:kill[-s<信息名称或编号>][程序]或kill [-l<信息编号>]
    ①相关的参数说明:
    - -l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。
    - -s <信息名称或编号>  指定要送出的信息。
    - [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。
    ②相关用法:
    杀死一个进程:kill 指定的信息编号
    强制杀死进程:kill -KILL 指定的信息编号
    彻底杀死进程(常用):kill -9 指定的信息编号
    二、关于Linux系统目录管理的常用命令
    (1)目录常用的命令
    ①列出目录:ls
    相关参数:
    -a:全部的文件,连同隐藏的文件;
    -d:仅列出目录本身,不列出目录中的文件;
    -l:详细文件信息列出
    -al:复用型
    ②切换目录:cd 目录前加“/”表示绝对路径
    ③显示目前的目录:pwd
    pwd -LP 查看当前目录所在的路径
    ④创建一个新的目录:mkdir
    相关参数:
    -p 判断目录名,不存在就创建
    创建多级目录:
    mkdir -p 父级目录/子级目录(父级目录没有就创建)
    ⑤删除一个空的目录:rmdir
    删除多级空的目录:
    mkdir -p 父级目录/子级目录
    ⑥复制文件或目录:cp
    语法:
    cp [options] source dest 或 cp [options] source… directory
    例:cp -r aaa/
    ccc (将aaa目录下的所有文件及目录复制到ccc目录下)
    参数说明:
    - -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    - -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
    - -f:覆盖已经存在的目标文件而不给出提示。
    - -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖。
    - -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    - -r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    - -l:不复制文件,只是生成链接文件。

    ⑦移除文件或目录:rm
    语法:rm [options] name…
    相关参数:
    - -i 删除前逐一询问确认。
    - -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    - -r 将目录及以下之档案亦逐一删除。

    ⑧移动文件与目录或修改文件与目录的名称:mv
    三、查看jdk信息的命令
    ①查看已经安装的jdk信息
    rpm -qa | grep java
    ②删除已经安装的jdk
    rpm -e —nodeps 接要删除的jdk
    四、关于防火墙的命令
    ①查看防火墙的状态:firewall-cmd —state
    ②关闭防火墙的命令:systemctl stop firewalld.service

    docker 的基础操作
    一、docker的初步认识
    前言:我们写的代码会接触到好几个环境:开发换将、测试环境、生产环境
    Linux系统相关的笔记(包含docker。。完结) - 图1
    因此,我们需要将代码和支持代码运行的运行环境(如jdk之类的)一起打包发布给不同的环境下一同运行,这样代码就值依赖包内的环境运行,这样就不会产生代码因环境不同而产生的bug问题了,而docker的出现就是为了解决这样的需求。
    二、初识docker

    1.1docker的概念
    ①docker是一个开源的应用容器引擎,诞生于 2013初,基于Go语言实现,dotCloud公司出品 (后改名为Docker Inc)
    ②docker可以让开发者打包他们的应用以及依赖,包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
    ③容器是完全使用沙箱机制,互相隔离的
    ④容器性能开销极低
    ⑤docker从17.03版本之后分为CE(Communty Edition:社区版)和EE(Enterprise Edition:企业版)
    1.2docker的安装(CentOS(Linux)系统下)
    (1)docker的安装环境可以在Windows系统、MAS系统、CentOS(Linux)系统、UBUNTU系统中运行。
    (2)docker的下载的官网:https://www.docker.com
    ①相关操作命令
    # 1、yum 包更新到最新 yum update # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager —add-repo https://download.docker.com/linux/centos/docker-ce.repo # 4、 安装docker,出现输入的界面都按 y yum install -y docker-ce # 5、 查看docker版本,验证是否验证成功 docker -v
    1.3docker的架构详解
    ①镜像(Image):docker镜像(Image),就相当于是一个 root 文件系统,比如官方镜像ubuntu:16.04就包含了完整的一套ubuntu16.04最小系统的root文件系统。
    ②容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
    ③仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
    1.4配置docker镜像加速器
    (1)默认是在docker hub((https://hub.docker.com/))上下载,但是下载的速度很慢,所以我们要配置我们国内的镜像加速器。
    (2)国内的镜像加速器有:
    ① USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn
    ②阿里云
    ③腾讯云
    ④网易云
    (3)而我们会使用阿里云提供的镜像加速器,因为阿里云的镜像加速器相对而言比较快
    (4)登录阿里云官网:(https://www.aliyun.com/
    Linux系统相关的笔记(包含docker。。完结) - 图2
    ①将官方提供的命令复制且执行后。
    ②查看文件/etc/docker/daemon.json
    # 执行如下命令: cat /etc/docker/daemon.json
    查询结果如下图所示则成功添加镜像加速器
    Linux系统相关的笔记(包含docker。。完结) - 图3
    1.5docker相关的基础命令
    (1)进程相关的命令
    ①启动docker服务
    systemctl start docker
    ②停止docker服务
    systemctl stop docker
    ③重启docker服务
    systemctl restart docker
    ④开机启动docker服务
    systemctl enable docker
    (2)查看docker服务状态
    systemctl status docker
    3)docker镜像相关的命令(软件的安装)
    ①查看本地所有的镜像
    docker images docker images –q # 查看所用镜像的id
    查询结果如下图:
    Linux系统相关的笔记(包含docker。。完结) - 图4
    相关的字段解释:
    REPOSITORY:镜像名称
    TAG:镜像标签
    IMAGE ID:镜像id
    CREATED:镜像的创建日期
    SIZE:镜像大小
    ②搜索镜像
    从网络中查找需要的镜像
    docker search 镜像名称
    查询结果如下(查询的镜像是redis)
    Linux系统相关的笔记(包含docker。。完结) - 图5
    相关字段说明:
    NAME:镜像名称
    DESCRIPTION:镜像的描述
    STARS:用户的评价
    OFFICIAL:是否为官方
    AUTOMATED:是否自动构建,表示该镜像有docker hub自动构建流程创建的
    ③拉取镜像
    从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版 本。 如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
    docker pull 镜像名称
    ④删除镜像
    删除本地镜像
    docker rmi 镜像id # 删除指定本地镜像 docker rmi docker images -q # 删除所有本地镜像
    更多的docker命令,可以参照菜鸟教程查看:https://www.runoob.com/docker/docker-command-manual.html
    (4)容器相关的命令
    ①查看容器的命令
    docker ps # 查看正在运行的容器 docker ps –a # 查看所有容器,包括正在运行和停止的容器
    ②创建并启动容器
    docker run 参数
    参数说明:
    • -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
    • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
    • -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
    • —name:为创建的容器命名。
    交互式容器:以交互式创建容器并启动容器,启动完成后,直接进入当前容器,使用exit命令退出容器后容器会停止
    # 先拉取一个镜像;这一步不是每次启动容器都要做的,而是因为前面我们删除了镜像,无镜像可用所以才再拉取一个 docker pull centos:7 #创建并启动名称为 mycentos7 的交互式容器;下面指令中的镜像名称 centos:7 也可以使用镜像id docker run -it —name=mycentos7 centos:7 /bin/bash
    守护式容器:创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称 不能重复):
    #创建并启动守护式容器 docker run -di —name=mycentos2 centos:7 #登录进入容器命令为:docker exec -it container_name (或者 container_id) /bin/bash(exit退出 时,容器不会停止) docker exec -it mycentos2 /bin/bash
    ③进入容器的命令
    docker exec 参数 # 退出容器,容器不会关闭 eg: docker exec -it mycentos2 /bin/bash
    ④停止容器
    docker stop 容器名称或者容器id
    ⑤启动容器
    docker start 容器名称或者容器id
    ⑥删除容器
    #删除指定容器 docker rm 容器名称或者容器id # 删除所有容器: docker rm docker ps -a -q
    注意:如果容器是运行状态的则会删除失败,需要停止容器才能成功的删除
    ⑦查看容器信息
    docker inspect 容器名称或者容器id
    查询结果如下:
    Linux系统相关的笔记(包含docker。。完结) - 图6
    说明:容器之间在一个局域网内,linux宿主机器可以与容器进行通信;但是外部的物理机笔记本是不能与容器直接通信的,如果需要则需要通过宿主机器端口的代理。
    1.6docker容器的数据卷
    前言:由于宿主机(本虚拟机中的CentOS7)中的docker容器删除后容器中的数据会丢失;docker容器中的数据不能和外部机器进行交互;容器之间也不能进行数据的交互等问题,因此数据卷的出现就是为了解决上面三个问题的。
    (1)数据卷的概念
    ①数据卷是宿主机中的一个文件或目录;
    ②当容器目录和数据卷目录绑定后,两者之间的修改会立即同步
    ③一个数据卷可以被多个容器同时挂载
    ④一个容器也可以被挂载多个数据卷。
    Linux系统相关的笔记(包含docker。。完结) - 图7
    (2)数据卷的作用
    ①容器数据的持久化(容器被销毁了容器中的数据可以被保留下来)
    ②连接外部机器和容器间的通信 (外部机器访问数据卷达到间接连接容器的作用)
    ③容器间数据交互(原理和第二个作用相似)
    (3)配置数据卷
    ①创建启动容器时,使用 -v 参数 设置数据卷
    docker run … –v 宿主机目录(文件):容器内目录(文件) …
    注意事项:
    目录必须是绝对路径
    如果目录不存在,会自动创建
    一个容器可以挂载多个数据卷
    一个数据卷也可以被多个容器挂载
    两个容器可以挂载同一个容器
    ②实现数据卷的挂载
    在c1容器中的root目录下就可以看到data_container文件夹:如下图
    Linux系统相关的笔记(包含docker。。完结) - 图8
    同时我们我们回到宿主机中,可以在data文件夹下创建一个文件itcast.txt ,可以发现在容器中也会生成itcast.txt文件:如下图
    Linux系统相关的笔记(包含docker。。完结) - 图9
    ③实现数据的持久化
    当我们把c1容器删除后,宿主机中的数据卷依然存在。 所以当我们重新创建一个容器的同时依然可以挂载宿主机中的data文件夹,对应data里的数据依然同步到容器中。
    ④一个容器挂载多个数据卷
    Linux系统相关的笔记(包含docker。。完结) - 图10
    ⑤多个容器挂载同一个数据卷
    Linux系统相关的笔记(包含docker。。完结) - 图11
    分别创建两个容器,两个容器都挂载宿主机中data目录,当 修改c3容器的data目录c4会实现同步。从而实现两个容器之间的交互。
    ⑥数据卷容器
    数据卷容器相关的工作原理图解
    Linux系统相关的笔记(包含docker。。完结) - 图12
    实现步骤
    创建启动c3数据卷容器,使用 –v 参数 设置数据卷
    docker run –it —name=c3 –v /volume centos:7 /bin/bash
    创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
    docker run –it —name=c1 —volumes-from c3 centos:7 /bin/bash docker run –it —name=c2 —volumes-from c3 centos:7 /bin/bash
    (4)数据卷小结
    数据卷概念 •宿主机的一个目录或文件
    数据卷作用 • 容器数据持久化 • 客户端和容器数据交换 • 容器间数据交换
    数据卷容器 • 创建一个容器,挂载一个目录,让其他容器继承自该容器( —volume-from )。
    • 通过简单方式实现数据卷配置
    *1.7dockerfile

    (1)dockerfile的概念引入
    要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如 何做呢?答案是:Dockerfifile
    Dockerfifile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfifile文件并根据Dockerfifile文件的描述来构建镜像。
    (2)docker镜像的原理(了解)
    思考:
    Docker 镜像本质是什么? 是一个分层文件系统
    Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个个G? Centos的iso镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
    Docker 中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB?

    答:因为是由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的 tomcat镜像大小500多MB
    Linux系统相关的笔记(包含docker。。完结) - 图13

    Linux系统相关的笔记(包含docker。。完结) - 图14
    (3)传统手艺(原生的docker命令操作)
    Linux系统相关的笔记(包含docker。。完结) - 图15
    ①容器转为镜像
    命令形式:docker commit 容器名称 镜像名称
    eg: docker commit 381827f60f70 itheima_tomcat:1.0
    ②使用docker save命令可以将已有镜像保存为tar 文件。
    命令形式:docker save –o tar文件名 镜像名
    docker save -o itheima_tomcat:1.0.tar
    ③使用docker load命令可以根据tar文件恢复为docker镜像。
    命令形式:docker load -i tar文件名
    # 加载恢复镜像 docker load -i itheima_tomcat.tar # 在镜像恢复之后,基于该镜像再次创建启动容器 docker run -di —name=new_tomcat -p 8080:8080 itheima_tomcat:1.0
    注意:新的镜像制作后,原本容器中挂载的目录将失效, 索引一般在恢复镜像创建容器容器的时候需要重新挂载。
    (4)利用dockerfile将容器转换为镜像
    ①dockerfile概念
    Dockerfile 是一个文本文件
    包含了一条条的指令
    每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
    对于开发人员:可以为开发团队提供一个完全一致的开发环境
    对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件 构建一个新的镜像开始工作了
    对于运维人员:在部署时,可以实现应用的无缝移植
    Dochub网址:https://hub.docker.com
    ②dockerfile关键字

    关键字 作用 备注
    FROM 指定父镜像 指定dockerfile基于哪个image构建
    MAINTAINER 作者信息 用来标明这个dockerfile谁写的
    LABEL 标签 用来标明dockerfile的标签,
    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

    (5)dockerfile案例一
    ①需求:自定义CentOS7镜像,默认登录路径为/user ;可以使用vim
    ②步骤 ① 定义父镜像:FROM centos:7
    ② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
    ③ 执行安装vim命令: RUN yum install -y vim
    ④ 定义默认的工作目录:WORKDIR /usr
    ⑤ 定义容器启动执行的命令:CMD /bin/bash
    ⑥ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
    dockerfile文件中编写的内容如下图:
    Linux系统相关的笔记(包含docker。。完结) - 图16
    * 文件编写完成后执行命令构建:
    docker build -f ./centos_dockerfile -t itheima_centos:1 .

    (6)dockerfile案例二
    ①需求:定义dockerfile,发布springboot项目
    ②步骤: ① 定义父镜像:FROM java:8
    ② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
    ③ 将jar包添加到容器: ADD springboot.jar app.jar
    ④ 定义容器启动执行的命令:CMD java–jar app.jar
    ⑤ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
    dockerfile文件中编写的内容如下:
    Linux系统相关的笔记(包含docker。。完结) - 图17
    文件编写完成执行命令构建:
    docker build -f ./springboot_dockerfile -t app .

    1.8服务编排
    前言:微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
    要从Dockerfile build image 或者去dockerhub拉取image
    要创建多个container
    要管理这些container(启动停止删除)
    服务编排: 按照一定的业务规则批量管理容器
    (1**)Docker Compose 概述
    Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建 ,启动和停止。使用步骤:
    利用 Dockerfile 定义运行环境镜像
    使用 docker-compose.yml 定义组成应用的各服务
    运行 docker-compose up 启动应用
    Linux系统相关的笔记(包含docker。。完结) - 图18
    (2)**Docker 私有仓库
    Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜 像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
    (3)docker相关的概念总结(面试题)
    docker容器虚拟化 与 传统虚拟机比较:
    Linux系统相关的笔记(包含docker。。完结) - 图19

    Linux系统相关的笔记(包含docker。。完结) - 图20