Docker笔记(一)

一、Docker 简介

1、Docker 是什么?

比如我们在 Windows 上开发,发布到Linux上去,在 Windows 上的软件,移植到 Linux 上还需要在重新安装一次软件,配置环境,太麻烦了,因此 出现了 Docker ,Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术。

1657684260225
Docker 是通过将 源代码,配置环境,软件,软件版本…一些配置打包成镜像。将镜像在 Docker上运行,类似于 Vm 虚拟机的 iso 镜像文件。

总结起来一句话:解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

2、容器 VS 虚拟机

容器的发展过程:

1657685615130

从光盘到 卡台机,然后到 VM,然后到 DOcker

1657685588209

虚拟机(virtual machine) 就是带环境安装的一种解决方案。可以在一套操作系统中安装另一套操作系统,iso 镜像文件 克隆了整套 CentOS 系统文件。

因此 虚拟机的缺点就是占用资源多,冗余步骤多,启动慢

1657686613264

容器 根据 虚拟机的缺点,Linux 容器发展了另外一种虚拟化技术,Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离。

有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。

容器与虚拟机不同,不需要捆绑一整套操作系统只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

1657686695112

容器和虚拟机对比:

1657686847205

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;

  • 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

  • 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

2、Docker 能干吗

  • 更快速的应用交付和部署
    • 传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
  • 更便捷的升级和扩缩容
    • 随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
  • 更简单的系统运维
  • 应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
  • 更高效的计算资源利用
  • Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的 Hypervisor 支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率

二、Doucker 的工作原理

docker官网:http://www.docker.com
Docker Hub官网: https://hub.docker.com/

1657688226136

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,
要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x

查看自己的内核

uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

1657688267359

Docker 的三大组成:

  • 镜像(image)

    • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
  • 容器(container)

    • 容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
    • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
  • 仓库(repository)

    • 仓库(Repository)是集中存放镜像文件的场所。

    • 类似于: Maven仓库,存放各种jar包的地方;github仓库,存放各种git项目的地方;

    • 仓库分为 公开仓库(Public)私有仓库(Private) 两种形式。

    • 最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

1657701070702

总结:

需要正确的理解仓库/镜像/容器这几个概念:

Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是 image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

镜像文件 : image 文件生成的容器实例,本身也是一个文件,称为镜像文件。

容器实例:一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器

仓库 : 就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。

工作原理:

1657704925861

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。

1657705450178

1657705464813

三、Docker 安装步骤

官网步骤: Install Docker Engine on CentOS | Docker Documentation

1、首先确定你的 CentOS版本为7 以上,内核版本为 3.8 以上

查看内核版本
uname -r
查看 CentOS版本
cat /etc/redhat-release

2、卸载之前的 旧版本

 sudo yum remove docker \
            docker-client \
             docker-client-latest \
                docker-common \
                 docker-latest \
                 docker-latest-logrotate \
                 docker-logrotate \
                  docker-engine

3、安装 gcc 环境

yum -y install gcc
yum -y install gcc-c++

4、安装所需要的软件包

yum install -y yum-utils

5、建立远程仓库,注意:不要使用官网推荐的仓库,因为那是国外的,非常慢!!!!
1657706665330
推荐使用国内的镜像网站

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6、更新 yum 软件包索引,非必须选项【主要是为了安装能快一些】

yum makecache fast

7、安装 Docker 引擎

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

1657706956577

启动 Docker

Systemctl start docker

查看是否启动

ps -ef | grep docker

查看 docker 版本

docker version

使用 docker run hello world 测试:
1657707399643

run 进行的步骤:
1657781842491

卸载 Docker

systemctl stop docker 
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

3.1 阿里云镜像加速

官方:https://promotion.aliyun.com/ntms/act/kubernetes.html

登录之后,搜索 ’容器镜像服务“,复制加速器地址

1657781289486

配置 镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ey4yg4p8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload 
sudo systemctl restart docker

为什么 Docker 比 虚拟机块?

(1)docker有着比虚拟机更少的抽象层

由于docker不需要 Hypervisor(虚拟机) 实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

(2) docker利用的是宿主机的内核,而不需要加载操作系统OS内核

当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker 容器只需要几秒钟。

1657784470085

四、Docker 常用命令

4.1 帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help

4.2 镜像命令

命令含义OPTIONS
docker images列出本地主机上的镜像-a :列出本地所有的镜像(含历史映像层) -q :只显示镜像ID。
docker search [OPTIONS] 镜像名字搜索某个镜像–limit : N 列出N个镜像,默认25个
docker pull 镜像名字拉取镜像,不指明版本号自动拉取最新版,相当于 latest
docker pull 镜像名字[:TAG]拉取镜像,指明具体的版本号
docker system df查看镜像/容器/数据卷所占的空间
docker rmi 镜像名字、镜像Id删除镜像-f : 强制删除

(1) docker images

1657785383820

标签含义
REPOSITORY表示镜像的仓库源
TAG镜像的标签版本号
IMAGE ID镜像ID
CREATED镜像创建时间
SIZE镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

(2) docker search [OPTIONS] 镜像名字

在这里插入图片描述
1657785766087

(3) docker pull 镜像名字

1657786789078

(4) docker rmi 镜像名字/镜像Id

可以使用 镜像名字、镜像ID 、镜像名字 + 版本号 进行删除

删除单个镜像: docker rmi -f 镜像名:TAG
删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除所有的镜像: docker rmi -f $(docker images -qa)

1657786836149

4.3 容器命令

容器依赖于镜像,启动容器前,需要所对应的镜像

命令含义参数
docker run [OPTIONS] IMAGE创建容器并启动见下面
docker ps [OPTIONS]列出当前正在运行的容器见下面
exit退出容器,并停止容器
Ctrl + q + p退出容器,但是不会停止容器
docker start 容器ID/容器名启动已经停止的容器
docker restart 容器ID/容器名重启容器
docker stop 容器ID或者容器名停止容器
docker kill 容器ID或容器名强制停止容器
docker rm -f 容器ID强制删除容器。不加 -f 只能删除停止的容器
docker rm -f $(docker ps -a -q)强制删除所有的容器
docker logs 容器ID查看容器日志
docker inspect 容器ID查看容器内部细节
docker exec -it 容器ID bashShell重新进入容器
docker attach 容器ID重新进入容器

(1)docker run [OPTIONS] IMAGE : 新建+启动容器

OPTIONS参数说明(常用)

参数含义
– name=“容器新名字”指定容器的名称 (俩个-)
-d后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i以交互模式运行容器,通常与 -t 同时使用
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用
-P随机端口映射,大写P
-p指定端口映射,小写p

参数 -P、-p说明

1657788040610
命令演示

[root@bogon ~]# docker run -it --name='myCentos' -p 8888:8888 5d0d bash

在这里插入图片描述

重要
一般将容器分为俩种类型,一种是启动交互式容器(前台命令行),另一种是启动守护式容器(后台服务器)

前台交互式启动 : docker run -it redis:latest
后台守护式启动: docker run -d redis:latest
一般像这种 redis,mysql…这种后台服务,建议采取后台守护式启动,Docker容器后台运行,就必须有一个前台进程.

(2)docker ps [OPTIONS] :列出当前正在运行的容器

参数含义
-a列出当前所有的容器【包括关闭的】
-l显示最近创建的容器
-n显示最近n个创建的容器。
-q静默模式,只显示容器编号。

1657788680895

(3) docker logs 容器ID : 查看容器日志

一般可以利用日志进行排错

1657872592633

(4) docker top 容器 ID : 查看容器内运行的进程

1657872981492

(5)docker inspect 容器ID : 查看容器内部细节

1657873081776

(6)docker exec -it 容器ID bashShell : 重新进入容器

注意它和 run 的区别,run 是重新启动、创建一个新的容器,而 exec 是重新进入之前创建好的容器

(7) docker attach 容器ID : 重新进入容器

attach 和 exec 的区别是什么?

  • 使用 exec 重新进入容器,会开启新的进程,使用 exit 不会导致 容器的停止
  • attach 不会开启新的进程,exit 会导致容器的停止 !

1657874154889

(8) docker cp 容器ID:容器内路径 目的主机路径:从容器中拷贝文件到主机上
1657875566678

(9) 导入导出容器

export 导出容器的内容留作为一个tar归档文件[对应import命令]

  • docker export 容器ID > 文件名.tar

import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

  • cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

命令总结

1657877335669

五、Docker 镜像

是什么?

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是 image 镜像文件。

分层的镜像 : 在我们下载镜像的时候其实也会发现, Docker 是一层一层下载的

1657877958887

UnionFS(联合文件系统)

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性: 一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

Docker 镜像加载原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

1657878665466

平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??

对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs。

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

1657878696931

六、案例

实例一 :提交一个自己的Docker镜像到本地

原始下载的 Ubuntu 镜像是不带有 vim 命令的。安装 vim 命令

> apt-get update # 更新包管理命令
> apt-get -y install vim # 安装 vim

使用 commit 命令,提交镜像到本地:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]`

1657954288596
自定义的镜像,由于我们安装了 vim,大小会发生变化,使用该镜像创建的容器也带有 vim
1657954402590

总结

Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。

新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层

1657954482511

实例二: 提交本地镜像到阿里云

1657954853848

第一步: 创建命名空间

1657966152146

第二步:创建镜像仓库

1657966213944

第三步:获取对应的脚本,执行响应的操作

1657966303543

推送镜像:

1657966583011

拉取镜像:

1657966702913

实例三 : 提交镜像到 私有库

1、 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。

2 、Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

第一步:下载 Registry 镜像

docker pull registry

第二步: 运行 Registry 镜像

docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

第三步:创建一个新的镜像,并且安装 ifconfig

 apt-get update
 apt-get install net-tools

1657967860471

第四步: 安装完后,一定要记得 commit,在容器外进行。

 # 格式
 docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
 # 输入的命令
docker commit -m="first commit ifconfig" -a="yzg" 7a4e2611f6e7 myubuntu2:1.1

第五步: curl 验证私服库上有什么镜像

curl -XGET http://192.168.200.132:5000/v2/_catalog

1657968316855

第六步:修改新镜像 myubuntu2 的 Tag 为符合私服规范的 Tag

# 格式
docker   tag   Repository:Tag   Host:Port/Repository:Tag
docker   tag   myubuntu2:1.1    192.168.200.132:5000/myubuntu:1.1

1657968812718

第七部:修改配置文件使之支持http

# 修改 该配置文件
vim /etc/docker/daemon.json

{
  # 前面配置 阿里云镜像加速 的配置
  "registry-mirrors": ["https://ey4yg4p8.mirror.aliyuncs.com"],
 # 新增的内容,注意IP地址修改成自己虚拟机的
 "insecure-registries": ["192.168.200.132:5000"]
}

如果不生效,建议重启 Docker systemctl restart docker ,重启完 docker 记得 run 一下私服镜像

第八步: push 镜像到私服库,并使用 curl 测试

1657969290554

第九步: pull 到本地并运行

1657969598934
1657969630530

七、容器数据卷

回顾上一章,运行 registry 时 有一个 -v 参数

docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

一句话:有点类似我们Redis里面的rdb和aof文件,将docker容器内的数据保存进宿主机的磁盘中

1657970641383

作用

对容器中的数据进行备份 + 持久化

特点
1:数据卷可在容器之间共享或重用数据
2:卷中的更改可以直接实时生效,爽
3:数据卷中的更改不会包含在镜像的更新中
4:数据卷的生命周期一直持续到没有容器使用它为止

如何运行一个带有容器卷存储功能的容器 ?

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录  镜像名

当宿主机或者容器内没有该指定的目录时,docker 会自动为我们创建目录

当我们在容器中创建文件时,宿主机也能立马同步过来。相反,也是一样的。当容器stop,主机修改时,容器启动也能同步

1657971709979

查看数据卷是否挂载成功

docker inspect 容器 ID
1658040008550

读写规则映射添加说明

 #  rw: 表示**容器内**可读可写, read write 。默认不写就是可读可写
 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw  镜像名
  #  ro : 表示 **容器内**只读,read only 
 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro  镜像名

1658041042338

卷的继承和共享

类似于 Java 中的继承。

怎么玩呢?

容器 1 完成和宿主机的映射,容器 2 继承容器 1 的宿主机的映射。

docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu

1658042148604

八、Docker上 安装常用软件

总体的步骤:

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像
  5. 停止镜像
  6. 移除镜像

1、install Tomcat

docker search tomcat # 搜索镜像,选择下载最多,好评最多的
docker pull tomcat # 拉取
docker run -d -p 8080:8080 tomcat # 运行 tomcat

-p :映射端口,主机端口: docker容器内部端口

  • 主机端口,就是在外部访问的端口,会映射到 容器内部端口

-P : 随机分配端口

-d : 后台运行

1658042747395

当我们访问8080,却发现以下这种情况:

1658044645558

原因,在 tomcat 安装目录下的 webapps 是空的,需要将其删掉,将 webapps.dist 目录换成 webapps

1658044979109

因为下载的是最新版 10.0 的,需要修改, 8版本的tomcat是不需要修改文件的。

运行 8.0 版本的 tomcat :

docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

2、install MYSQL

docker Hub : Docker Hub

搜索版本以及命令

启动 mysql :

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7

启动 镜像 这些命令都在官网有说明

1658045783821

注意: LInux 本机上装了mysql,并启动了 mysql 服务,3306 端口就会被占用,Docker在启动 mysql 时 就会报错。

1658046073615

systemctl stop mysqld.service # 关闭 mysql 服务

启动完毕,使用 SQL_YOUNG 也可以连接

安装 MySQL 的坑

  1. 当我们插入数据有中文时,docker上默认字符集编码隐患

1658046868252

查看 docker 的 mysql 编码集 : SHOW VARIABLES LIKE 'character%'

1658046966214

不是 utf8 而是拉丁文。

  1. 还有一个问题,就是如果不小心把容器删除了,那么 mysql 中保存的数据也无法进行保存。

安装实战版的 MySQL

  1. 新建容器实例,并挂在数据卷,防止数据丢失
# 数据卷可以创建多个
docker run -d -p 3306:3306 --privileged=true -v /yzg/app/mysql/log:/var/log/mysql -v /yzg/app/mysql/data:/var/lib/mysql -v /yzg/app/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1234  --name mysql mysql:5.7
# 注意密码是 1234
  1. 在宿主机的 /yzg/mysql/conf/ 下 新建 my.cnf 配置文件,并配置编码
[client]
default_character_set= utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
  1. 配置完毕后,登录mysql
mysql -u root -p
  1. 查看编码集,并测试插入中文数据
SHOW VARIABLES LIKE 'character%'

1658047969856

中文编码错误已解决:

1658048208960

3、 install Redis

  1. 拉取 redis 镜像
docker pull redis:6.0.8
  1. 创建宿主机容器卷挂载目录: /yzg/app/redis , 并且拷贝一份原有的 redis.conf
cp /usr/local/redis/redis-6.2.1/redis.conf /yzg/app/redis/
  1. 修改配置文件 redis.conf

注释掉 bind ,并且将后台运行模式关掉,因为会和 docker run -d 起冲突

1658049424085

1658049443949

如果想要外部客户端连接 redis, 把保护模式 protected-mode yes 改成 no

  1. 启动 redis
docker run  -p 6379:6379 --name myr3 --privileged=true -v /yzg/app/redis/redis.conf:/etc/redis/redis.conf -v /yzg/app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
  1. 连接 redis
docker exec -it myr3 /bin/bash

1658049850098

测试 Redis 是否使用了 宿主机的配置文件,默认数据库 16 个,在宿主机上修改成 10 个。

1658051683341

1658051866422

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲨瓜2号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值