0
点赞
收藏
分享

微信扫一扫

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



目标:分享更多的知识,充实自己,帮助他人
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的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】_redis

概念

说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。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 Machine

Docker 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

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

3.2 启动

systemctl start docker

4、配置阿里云镜像

4.1 阿里云账号

登录自己的阿里云账号

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

4.2 配置镜像

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

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

使配置的文件生效

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

5、Docker常用命令

5.1 镜像命令

5.1.1列出本地主机上的镜像

docker images

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


参数说明

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

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

5.1.2查询某个镜像

docker search 某个XXX镜像名字

例如: 查询redis

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

5.1.3下载某个镜像

docker pull 某个XXX镜像名字

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

//默认下载最新的redis
docker pull redis

//下载指定的redis版本
docker pull redis:4.0.1

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

5.1.4删除某个下载的镜像

docker rmi 某个XXX镜像名字ID

例如删除 redis镜像

docker rmi redis

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

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的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】_redis_09

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

docker ps

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

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

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

5.2.2 停止容器

docker stop 容器ID或者容器名

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

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

5.2.3 删除停止容器

docker rm 容器ID

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

5.2.4 启动容器

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

docker start 容器ID或者容器名

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

5.3.5 进入已运行的容器

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

docker exec -it 容器ID /bin/bash

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

方式二

docker attach 容器ID

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

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

提示:工作中我们一般使用 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退出,容器不停止

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


测试 ctrl+p+q

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


测试exit

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


举报

相关推荐

0 条评论