导图社区 Docker
docker相关的知识,包括安装,启动,镜像,容器,dockerfile等,多数节点内部附有图片。
编辑于2024-01-17 09:45:26Docker
虚拟机和docker的区别
虚拟机

缺点
资源占用多
冗余步骤多
启动慢
docker

两者的不同之处
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
docker的基本组成
docker的架构图
docker中的基本概念
镜像(image)
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很 多容器。 就好似 Java 中的 类和对象,类就是镜像,容器就是对象!
容器(container)
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等) 和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写 的`
仓库(repository)
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓 库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)
仓库分为公开仓库(Public)和私有仓库(Private)两种形式
最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。 国内的公开仓库包括阿里云 、网易云 等
docker的安装和用法
安装
环境的查看
确定是centos7及以上的版本
查看自己的内核
uname -r 命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 
uname -r
查看版本信息
cat /etc/os-release 
cat /etc/os-release
yum安装gcc相关环境

c语言的编译环境 gcc
c++的编译环境 gcc-c++
安装yum工具包合集

用法
启动和验证
设置开机启动

常用命令
容器相关
新建容器并启动

从镜像变为容器
启动/停止容器

已经存在的容器
这两个一个是之前不存在的容器,另外一个是容器已经存在了
显示容器(运行/未运行)

容器的日志查看
 
退出容器

删除容器

查看所有容器的id
docker ps -a -q
查看容器的环境变量

进入容器的命令
docker exec -it 容器ID /bin/bash 或者 docker exec -it 容器的name bash
查看容器/镜像的元数据

从容器内拷贝文件到主机
 
镜像相关
删除镜像
docker rmi id(镜像id)
删除所有镜像
docker rmi $(docker ps -a -q) -a :列出所有镜像 -q : 只显示镜像id
查看镜像
docker相关
帮助命令
docker --help
docker的重启
systemctl restart docker
dokcer中搭建开发环境
docker和tomcat
步骤和Ng安装一致
访问时出现的问题

解决方案
防火墙
查看防火墙状态

用命令关闭防火墙

关闭防火墙还是不能访问的情况下
webapps下面没有内容

dokcer中搭建其他功能
docker和禅道
前提
运行环境需成功部署Docker服务,推荐使用Docker 18版本以上,对主机环境没有要求 
步骤
拉取镜像

启动镜像

访问并安装

使用docker安装nginx
其余安装都是类似的步骤
搜索镜像

拉取镜像

启动容器

测试访问

进入容器

docker中的数据卷
数据卷是什么
卷就是目录或者文件,存在一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System , 提供一些用于持续存储或共享数据的特性: 卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
数据卷就是目录和文件
Docker不会在容器删除时删除其挂载的数据卷
数据卷能干嘛
容器卷和主机互通互联
容器卷ro和rw读写规则
容器卷之间的继承
特点
数据卷可在容器之间共享或重用数据
卷中的更改可以直接生效
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止
总结一句话: 就是容器的持久化,以及容器间的继承和数据共享!
数据卷的使用
实用 -v 进行挂载

使用docker inspect 容器id 查看是否挂载成功

容器停止退出后,宿主机上修改的文件,在容器启动过后,仍然会同步到容器中
dockerFile
定义
DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。
基础知识
每条保留字指令都必须为大写字母且后面要跟随至少一个参数
指令按照从上到下,顺序执行
# 表示注释
每条指令都会创建一个新的镜像层,并对镜像进行提交
构建步骤
构建步骤
编写dockerFile
docker build构建镜像
docker run
构建的执行流程
docker从基础镜像运行一个容器
执行一条指令并对容器做出修改
执行类似 docker commit 的操作提交一个新的镜像层
Docker再基于刚提交的镜像运行一个新容器
执行dockerfile中的下一条指令直到所有指令都执行完成
dockerFile指令

指令的通俗理解

将指令分成三大类
build

both

run

CMD

ENTRYPOINT

镜像的构建命令
 
dockerFile/docker镜像/docker容器代表不同的三个阶段
DockerFile 是软件的原材料(代码)
DockerFile 面向开发
Docker 镜像则是软件的交付品(.apk)
Docker镜像成为交付标准
Docker 容器则是软件的运行状态(客户下载安装执行)
Docker容器则涉及部署与运维
docker网络的讲解
安装docker时,自动创建的三个网络
查看命令:docker network ls
三种网络

bridge
默认为该模式,此模式会为每一个 容器分配、设置IP等,并将容器连接到一个docker0虛拟网桥,通过docker0网桥以及iptables nat表配置与宿主机通信
none
该模式关闭了容器的网络功能
host
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
docker的常用命令
docker的常用命令
帮助命令
docker version
显示docker版本信息
docker info
显示docker的系统信息,包括镜像和容器的数量
docker --help
帮助命令
镜像命令
镜像查看
docker images

镜像搜索
docker search mysql
镜像拉取
docker pull mysql:5.7
docker pull
如果不写tag,默认就是latest
镜像删除
docker rmi -f 容器id
删除指定的容器
docker rmi -f 容器id 容器id 容器id
删除多个容器
docker rmi -f $(docker images -aq)
删除全部容器
docker images -aq
列出所有镜像,并且只显示id
容器命令
新建容器并启动
docker run [可选参数] image
参数说明

进入已经启动的容器
docker run -it centos /bin/bash
退出容器
exit
列出所有运行的容器
docker ps
参数说明

容器的删除
docker rm 容器id
删除指定的容器,不能删除正在运行的容器,如果是强制删除的话 rm -f
docker rm -f $(docker ps -aq)
删除所有容器
docker ps -aq
查询所有容器,并且只显示容器id
docker ps -a -q|xargs docker rm
删除所有容器
常用其他命令
查看日志命令
docker logs -f -t --tail 200 容器id
查看容器/镜像的元数据
docker inspect 容器id