一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 1、Docker的基本概念2、常用的Docker命令3、虚拟机安装Docker

一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等

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数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
监控 Docker 容器
Docker 启动命令里 --cgroupns host 是什么作用?
【8月更文挑战第19天】Docker 启动命令里 --cgroupns host 是什么作用?
105 1
|
9天前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
1月前
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
63 14
|
1月前
|
存储 Docker 容器
docker save命令和load命令
docker save命令和load命令
|
8天前
|
Ubuntu Shell Docker
docker使用什么命令让时间恢复正确啊
docker使用什么命令让时间恢复正确啊
|
8天前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
2月前
|
Docker 容器
Docker Kill/Pause/Unpause命令详细使用指南
总之,`docker kill`、`docker pause`和 `docker unpause`命令是对容器执行快速状态控制操作的有力工具。使用这些命令可以帮助您更好地管理容器,并在需要时快速响应异常情况。在操作过程中,应当谨慎使用 `docker kill`,因为它将导致容器立即停止,有可能导致数据丢失或文件系统损坏。在可能的情况下,先尝试使用 `docker stop`命令以正常方式停止容器。
30 2
|
2月前
|
负载均衡 调度 Docker
|
2月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
2月前
|
Ubuntu NoSQL Linux
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
这篇文章详细介绍了Docker的基本使用,包括Docker的安装、常用命令、架构概念等,并通过图解和实践帮助读者快速掌握Docker的使用方法。
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
下一篇
无影云桌面