Docker简介与用法

news2024/11/16 11:50:23

文章目录

  • 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/docker
 rm -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  303MB

REPOSITORY:镜像所在仓库的名称
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/bash
 ls /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`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows程序员学习Linux环境内存管理

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Windows程序员如何学习Linux环境内存管理。由于很多程序在Windows环境下开发好后&#xff0c;还要部署到Linux服务器上去&#xff0c;所以作为Windows程序员有必要学习Linux环境的内存…

【计算机三级网络技术】 第三篇 IP地址规划技术

IP地址规划技术 文章目录IP地址规划技术一、IP 地址规划以及划分地址新技术1.IP地址的标准分类&#xff08;第一阶段&#xff09;2.划分子网的三级地址结构(第二阶段)3.构成超网的无类域间路由技术(第三阶段)4.网络地址转换技术(第四阶段)二、IP 地址分类1.A类、B类与C类IP地址…

数据的表示和运算

文章目录数制与编码进制间的转换BCD码定点数与浮点数定点数是什么&#xff1f;浮点数是什么&#xff1f;定点数与浮点数的区别机器数和真值原码、反码、补码、移码基本定义整数的加减法刷题小结最后数制与编码 进制间的转换 二进制、八进制、十进制、十六进制之间的转换不用多…

前端杂学1

1.简单且必须掌握的 1.MVVM是什么 将MVC中的V变为了MVVM&#xff0c;实现了双向绑定。其中VM就是vue的作用&#xff0c;这样页面的动态化可以通过vue来操作&#xff0c;而不是页面直接与后端操作&#xff0c;实现了前后端的分离 2.为什么vue采用异步渲染 &#xff1f; 调…

Kubernetes之服务发现

本文使用wordpressmysql搭建个人博客来讲解服务发现相关知识。 环境准备 wordpress需要连接到mysql才能正常工作&#xff0c;所以需要为mysql的pod创建一个mysql的svc&#xff0c;只要不删除重建svc&#xff0c;其IP不会变。 此时wordpress的pod需要连接mysql的svc的时候&…

HyperGBM用4记组合拳提升AutoML模型泛化能力

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 如何有效提高模型的泛化能力&#xff0c;始终是机器学习领域的重要课题。经过大量的实践证明比较有效的方式包括&#xff1a; 利用Early Stopping防止过拟合通过正则化降低模型的复杂度使用更多的训练数…

第四阶段01-酷鲨商城项目准备

1. 关于csmall-product项目 这是“酷鲨商城”大项目中的“商品管理”项目&#xff0c;是一个后台管理项目&#xff08;给管理员&#xff0c;或运营人员使用的项目&#xff0c;并不是普通用户使用的&#xff09;&#xff0c;并且&#xff0c;只会涉及与发布商品可能相关的功能开…

企业工程项目管理系统平台(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

React(二):jsx事件绑定、条件渲染、列表渲染、jsx的本质、购物车案例

React&#xff08;二&#xff09;一、jsx事件绑定1.this的绑定方式2.jsx中绑定this的三种方式3.事件对象和传参&#xff08;1&#xff09;事件对象怎么传&#xff08;2&#xff09;其他参数怎么传&#xff1f;二、条件渲染1.直接if-else2.三元表达式3.利用逻辑中断4.案例练习5.…

HTML#5表单标签

一. 表单标签介绍表单: 在网页中主要负责数据采集功能,使用<form>标签定义表单表单项: 不同类型的input元素, 下拉列表, 文本域<form> 定义表单<input> 定义表单项,通过typr属性控制输入形式<label> 为表单项定义标注<select> 定义下拉列表<o…

【GO】31.grpc 客户端负载均衡源码分析

这篇文章是记录自己查看客户端grpc负载均衡源码的过程&#xff0c;并没有太详细的讲解&#xff0c;参考价值不大&#xff0c;可以直接跳过&#xff0c;主要给自己看的。一.主要接口&#xff1a;Balancer Resolver1.Balancer定义Resolver定义具体位置为1.grpc源码对解析器(resol…

异步通知实验

目录 一、异步通知简介 阻塞、非阻塞、异步通知区别 信号与信号修改测试 测试 二、驱动编写 1、定义fasync_struct 结构体指针变量 2、操作集添加fasync 3、实现imx6uirq_fasync 函数 4、关闭驱动文件操作 ​编辑 5、定时器处理函数 三、编写APP 1、编写信号的处理…

ElasticSearch 学习笔记总结(二)

文章目录一、ES JavaAPI 环境准备二、ES JavaAPI 索引1. 索引 创建2. 索引 查找3. 索引 删除三、ES JavaAPI 文档1. 文档 创建2. 文档 修改3. 文档 查询4. 文档 删除4. 文档 批量新增 和 批量删除5. 高级查询 索引全量查询6. 高级查询四、ES 集群1. ES集群 概念2. window 集群搭…

阿里P8:做测试10年我的一些经验分享,希望你们少走弯路

我是在2015年毕业的&#xff0c;当时是读的普通本科&#xff0c;不上不下的专业水平&#xff0c;毕业的时候&#xff0c;恰好遇到了金融危机。校园招聘里阴差阳错的巧合&#xff0c;让我走上了软件测试工程师的道路。 入职第一天&#xff0c;来了个高大上的讲师&#xff0c;记…

如何使用码匠连接 PostgreSQL

目录 在码匠中集成 PostgreSQL 在码匠中使用 PostgreSQL 关于码匠 PostgreSQL 是一种特性非常齐全的自由软件的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;它具有许多强大的功能&#xff0c;PostgreSQL 支持大部分的 SQL 标准并且提供了很多其他现…

一些无线通信系统模型的概念

一些无线通信系统模型的概念 扩频通信,指的是系统的带宽WWW远大于其信息传输速率R(bits/s)R(bits/s)R(bits/s), 定义展频带因子BeWRB_e \frac{W}{R}Be​RW​, 易知在扩频通信系统中,BeB_eBe​远大于1. 在频率上产生如此大的冗余度,主要是为了减轻无线通信或卫星通信中经常产生…

关于算法学习和刷题的建议

大家好&#xff0c;我是方圆。最近花时间学了学算法&#xff0c;应该算是我接触Java以来第一次真正的学习它&#xff0c;这篇帖子我会说一些我对算法学习的理解&#xff0c;当然这仅仅是浅浅的入算法的门&#xff0c;如果想深挖或者是有基础的人想提升自己&#xff0c;我觉得这…

【Linux】内核同步机制之等待队列和完成量

文章目录完成量和等待队列1. 等待队列1.1 基本元素1.2 等待队列的创建和初始化1.3 等待队列元素的创建和初始化1.4 添加和移除等待队列元素到等待队列2. 等待事件机制3. 等待队列唤醒4. 总结4.1 等待事件方式4.2 手动休眠方式4.3 借助内核封装函数&#xff0c;进行手动休眠5. 完…

前端开发_快应用开发

目录快应用官网真机调试组件组件嵌套问题tab组件list组件web组件css 样式问题[1]选择器[2]盒模型[3]样式布局-弹性布局[4-1]样式切换 - 类名的动态切换[4-2] 样式切换 - 行内样式动态切换[5]background[6]overflow[7]border-radius[8]盒子阴影[9] 单位系统接口[1] 检查某app是否…

机房运维6大隐患,你中了几个?

随着医院的看诊预约、缴费、打印报告等众多业务转至线上进行&#xff0c;对医院的网络及数据处理能力提出越来越高的要求&#xff0c;那么&#xff0c;机房的稳定、安全运行是医院网络信息系统的关键因素。 机房运维6大隐患 01.电源电力系统不稳定&#xff0c;网络设备运转遭到…