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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 这篇文章详细介绍了Docker的基本使用,包括Docker的安装、常用命令、架构概念等,并通过图解和实践帮助读者快速掌握Docker的使用方法。

一个混迹于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 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

在这里插入图片描述

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
在这里插入图片描述

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
相关文章
|
3月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p &lt;宿主机端口&gt;:&lt;容器端口&gt;`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
|
4月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
703 30
|
4月前
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
108 22
|
4月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
141 16
|
4月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
276 5
|
4月前
|
关系型数据库 MySQL Docker
|
5月前
|
NoSQL 应用服务中间件 Redis
Docker 常用命令整理
Docker 常用命令整理
141 1
|
6月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
Docker 容器
Docker 入门常用命令
Docker 入门常用命令
74 1
|
Docker 容器
Docker容入门到精通——Docker常用命令
Docker容入门到精通——Docker常用命令
127 0