docker系统复习

1. docker前言

  • 开发和运维之间的矛盾,环境统一性问题
  • 开发人员利用 docker 可以消除协作编码时“在我的机器上可正常工作”的问题
  • vm是一个运行在宿主机之上的完整的操作系统,vm运行自身操作系统(guest os)会占用较多的CPU、内存、硬盘资源
  • docker不同于vm,只包含应用程序以及依赖库,基本不消耗额外的系统资源,系统的开销尽量小,不需要额外的 hypervisor 支持,内核级的虚拟化,实现更高的性能和效率
  • docker 是一种容器技术的实现,在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护,使得容器技术比虚拟机技术更为轻便、快捷
  • 理念:一次封装,到处运行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2. docker三要素

  • 镜像 image

docker 镜像是一个只读的模板
镜像可以用来创建 docker 实例
一个镜像可以创建多个容器

  • 容器 container

容器是用镜像创建的实例
在这里插入图片描述
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的

  • 仓库 repository

在这里插入图片描述

3. docker安装

在centos上使用yum安装

  1. 访问官网手册
    https://docs.docker.com/engine/install/centos/
  2. 安装依赖和添加源
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. 启动docker
 sudo systemctl start docker
 docker version
  1. 测试hello world
sudo docker run hello-world

注:

Docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由用户拥有root,其他用户只能使用来访问它sudo。Docker守护程序始终以root用户身份运行
如果你不想在前言docker与命令sudo,创建一个名为UNIX组docker和用户添加到它。Docker守护程序启动时,它会创建一个可由该docker组成员访问的Unix套接字

docker machine 安装 docker

可以在虚拟主机上安装docker的工具,并可以使用 docker-machine 命令来管理主机
类似vagrant

  • 命令
 docker-machine ls
 docker-machine create --driver virtualbox name
//--driver:指定用来创建机器的驱动类型,这里是 virtualbox
//在本地虚机安装,会去下载boot2docker.iso文件(已安装了docker的系统镜像文件),然后安装创建
 docker-machine ip name
 docker-machine stop name
 docker-machine start name
 docker-machine ssh name
  • 映射到本地
    在这里插入图片描述
  • docker machine 安装 docker 到阿里云上

非官方支持的第三方驱动
https://github.com/docker/docker.github.io/blob/master/machine/AVAILABLE_DRIVER_PLUGINS.md
阿里云驱动使用
https://github.com/AliyunContainerService/docker-machine-driver-aliyunecs

参考

阿里云docker ce安装手册
https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1ed51991BdQ9Ml

4. 镜像加速

  • 阿里云
    在这里插入图片描述
  • 网易云(查看官网)

5. docker 命令

  • 帮助命令
docker version
docker info
docker --help
  • 镜像命令
    docker images
    在这里插入图片描述
    docker search
    在这里插入图片描述
    docker pull
    在这里插入图片描述
    docker rmi
    在这里插入图片描述
    docker tag : 标记本地镜像,将其归入某一仓库。并不是修改":"后面的标签
    备份和恢复镜像
    在这里插入图片描述
    在这里插入图片描述

  • 容器命令
    新建并启动容器
    在这里插入图片描述
    在这里插入图片描述
    很多官方镜像,喜欢将主服务的进程作为ID为1运行,如果运行完,就会关闭容器

列出当前所有正在运行的容器
在这里插入图片描述
在这里插入图片描述
退出容器
在这里插入图片描述
在这里插入图片描述
删除已停止的容器
在这里插入图片描述在这里插入图片描述
停止后自动删除
dokcer run -it --rm 容器ID /bin/bash

启动守护式容器
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
进入正在运行的容器并以命令行交互
在这里插入图片描述
exec是在外面让容器执行命令
在这里插入图片描述
从容器内拷贝文件到主机上
在这里插入图片描述
提交容器成镜像
在这里插入图片描述
总结:
在这里插入图片描述

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

6. docker 镜像

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件

特点:
Docker镜像都是只读的
当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

UnionFS(联合文件系统)
在这里插入图片描述
docker镜像加载原理
在这里插入图片描述
在这里插入图片描述
为什么 Docker 镜像要采用这种分层结构
在这里插入图片描述
在这里插入图片描述

7. 数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
特点:
1:数据卷可在容器之间共享或重用数据
2:卷中的更改可以直接生效
3:数据卷中的更改不会包含在镜像的更新中
4:数据卷的生命周期一直持续到没有容器使用它为止
在这里插入图片描述

各种格式:
在这里插入图片描述

直接命令添加
直接命令添加
在这里插入图片描述
dockerfile添加
docerfile里面volume的作用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
容器内的卷目录对应的主机目录地址哪?
在这里插入图片描述
备注:

docker挂载主机目录,docker访问出现cannot open directory : Permission denied
解决办法:在挂载目录的命令后多加一个 --privileged=true 参数即可

数据卷容器

命名的容器挂载数据卷,其它容器通过挂载这个容器(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

容器间传递共享(–volumes-from)
在这里插入图片描述
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

8. dockerfile

dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
在这里插入图片描述

dockerfile 基础知识
在这里插入图片描述
Docker执行Dockerfile的大致流程
在这里插入图片描述
dockerfile 指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://www.cnblogs.com/sparkdev/p/9573248.html
Dockerfile 中的 COPY 与 ADD 命令区别详解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. docker 网络

在这里插入图片描述
在这里插入图片描述

· bridge模式,使用--net=bridge指定,默认设置

· host模式,使用--net=host指定

· container模式,使用--net=container:NAME_or_ID指定

· none模式,使用--net=none指定

都是在 docker run 后面的,指定容器的网络模式
//创建自定义网络
docker network create --driver=bridge --subnet=192.138.0.0/16 mynginx
docker network create --driver bridge --subnet 192.138.0.0/16 mynginx

//扩展 swarm的
docker network create -d overlay --attachable sharenet

//使用自定义网络
docker run -d --rm --name myfpm --network mynginx --ip 192.138.0.2 php:7.2-fpm-alpine3.11
docker run -d --rm --name myfpm --net=mynginx --ip 192.138.0.2 php:7.2-fpm-alpine3.11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值