一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】

news/2024/10/27 22:20:16/

一个混迹于Github、Stack Overflow、开源中国、CSDN、博客园、稀土掘金、51CTO等 的野生程序员。
目标:分享更多的知识,充实自己,帮助他人
GitHub公共仓库:https://github.com/zhengyuzh
以github为主:
1、分享前端+后端基础知识
2、前后端框架知识+框架使用分析
3、热门前端+后端面试题(实时更新)
4、开源项目(主要包含大学课程设计)

为了方便查看请使用侧边栏的形式阅读,文章目录在侧边栏

三连哦

1、Docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

docker能干嘛

一次构建、随处运行

  • 更快速的应用交付和部署;
  • 更便捷的升级和扩缩容;
  • 更简单的系统运维;更高效的计算资源利用

2、Docker架构

Docker 包括三个基本概念:

  • 镜像(image):Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器
  • 容器(container): Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。 它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
  • 仓库(repository):仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等

在这里插入图片描述

概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container)容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker RegistryDocker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

提示:

需要正确的理解仓储/镜像/容器这几个概念: Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。 * image 文件生成的容器实例,本身也是一个文件,称为镜像文件。 * 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器 * 至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。

3、Docker安装

3.1 安装

Docker 支持以下的 64 位 CentOS 版本:
CentOS 7
CentOS 8
更高版本…

以安装centos7为例

使用官方安装脚本自动安装,安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

查看安装的docker

docker version

在这里插入图片描述

3.2 启动

systemctl start docker

4、配置阿里云镜像

4.1 阿里云账号

登录自己的阿里云账号

在这里插入图片描述

4.2 配置镜像

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。如果没有该文件,创建。使用 touch daemon.json创建。

在这里插入图片描述

使配置的文件生效

//重新加载
sudo systemctl daemon-reload
sudo systemctl restart docker

5、Docker常用命令

5.1 镜像命令

5.1.1列出本地主机上的镜像

docker images

在这里插入图片描述
参数说明

  • REPOSITORY:表示镜像的仓库源;
  • TAG:镜像的标签;
  • IMAGE ID:镜像ID;
  • CREATED:镜像创建时间;
  • SIZE:镜像大小;

提示: 同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像


5.1.2查询某个镜像

docker search 某个XXX镜像名字

例如: 查询redis

在这里插入图片描述


5.1.3下载某个镜像

docker pull 某个XXX镜像名字

例如下载redis、默认下载最新版本

//默认下载最新的redis
docker pull redis//下载指定的redis版本
docker pull redis:4.0.1

在这里插入图片描述


5.1.4删除某个下载的镜像

docker rmi 某个XXX镜像名字ID

例如删除 redis镜像

docker rmi redis

在这里插入图片描述

5.2 容器命令

5.2.1 新建并且启动容器

新建并且启动一个容器、前提是由对应的镜像。一个镜像可以创建多个容器。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(常用):有些是一个减号,有些是两个减号 --name=“容器新名字”: 为容器指定一个名称;-d: 后台运行容器,并返回容器ID,也即启动守护式容器;-i:以交互模式运行容器,通常与 -t 同时使用;-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;-P: 随机端口映射;-p: 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort

例如以centos镜像创建一个centostest005的容器,在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

docker run -itd --name centostest005 centos /bin/bash

在这里插入图片描述

列出当前所有正在运行的容器

docker ps

在这里插入图片描述

在以centos镜像创建一个centostest006 容器,同时查看运行的容器

在这里插入图片描述

5.2.2 停止容器

docker stop 容器ID或者容器名

这里的容器ID可以通过docker ps 查看

在这里插入图片描述

5.2.3 删除停止容器

docker rm 容器ID

在这里插入图片描述

5.2.4 启动容器

前提是已经根据镜像创建过容器,只不过创建的容器暂时未启动

docker start 容器ID或者容器名

在这里插入图片描述

5.3.5 进入已运行的容器

方式一:
exec 是在容器中打开新的终端,并且可以启动新的进程,因为是新终端,用exit退出,不会导致容器的停止。

docker exec -it 容器ID /bin/bash

在这里插入图片描述

方式二

 docker attach 容器ID

attach 直接进入容器启动命令的终端,不会启动新的进程。如果进入前台交互式启动容器,,用exit退出,会导致容器的停止用ctrl+p+q,不会导致容器停止。如果进入后台守护式启动容器,不仅无法进行交互,并且ctrl+c会导致守护式进程停止。

在这里插入图片描述

提示:工作中我们一般使用 docker run -d image:tag /bin/bash启动容器,再通过docker exec -it 容器ID /bin/bash,最为安全可靠。

5.2.6 退出容器的方法

  1. exit:run进去容器,exit退出,容器停止

  2. ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止

在这里插入图片描述
测试 ctrl+p+q

在这里插入图片描述
测试exit
在这里插入图片描述


http://www.ppmy.cn/news/21716.html

相关文章

【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成输入框修改数据

前言 这是最近遇到的功能&#xff0c;经常会需要一个表格可以编辑数据 类似于excel那种点击一下单元格就可以编辑数据&#xff0c;修改后鼠标移动出去 光标消失就会保存数据给后台 这里记录一下实现方法&#xff0c;其实也比较简单 就是通过角标来判断显示隐藏的 效果图 代码…

Redis基础篇:Redis常见命令与数据结构

文章整理自B站黑马视频课程第一章&#xff1a;Redis数据结构介绍一&#xff1a;五种常见基本类型二&#xff1a;三种不常见类型第二章&#xff1a;数据类型的使用一&#xff1a;Redis通用命令二&#xff1a;String类型1&#xff1a;String常见命令2&#xff1a;String常见命令实…

HTML5+CSS3(三)-全面详解(学习总结---从入门到深化)

目录 Form表单 表单元素 学习效果反馈 表单元素一 文本框 密码框 单选按钮 学习效果反馈 表单元素二 复选框 文件 提交按钮 重置按钮 学习效果反馈 表单元素三 下拉列表 多行文本框 label 学习效果反馈 HTML5新增type类型一 url search tel color 学习效果反馈 HTML5新增…

让Apache Beam在GCP Cloud Dataflow上跑起来

简介 在文章《Apache Beam入门及Java SDK开发初体验》中大概讲了Apapche Beam的简单概念和本地运行&#xff0c;本文将讲解如何把代码运行在GCP Cloud Dataflow上。 本地运行 通过maven命令来创建项目&#xff1a; mvn archetype:generate \-DarchetypeGroupIdorg.apache.b…

微信小程序023安全科普之家在线考试错题集

开发语言&#xff1a;Java 小程序前端框架&#xff1a;uniapp 小程序运行软件&#xff1a;微信开发者 后端技术:Ssm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 本系统设计的是一个“科普之家”知识在线考试小程序的网站&#xff0c;此网站使用户实…

对于电脑命令你了解多少?电脑命令大全

Windows R 然后键入下面的各种命令 osk------------打开屏幕键盘 open screen keyboard notepad--------打开记事本 notepad(便条簿) mspaint--------画图板 ms>Microsoft paint(绘画) explorer-------文件资源管理器 ( 快捷键windowE ) write----------写字板 calc-------…

Ubuntu18.04 gRPC编译安装

一、CMake版本检查 grpc编译cmake要求最低版本为3.15。首先&#xff0c;cmake -version 查看当前cmake版本&#xff0c;如果低于3.15&#xff0c;按照以下步骤进行安装。 1.1 卸载已经安装的旧版的CMake sudo apt-get autoremove cmake 1.2 下载最新版本CMake CMake下载地…

VS2017编译gsf/surf/mbio —E0020 未定义标识符 “F_OK“

1、编译gsf报了一个错误&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0020 未定义标识符 "F_OK" gsf d:\OceanMultiBeamProc\OceanMultiBeamProc\gsf\gsf\gsf_indx.c 286 C语言中access/_access函数的使…