Docker简介与用法
文章目录
- 1、Docker简介
- 1.1、Docker能解决什么问题
- 1.2、什么是虚拟机技术
- 1.2.1、虚拟机的缺点
- 1.3、什么是容器
- 1.3.1、容器与虚拟机比较
- 1.4、分析 Docker 容器架构
- 1.4.1、Docker客户端和服务器
- 1.4.2、Docker 镜像(Image)
- 1.4.3、Docker 容器(Container)
- 1.4.4、Docker 仓库(repository)
- 2、VMware和CentOS7安装
- 2.1、Docker 安装环境说明
- 2.2、在VMware Workstation10中安装CentOS7
- 3、Docker安装卸载与启停
- 3.1、查看当前系统的内核版本
- 3.2、安装 Docker 服务
- [解决bug]
- 3.2.1、安装所需的软件包
- 3.2.2、设置Docker的镜像仓库
- 3.2.3、安装最新版本的 Docker CE
- 3.2.4、查看安装的版本
- 3.3、卸载 Docker 服务
- 3.3.1、卸载旧版本:(如果安装过旧版本的话)
- 3.3.2、卸载 Docker 软件包
- 3.3.3、删除镜像/容器等
- 3.4、启动与停止Docker服务
- 3.5、Docker 帮助命令
- 4、Docker 镜像操作
- 4.1、什么是Docker镜像
- 4.2、拉取镜像
- 4.2.1、从Docker Hub拉取镜像
- 4.2.2、配置国内镜像加速器
- 4.3、列出镜像
- 4.4、搜索镜像
- 4.5、删除镜像
- 5、Docker 容器操作
- 5.1、查看容器
- 5.2、创建与启动容器
- 5.2.1、创建容器的命令
- 5.2.2、交互式容器
- 5.2.3、创建守护式容器
- 5.3、退出创建守护式容器
- 5.4、启动与停止容器
- 5.5、登录容器
- 5.6、拷贝宿主机与容器中的文件
- 5.7、数据目录挂载
- 5.7.1、需求
- 5.7.2、实现
- 5.7.3、目录挂载只读(Read-only)权限
- 5.8、看容器内部细节
- 5.9、查看容器IP地址
- 5.10、删除容器
1、Docker简介
1.1、Docker能解决什么问题
难题:
软件开发中最麻烦的事之一,就是环境配置。软件从开发到上线,一般都要经过开发、测试、上线。
而每个人的计算机环境配置可能都不相同,谁能保证自已开发的软件,能在每一台机器上跑起来?
每台机器必须保证:操作系统的设置,各种依赖和组件的安装都正确,软件才能运行起来。
比如,开发与部署一个 Java 应用,计算机必须安装 JDK,并配置环境变量,还必须有各种依赖。
在windows上进行开发,到Linux上进行部署时这些环境又得重装,这样很就麻烦。
而且系统如果需要集群,那每一台机器都得重新配置环境。
开发人员经常说:“它在我的机器可以正常运行”,言下之意就是,其他机器很可能跑不了。
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?
也就是说,安装的时候,把原始环境一模一样地复制过来。
解决:
开发人员可以使用 Docker 来解决 “它在我的机器可以正常运行” 的问题,它会将运行程序的相关配置打包(打包成一个镜像),然后直接搬移到新的机器上运行。
1.2、什么是虚拟机技术
虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如 VMware workstation 虚拟化产品提供了虚拟的硬件,在Windows 系统里面运行 Linux 系统。
1.2.1、虚拟机的缺点
- 资源占用多
每个虚拟机会独占一部分内存和硬盘空间。哪怕虚拟机里面的应用程序,真正使用的内存只有 1MB,虚拟机依然需要几百 MB 的内存才能运行。 - 冗余步骤多
虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。 - 启动慢
启动硬件上的操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,虚拟机才能真正运行。
1.3、什么是容器
由于虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。
容器技术可以将软件需要的环境配置都打包到一个隔离的容器中。让多个独立的容器高效且轻量的运行在同一台宿主机上。而Docker就是为了实现这一切而生的。
1.3.1、容器与虚拟机比较
虚拟机通过虚拟软件中间层将一台或者多台独立的虚拟机器运行在物理硬件之上。
容器则是直接运行在操作系统内核之上,是进程级别的,并对进程进行了隔离,而不是模拟一个完整的操作系统。
虚拟机:冗余步骤多、启动慢、资源占用多
容器: 体积小、启动快(秒级)、资源占用少(只占用需要的资源)
1.4、分析 Docker 容器架构
1.4.1、Docker客户端和服务器
Docker是一个客户端-服务器(C/S)架构程序。
Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。
Docker提供了一个命令行工具和一整套RESTful API。
你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
1.4.2、Docker 镜像(Image)
镜像(Image)是Docker中的一个模板。通过 Docker镜像来创建Docker容器,一个镜像可以创建出多个容器。
镜像与容器的关系类似于Java中类与对象的关系。镜像体积很小,非常便携,易于分享、存储和更新。
Docker | Java |
---|---|
镜像 | 类 |
容器 | 对象 |
1.4.3、Docker 容器(Container)
容器(Container)是基于镜像创建的运行实例,一个容器中可以运行一个或多个应用程序(jdk+开发的java应用程序)。
Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。
我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。
可以理解容器中有包含:一个精简版的Linux环境 + 要运行的应用程序
1.4.4、Docker 仓库(repository)
仓库(Repository)是集中存放镜像文件的场所。
实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公有仓库(Public)和私有仓库(Private)两种。
- Docker公司运营的公共仓库叫做 Docker Hub (https://hub.docker.com/),存放了数量庞大的镜像供用户下载。
- 用户可以在Docker Hub注册账号,分享并保存自己的镜像。(说明:在Docker Hub下载镜像巨慢)
- 国内的公有仓库包括阿里云 、网易云等,可以提供大陆用户更稳定快速的访问。
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
2、VMware和CentOS7安装
2.1、Docker 安装环境说明
- Docker官方建议在Ubuntu中安装,因为 Docker 是基于Ubuntu发布的,而且一般 Docker 出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的 CentOS 中是不支持更新最新的一些补丁包的。
- 由于很多公司的环境都使用的是 CentOS ,因此这里我们将 Docker 安装到 CentOS 上。
- 注意:
- Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看此前提条件来验证你的 CentOS 版本是否支持 Docker 。
- 需要安装 64位 CentOS7.x 以上的版本,在 CentOS6.x 的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。
- docker中文社区,docker帮助,docker手册,docker教程,docker安装手册 - docker中文社区 https://www.docker.org.cn/
2.2、在VMware Workstation10中安装CentOS7
VMware和CentOS7安装
a.安装 VMware Workstation10虚拟软件
b.安装 CentOS7
c.开启CentOS7 采用Xshell终端工具连接CentOS7 服务器
d.把防火墙关掉: systemctl stop firewalld 并且开机禁用 systemctl disable firewalld
firewalld 防火墙的基本使用
查看状态: systemctl status firewalld
启动: systemctl start firewalld
关闭: systemctl stop firewalld
开机禁用: systemctl disable firewalld
开机启用: systemctl enable firewalld
3、Docker安装卸载与启停
3.1、查看当前系统的内核版本
查看当前系统的内核版本是否高于 3.10
uname -r
3.2、安装 Docker 服务
使用镜像仓库进行安装,采用 yum 命令在线安装(即电脑需要联网)
[解决bug]
Another app is currently holding the yum lock; waiting for it to exit...
另一个应用程序是:PackageKit
内存:194 M RSS (1.1 GB VSZ)
已启动: Mon Feb 27 18:40:06 2023 - 07:09之前
状态 :睡眠中,进程ID:2884
解决办法:
rm -f /var/run/yum.pid原因分析:
可能是系统自动升级正在运行,yum在锁定状态中,要等待那个进程结束退出:
看报错的那一段话:Another app is currently holding the yum lock;
3.2.1、安装所需的软件包
yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要 device-mapper-persistent-data 和 lvm2 。
yum install -y yum-utils device-mapper-persistent-data lvm2
3.2.2、设置Docker的镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
上面处可能会报错 (原因是国内访问不到docker官方镜像的缘故)
Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file/etc/yum.repos.d/docker-ce.repo:
解决:使用以下方式:阿里源访问
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.2.3、安装最新版本的 Docker CE
# 安札最新版本Docker CE
yum install docker-ce docker-ce-cli containerd.io# 查看Docker历史版本
yum list docker-ce.x86_64 --showduplicates | sort -r# 安装指定版本的Docker CE语法: yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io-1.2.0-3.el7
安装中出现下面提示, 输入 y 然后回车
如上面安装不成功,则卸载Docker 服务再按上面重新安装
3.2.4、查看安装的版本
docker version
3.3、卸载 Docker 服务
以 root 用户运行以下命令:
3.3.1、卸载旧版本:(如果安装过旧版本的话)
Docker 的早期版本称为 docker 或 docker-engine 。如果安装了这些版本,请卸载它们及关联的依赖资源。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.3.2、卸载 Docker 软件包
yum remove docker-ce docker-ce-cli containerd.io
3.3.3、删除镜像/容器等
rm -rf /var/lib/dockerrm -rf /var/lib/containerd
3.4、启动与停止Docker服务
上面安装只是安装好, 但是没有启动Docker服务 。
systemctl 命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机自动启动docker: systemctl enable docker
3.5、Docker 帮助命令
查看 docker 帮助命令: docker --help
查看 docker 概要信息: docker info
4、Docker 镜像操作
4.1、什么是Docker镜像
Docker 镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。
Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。
4.2、拉取镜像
4.2.1、从Docker Hub拉取镜像
docker官网镜像搜索:https://hub.docker.com/
命令:
docker pull 镜像名:标签名例如:我们拉取 mysql 5.6版本的镜像
docker pull mysql:5.6
4.2.2、配置国内镜像加速器
目前国内访问 Docker HUB 官方的相关镜像下载比较慢,可以使用国内的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。
阿里云镜像, 需要注册帐号
- 注册并登陆阿里云https://www.aliyun.com/,进入“管理控制台”后,在如下图找到 容器镜像服务 或者搜索 容器镜像服务。
- 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,如果daemon.json配置文件不存在则手动创建
vim /etc/docker/daemon.json
- 文件加入以下内容 镜像地址 https://u7ln4k0c.mirror.aliyuncs.com是你自己的不要复制我的
{"registry-mirrors": ["https://u7ln4k0c.mirror.aliyuncs.com"]
}
- 一定要重启docker服务,如果重启docker后无法加速,可以重新启动CentOS
systemctl daemon-reload
systemctl restart docker
- 再通过 docker pull 命令下载镜像:速度杠杠的
docker pull mysql
4.3、列出镜像
- 列出docker下的已安装所有镜像:
docker images
查询结果:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.6 dd3b2a5dcb48 14 months ago 303MBREPOSITORY:镜像所在仓库的名称
TAG:镜像标签(一般是版本号)
IMAGE ID:镜像ID
CREATED:镜像的创建日期
SIZE:镜像大小
-
只显示镜像ID
docker images -q
查询结果:
[root@localhost ~]# docker images -q dd3b2a5dcb48
-
这些镜像都是存储在Docker宿主机的 /var/lib/docker 目录下
ll /var/lib/docker
查询结果:
[root@localhost ~]# ll /var/lib/docker 总用量 4 drwx------. 2 root root 24 2月 27 19:01 builder drwx------. 4 root root 92 2月 27 19:01 buildkit drwx------. 2 root root 6 2月 27 19:00 containers drwx------. 3 root root 22 2月 27 19:00 image drwxr-x---. 3 root root 19 2月 27 19:00 network drwx------. 14 root root 4096 2月 27 19:14 overlay2 drwx------. 4 root root 32 2月 27 19:00 plugins drwx------. 2 root root 6 2月 27 19:00 runtimes drwx------. 2 root root 6 2月 27 19:01 swarm drwx------. 2 root root 6 2月 27 19:14 tmp drwx------. 2 root root 6 2月 27 19:00 trust drwx------. 2 root root 25 2月 27 19:00 volumes
-
为了区分同一个仓库下的不同镜像,Docker提供了一种称为标签(TAG)的功能。每个镜像都带有一个标签(TAG),例如10.2.1、lastest 等等。这种机制使得同一个仓库中可以存储多个镜像。— 版本号
-
我们可以使用仓库名后面加上一个冒号和标签名 ( REPOSITORY:TAG ) 来指定该仓库中的某一具体的镜像,如果未指定镜像的标签,将下载lastest最新版本,例如:只写了centos,docker将默认使用 centos:lastest镜像。
4.4、搜索镜像
如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search [OPTIONS] 镜像名称
例如:docker search centos
查询结果:
[root@localhost ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
.. .. .. .. ..NAME:仓库名称
DESCRIPTION:镜像描述
STARS:关注度,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
OPTIONS 选项说明:
- -s 列出关注数大于指定值的镜像 最新版没有 -s 这个参数了。
docker search -s 100 centos #列出关注度大于100的镜像
- –no-trunc 显示完整的镜像描述DESCRIPTION
docker search --no-trunc centos
4.5、删除镜像
- 删除某一个镜像
docker rmi 镜像ID
docker rmi 镜像名称:版本号
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 4f06b49211c0 3 days ago 530MB
mysql 5.6 dd3b2a5dcb48 14 months ago 303MB
[root@localhost ~]# docker rmi 4f06b49211c0
[root@localhost ~]# docker rmi mysql:5.6
- 删除所有镜像 (是 `` 反单引号 )
docker rmi `docker images -q`
其中 docker images -q 获取所有镜像id 的意思
5、Docker 容器操作
5.1、查看容器
查看正在运行容器:
docker ps
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器 ID 镜像 初始命令 创建日期 容器状态 端口号 容器名字
查看所有的容器(启动与未启动的容器):
docker ps -a
查看最后一次运行的容器:
docker ps –l
查看停止的容器
docker ps -f status=exited
5.2、创建与启动容器
注意:必须先有镜像,再有容器,下面以CentOS镜像演示
先拉取一下 CentOS 镜像
docker pull centos:7
5.2.1、创建容器的命令
docker run [OPTIONS] 镜像名:标签名
- 创建容器 [OPTIONS] 常用的参数说明:
- -i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用 。
- -t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即分配一个伪终端。
- –name 为创建的容器指定一个名称 。
- -d 创建一个守护式容器在后台运行,并返回容器ID;
- 这样创建容器后不会自动登录容器,如果加 -i 参数,创建后就会运行容器。
- -v 表示目录映射, 格式为: -p 宿主机目录:容器目录
注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 - -p 表示端口映射,格式为: -p 宿主机端口:容器端口
5.2.2、交互式容器
说明: 就是创建容器后,马上会启动容器,并进入容器
创建一个交互式容器并取名为 mycentos , ( /bin/bash 是linux中的命令解析器,会进入到容器里面命令行)
docker run -it --name=mycentos centos:7 /bin/bash可以省略 /bin/bash
docker run -it --name=mycentos centos:7
上图显示,已经进入容器中(上面主机名变成了容器实例编号 )
新开一个 shell 窗口,这时我们通过 docker ps 命令查看,发现可以看到启动的容器,状态为 Up 启动状态
docker ps
新开一个 shell 窗口,再创建一个 mycentos1 容器(注意:docker 命令是不能在容器里面使用)
docker run -it --name=mycentos1 centos:7 /bin/bash
再通过 docker ps 命令查看,发现有2个已经启动的容器
总结: 同一个镜像, 可创建运行多个容器 就像一个Java类,可以创建多个对象
5.2.3、创建守护式容器
如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器(后台运行的容器)。
创建(-d)并运行(-i)守护式容器命令如下(容器名称不能重复):
docker run -id --name=mycentos2 centos:7
5.3、退出创建守护式容器
如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器(后台运行的容器)。
创建(-d)并运行(-i)守护式容器命令如下(容器名称不能重复):
docker run -id --name=mycentos2 centos:7
退出并停止当前容器, 注意在容器内部的命令行执行
exit
[root@1c8663090976 /]# exit
exit
[root@localhost ~]#
退出不停止当前容器
按键盘: Ctrl + p + q ,按一次不行的话,则多按几次,一般是连两次即可。
5.4、启动与停止容器
启动已停止的容器的容器
docker start 容器名称|容器id例如: docker start centos
停止正在运行的容器(正常停止)
docker stop 容器名称|容器id例如: docker stop mycentos
强制停止正在运行的容器(一般不用此,除非卡了)
docker kill 容器名称|容器id 例如: docker kill mycentos
启动所有运行过的容器(注意:反单引号
),docker ps -a -q 是查询所有运行过的容器ID
docker start `docker ps -a -q`
停止所有在运行的容器
docker stop `docker ps -a -q`
5.5、登录容器
登录已经启动的在后台运行的容器方式
使用 docker exec 进入容器中打开命令行终端
docker exec -it 容器名称|容器id /bin/bash
例如: docker exec -it mycentos2 /bin/bash
注意:exit 针对通过 docker exec 进入的容器,只退出但不停止容器 ,要停止 用 docker stop mycentos2
注意:交互式容器通过 docker exec 进入容器后,使用 exit 也一样的只退出但不停止容器, 要停止 用 docker stop mycentos
5.6、拷贝宿主机与容器中的文件
如果我们需要将宿主机文件拷贝到容器内可以使用 docker cp 命令,也可以将文件从容器内拷贝到宿主机
5.6.1、将宿主机文件拷贝到容器内
docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目录
例如: docker cp /demo.txt mycentos:/demo.txt
- 在宿主机上创建一个demo.txt文件并写入内容
cd / #切换到根目录/下
echo 123456 > demo.txt #创建并写入内容 demo.txt 文件中
ls #查看是否已创建
cat demo.txt #查看文件内容
- 将 demo.txt文件拷贝进 mycentos 容器中的 /opt 目录下(mycentos要是UP启动状态)
docker cp /demo.txt mycentos:/opt/demo.txt
- 登录 mycentos 容器,查看/opt目录下是否有 demo.txt 文件
docker exec -it mycentos /bin/bashls /opt/cat /opt/demo.txt
5.6.2、把容器内的文件拷贝到宿主机
docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
- 在 mycentos 容器中的 创建文件 test.txt (要登录进容器中)
cd /
echo aaaaa > test.txt
ls
-
需要使用 exit 先退出 docker 容器命令行,回到宿主机
-
从容器拷贝 test.txt 文件到宿主机的 /opt 目录下(在宿主机中操作)
docker cp mycentos:/test.txt /opt/test.txt
注意:文件拷贝 docker cp 命令 均在宿主机中操作
5.7、数据目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,
这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。使用 -v 选项
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
5.7.1、需求
将宿主机的/opt目录与容器内的/opt目录进行映射,当在宿主机 /opt 目录下创建一个文件 test2.txt ,这个 test2.txt 会自动同步到容器映射目录 /opt
5.7.2、实现
- 创建容器并挂载映射目录(使用 -v 宿主机目录:容器目录 )
创建容器时,将 宿主机目录/opt 挂载 容器目录/opt
docker run -id -v /opt:/opt --name=mycentos centos:7
- 在宿主机/opt 目录下创建一个文件 test2.txt ,这个 test2.txt 会自动同步到容器映射目录 /opt 目录下
cd /opt
echo 111111 > test2.txt
- 进入容器的opt目录看一下
docker exec -it mycentos3 /bin/bash
cat /opt/test.txt
- 当你修改宿主机的 test2.txt 文件中的内容,容器中的test2.txt也会同步修改
5.7.3、目录挂载只读(Read-only)权限
实现挂载的目录只有 只读(Read-only)权限,命令如下 : 只需要加个 ro参数
docker run -id -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
实现:
docker run -id -v /dataHost:/dataContainer:ro --name=mycentos4 centos:7注意: dataHost dataContainer 目录如果没有会自动创建
然后登录容器:hehe.txt 文件就只能读,不能更改
docker exec -it mycentos4 /bin/bash
cd /dataContainer
ls
echo aaabbbb >> hehe.txt
5.8、看容器内部细节
查看容器运行内部细节,比如可看容器的IP ,id 等等一些详细信息
docker inspect mycentos
5.9、查看容器IP地址
直接显示IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos
5.10、删除容器
删除指定的容器:
docker rm 容器名称 | 容器ID例如:docker rm mycentos
注意,只能删除停止的容器,没有停止的容器是删除不掉的
删除所有容器(其中运行中的容器无法删除,所以先停再删):
docker rm `docker ps -a -q`
相关文章:

Docker简介与用法
文章目录1、Docker简介1.1、Docker能解决什么问题1.2、什么是虚拟机技术1.2.1、虚拟机的缺点1.3、什么是容器1.3.1、容器与虚拟机比较1.4、分析 Docker 容器架构1.4.1、Docker客户端和服务器1.4.2、Docker 镜像(Image)1.4.3、Docker 容器(Container)1.4.4、Docker 仓库(reposit…...

基于海鸥算法改进的DELM分类-附代码
海鸥算法改进的深度极限学习机DELM的分类 文章目录海鸥算法改进的深度极限学习机DELM的分类1.ELM原理2.深度极限学习机(DELM)原理3.海鸥算法4.海鸥算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考:https://blog.c…...

linux基本功系列之mount命令实战
文章目录前言一. mount命令的介绍二. 语法格式及常用选项三. 参考案例3.1 将iso镜像挂载到/mnt上3.2 把某个分区挂载到/sdb1上3.3 用只读的形式把/dev/sdb2挂载到/sdb2上3.4 设置自动挂载总结前言 大家好,又见面了,我是沐风晓月,本文是专栏【…...

力扣Top100题之两数相加(Java解法)
0 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数…...

【测试】Python手机自动化测试库uiautomator2和weditor的详细使用
1.说明 我们之前在电脑操作手机进行自动化测试,基本上都是通过Appium的,这个工具确实强大,搭配谷歌官方的UiAutomator基本上可以完成各种测试,但缺点也很明显,配置环境太麻烦了,需要jdk、sdk等,…...
《NFL橄榄球》:旧金山49人·橄榄1号位
旧金山四九人(San Francisco 49ers,又译旧金山淘金者) 是美国全国橄榄球联盟球队。成立于1946年,最初作为全美橄榄球联合会(AAFC)的一员参加比赛,后于1950年与克利夫兰布朗一同加入由美国橄榄球联合会合并而成的NFL。现任主教练为…...

spark为什么比hadoop快
网上一堆人根本对计算框架一知半解就出来糊弄人,常见解答有: spark是基于内存计算,所以快。这跟废话似的,mr计算的时候不也是基于内存? mr shuffle落盘。这也是胡扯, spark shuffle不落盘? 实际…...

跨境人都在用的指纹浏览器到底有什么魔力?三分钟带你了解透彻
什么是指纹浏览器?这是东哥近期收到最多的粉丝私信咨询,指纹两个字大家都很熟悉,指纹浏览器就变得陌生起来。之前东哥也跟大家分享过很多次指纹浏览器的用法,鉴于还是很多人不认识这个好用的工具,东哥今天就来详细给大…...

机器学习概述
机器学习是人工智能的核心研究领域之一,其研究动机是为了让计算机系统具有人的学习能力以便实现人工智能。目前被广泛采用的机器学习的定义是“利用经验来改善计算机系统自身的性能”。由于“经验在计算机系统中主要是以数据的形式存在的,因此机器学习需…...

企业网站自动生成系统的设计和实现
技术:Java、JSP等摘要:随着Internet技术的发展,人们的日常生活已经离不开网络。未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。Internet的发展历程以及目前的应用状况和发展趋势&…...

sikuli+eclipse对于安卓app自动化测试的应用
Sikuli是什么? 下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an …...

react源码分析:babel如何解析jsx
同作为MVVM框架,React相比于Vue来讲,上手更需要JavaScript功底深厚一些,本系列将阅读React相关源码,从jsx -> VDom -> RDOM等一些列的过程,将会在本系列中一一讲解 工欲善其事,必先利其器 经过多年的…...

搜广推 WideDeep 与 DeepCrossNetwork (DCN) - 记忆+泛化共存
😄 这节来讲讲Wide&Deep与Deep&CrossNetwork (DCN)。从下图可看出WD非常重要,后面衍生出了一堆WD的变体。本节要讲的WD和DCN结构都非常简单,但其设计思想值得学习。 🚀 wide&deep:2016年,谷歌提出。 🚀 Deep&CrossNetwork (DCN):2017年,谷歌和斯坦…...

项目管理工具dhtmlxGantt甘特图入门教程(十四):导出/导入 Excel到 iCal
这篇文章给大家讲解利用dhtmlxgantt导入/导出Excel到iCal的操作方法。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足应用程序的所有需求,是完善的甘特图图表库 DhtmlxGantt正版试用下载(qun;765665…...

k-means聚类总结
1.概述 聚类算法又叫做‘无监督学习’,其目的是将数据划分成有意义或有用的组(或簇)。 2.KMeans 关键概念:簇与质心 KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的…...
char * 和const char *的区别
一、含义的不同 char* 表示一个指针变量,并且这个变量是可以被改变的。 const char*表示一个限定不会被改变的指针变量。 二、模式的不同 char*是常量指针,地址不可以改变,但是指针的值可变。 const char*是指向常量的常量指针ÿ…...
【剑指offer】JZ3 数组中重复的数字、 JZ4 二维数组中的查找
目录 JZ3 数组中重复的数字 思路: 解题步骤: JZ4 二维数组中的查找 思路 JZ3 数组中重复的数字 描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每…...
数据采集 - 笔记
1 redis GitHub - redis/redis: Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps. Redis 通常被称为数…...

8年测开经验面试28K公司后,吐血整理出高频面试题和答案
#01、如何制定测试计划? ❶参考点 1.是否拥有测试计划的制定经验 2.是否具备合理安排测试的能力 3.是否具备文档输出的能力 ❷面试命中率 80% ❸参考答案 测试计划包括测试目标、测试范围、测试环境的说明、测试类型的说明(功能,安全&am…...
spring读取properties顺序,重复key问题
最近搞个开源工具,涉及到配置问题。 举例 有个应用A工具,打成jar给人用。应用B引用了A的jar A应用里resources/sys.properties文件里有个coreSize1 B引用了A,期望修改coreSize的值,改成2 开始天真以为,B应用里有同…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...