当前位置: 首页 > news >正文

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中类与对象的关系。镜像体积很小,非常便携,易于分享、存储和更新。

DockerJava
镜像
容器对象

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 227 19:01 builder
    drwx------.  4 root root   92 227 19:01 buildkit
    drwx------.  2 root root    6 227 19:00 containers
    drwx------.  3 root root   22 227 19:00 image
    drwxr-x---.  3 root root   19 227 19:00 network
    drwx------. 14 root root 4096 227 19:14 overlay2
    drwx------.  4 root root   32 227 19:00 plugins
    drwx------.  2 root root    6 227 19:00 runtimes
    drwx------.  2 root root    6 227 19:01 swarm
    drwx------.  2 root root    6 227 19:14 tmp
    drwx------.  2 root root    6 227 19:00 trust
    drwx------.  2 root root   25 227 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

Snipaste_2021-10-15_11-51-33

上图显示,已经进入容器中(上面主机名变成了容器实例编号 )

新开一个 shell 窗口,这时我们通过 docker ps 命令查看,发现可以看到启动的容器,状态为 Up 启动状态

docker ps

Snipaste_2021-10-15_11-53-53

新开一个 shell 窗口,再创建一个 mycentos1 容器(注意:docker 命令是不能在容器里面使用)

docker run -it --name=mycentos1 centos:7 /bin/bash

Snipaste_2021-10-15_11-56-58

再通过 docker ps 命令查看,发现有2个已经启动的容器

Snipaste_2021-10-15_11-58-32

总结: 同一个镜像, 可创建运行多个容器 就像一个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
  1. 在宿主机上创建一个demo.txt文件并写入内容
cd /      #切换到根目录/下
echo  123456 > demo.txt    #创建并写入内容 demo.txt 文件中
ls          #查看是否已创建
cat demo.txt    #查看文件内容
  1. 将 demo.txt文件拷贝进 mycentos 容器中的 /opt 目录下(mycentos要是UP启动状态)
docker cp /demo.txt mycentos:/opt/demo.txt
  1. 登录 mycentos 容器,查看/opt目录下是否有 demo.txt 文件
 docker exec -it mycentos /bin/bashls /opt/cat /opt/demo.txt 

5.6.2、把容器内的文件拷贝到宿主机

docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
  1. 在 mycentos 容器中的 创建文件 test.txt (要登录进容器中)
cd /
echo aaaaa > test.txt
ls
  1. 需要使用 exit 先退出 docker 容器命令行,回到宿主机

  2. 从容器拷贝 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、实现

  1. 创建容器并挂载映射目录(使用 -v 宿主机目录:容器目录 )

创建容器时,将 宿主机目录/opt 挂载 容器目录/opt

docker run -id -v /opt:/opt --name=mycentos centos:7
  1. 在宿主机/opt 目录下创建一个文件 test2.txt ,这个 test2.txt 会自动同步到容器映射目录 /opt 目录下
cd /opt
echo 111111 > test2.txt
  1. 进入容器的opt目录看一下
docker exec -it mycentos3 /bin/bash
cat /opt/test.txt
  1. 当你修改宿主机的 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.深度极限学习机&#xff08;DELM&#xff09;原理3.海鸥算法4.海鸥算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https://blog.c…...

linux基本功系列之mount命令实战

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

力扣Top100题之两数相加(Java解法)

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

【测试】Python手机自动化测试库uiautomator2和weditor的详细使用

1.说明 我们之前在电脑操作手机进行自动化测试&#xff0c;基本上都是通过Appium的&#xff0c;这个工具确实强大&#xff0c;搭配谷歌官方的UiAutomator基本上可以完成各种测试&#xff0c;但缺点也很明显&#xff0c;配置环境太麻烦了&#xff0c;需要jdk、sdk等&#xff0c…...

《NFL橄榄球》:旧金山49人·橄榄1号位

旧金山四九人&#xff08;San Francisco 49ers&#xff0c;又译旧金山淘金者) 是美国全国橄榄球联盟球队。成立于1946年&#xff0c;最初作为全美橄榄球联合会(AAFC)的一员参加比赛&#xff0c;后于1950年与克利夫兰布朗一同加入由美国橄榄球联合会合并而成的NFL。现任主教练为…...

spark为什么比hadoop快

网上一堆人根本对计算框架一知半解就出来糊弄人&#xff0c;常见解答有&#xff1a; spark是基于内存计算&#xff0c;所以快。这跟废话似的&#xff0c;mr计算的时候不也是基于内存&#xff1f; mr shuffle落盘。这也是胡扯&#xff0c; spark shuffle不落盘&#xff1f; 实际…...

跨境人都在用的指纹浏览器到底有什么魔力?三分钟带你了解透彻

什么是指纹浏览器&#xff1f;这是东哥近期收到最多的粉丝私信咨询&#xff0c;指纹两个字大家都很熟悉&#xff0c;指纹浏览器就变得陌生起来。之前东哥也跟大家分享过很多次指纹浏览器的用法&#xff0c;鉴于还是很多人不认识这个好用的工具&#xff0c;东哥今天就来详细给大…...

机器学习概述

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

企业网站自动生成系统的设计和实现

技术&#xff1a;Java、JSP等摘要&#xff1a;随着Internet技术的发展&#xff0c;人们的日常生活已经离不开网络。未来社会人们的生活和工作将越来越依赖于数字技术的发展&#xff0c;越来越数字化、网络化、电子化、虚拟化。Internet的发展历程以及目前的应用状况和发展趋势&…...

sikuli+eclipse对于安卓app自动化测试的应用

Sikuli是什么&#xff1f; 下面是来自于官网的介绍&#xff1a;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框架&#xff0c;React相比于Vue来讲&#xff0c;上手更需要JavaScript功底深厚一些&#xff0c;本系列将阅读React相关源码&#xff0c;从jsx -> VDom -> RDOM等一些列的过程&#xff0c;将会在本系列中一一讲解 工欲善其事&#xff0c;必先利其器 经过多年的…...

搜广推 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图表&#xff0c;可满足应用程序的所有需求&#xff0c;是完善的甘特图图表库 DhtmlxGantt正版试用下载&#xff08;qun&#xff1b;765665…...

k-means聚类总结

1.概述 聚类算法又叫做‘无监督学习’&#xff0c;其目的是将数据划分成有意义或有用的组&#xff08;或簇&#xff09;。 2.KMeans 关键概念&#xff1a;簇与质心 KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇&#xff0c;直观上来看是簇是一组一组聚集在一起的…...

char * 和const char *的区别

一、含义的不同 char* 表示一个指针变量&#xff0c;并且这个变量是可以被改变的。 const char*表示一个限定不会被改变的指针变量。 二、模式的不同 char*是常量指针&#xff0c;地址不可以改变&#xff0c;但是指针的值可变。 const char*是指向常量的常量指针&#xff…...

【剑指offer】JZ3 数组中重复的数字、 JZ4 二维数组中的查找

目录 JZ3 数组中重复的数字 思路&#xff1a; 解题步骤&#xff1a; JZ4 二维数组中的查找 思路 JZ3 数组中重复的数字 描述&#xff1a; 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的&#xff0c;但不知道有几个数字是重复的。也不知道每…...

数据采集 - 笔记

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、如何制定测试计划&#xff1f; ❶参考点 1.是否拥有测试计划的制定经验 2.是否具备合理安排测试的能力 3.是否具备文档输出的能力 ❷面试命中率 80% ❸参考答案 测试计划包括测试目标、测试范围、测试环境的说明、测试类型的说明&#xff08;功能&#xff0c;安全&am…...

spring读取properties顺序,重复key问题

最近搞个开源工具&#xff0c;涉及到配置问题。 举例 有个应用A工具&#xff0c;打成jar给人用。应用B引用了A的jar A应用里resources/sys.properties文件里有个coreSize1 B引用了A&#xff0c;期望修改coreSize的值&#xff0c;改成2 开始天真以为&#xff0c;B应用里有同…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...