【Docker】安装及相关的命令

目录

[一 Docker简介](#一 Docker简介)

[1.1 是什么](#1.1 是什么)

[1.2 优缺点](#1.2 优缺点)

[1.3 应用场景](#1.3 应用场景)

[1.4 安装](#1.4 安装)

[二 命令](#二 命令)

[2.1 Docker基本命令](#2.1 Docker基本命令)

[2.2 Docker镜像命令](#2.2 Docker镜像命令)

[2.3 Docker容器命令](#2.3 Docker容器命令)


一 Docker简介

1.1 是什么

Docker是一个开源的应用容器引擎,它基于Go语言实现,并利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现应用的"一次封装,到处运行"的目的,实在不理解,可以把它当成一个VM,在VM中又安装了一个VM第二个的这个VM就是Docker

生活列子来熟悉Docker

想象一下,你想要做一顿晚餐,比如意大利面。为了做这顿饭,你需要准备面条、番茄酱、洋葱、大蒜和一些调料。在传统的方式中,你可能需要分别购买这些食材,然后在厨房里手动准备它们。

现在,如果我们将这个过程与Docker进行比较:

  1. Docker主机:这就像你的厨房。它提供了制作意大利面所需的基础设施和环境。
  2. Docker镜像:这就像是食谱或预制的意大利面配料包。它包含了制作意大利面所需的所有食材和步骤。
  3. Docker容器:这就像是按照食谱实际制作出来的意大利面。一旦你有了镜像(食谱),你就可以创建一个容器(开始做饭),然后在这个容器里实际制作意大利面。
  4. Docker仓库:这就像超市的货架,上面摆放着各种各样的食谱或配料包。你可以从仓库中选择你想要的镜像,然后将其下载到你的Docker主机上。

使用该Docker好处之一,就是你可以很容易地分享你的"意大利面"配方(镜像)。例如,你可以将你的镜像上传到Docker仓库,然后你的朋友或家人就可以很容易地下载并在他们自己的Docker主机上制作同样的意大利面

1.2 优缺点

优点

  1. 轻量级和高效 :Docker容器非常轻量级,因为它们共享主机操作系统内核,并且只包含应用程序及其依赖项**。这使得容器启动速度快,资源占用少**,非常适合在资源有限的环境中运行。

  2. 可移植性强Docker容器可以在任何能运行Docker的操作系统上运行,无论是Linux还是Windows。这使得应用程序在不同环境之间的迁移变得非常容易

  3. 版本控制和回滚:Docker使用镜像来创建容器,每个镜像都有一个唯一的标识符。这使得应用程序的版本控制变得简单明了,同时也方便进行回滚操作。

  4. 促进开发运维协同 :Docker简化了应用程序的开发、测试和部署过程,使开发者和运维人员能够更高效地协同工作。

缺点:

  1. 学习曲线陡峭:Docker有一定的技术门槛,需要掌握一定的新概念和技术。对于初学者来说,可能需要一些时间来熟悉Docker的使用。

  2. 安全性问题:虽然Docker提供了多种安全机制来保护容器,但由于容器之间共享主机操作系统内核,因此仍然存在一些安全风险。例如,如果一个容器被攻击并成功突破了隔离层,它可能会影响到其他容器。

  3. 网络和存储功能有限:Docker在网络和存储方面的功能相对有限,可能无法满足一些复杂需求。例如,Docker的默认网络模式可能无法满足一些高级网络拓扑需求。

  4. 部分应用可能不兼容:尽管Docker支持大多数应用程序,但仍有部分应用程序可能无法或难以在Docker容器中运行。这可能需要额外的适配或修改工作。

  5. 大规模部署时的复杂性:当需要在大规模环境中部署大量容器时,Docker的监控、管理和故障排除可能会变得复杂。这可能需要额外的工具和技术支持。

1.3 应用场景

  1. 面向开发人员的Web应用自动化打包和发布:在没有Docker之前,开发、测试、生产环境可能不一致,导致文件配置上的不一致。使用Docker后,容器内的程序端口一致,而容器对外暴露的端口可能不同,但不影响程序的交付和运行,保证了环境一致性,并实现了快速部署。
  2. 面向运维人员的运维成本降低:部署程序时,搭建运行环境和解决环境依赖是非常耗时的。Docker通过镜像机制,将代码和环境直接打包成镜像,上传到容器即可启动,大大节约了部署时间。
  3. 面向企业的PaaS层实现:在一台物理机上可以部署多个轻量级的Docker容器,大大提高了运行效率。
  4. 微服务架构:在微服务架构中,应用程序被拆分成多个小型、独立的服务。Docker可以用来容器化这些服务,使它们可以独立部署和扩展。
  5. 应用迁移和移植:Docker可以帮助开发者轻松地将应用从开发环境迁移到生产环境,甚至在不同云服务提供商之间迁移,因为Docker容器提供了环境一致性。
  6. 隔离应用:Docker容器提供应用级别的隔离,使不同的应用可以在同一台机器上运行,互不干扰。
  7. 整合服务器:通过Docker,可以将多个服务整合到少数几台高性能服务器上,提高资源利用率,简化系统维护。
  8. 云计算和容器云:Docker容器可以在云环境中快速部署,无论是公有云、私有云还是混合云,都可以实现资源的灵活分配和自动化管理。

1.4 安装

#查看内核
uname -r

#更新yum源为最新,时间大致要6分钟
yum update -y

#安装Docker所需要的工具包
yum install -y yum-utils device-mapper-persistent-data lvm2

#设置yum源


yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#下载安装Docker
yum install docker-ce docker-ce-cli containerd.io -y -y

#启动Docker并且设置开机自启动
systemctl start docker
systemctl enable docker

#检测Docker是否安装成功
docker version

执行上方命令安装无误的话,差不多就成功了

进入docker:cd /etc/docker

配置我们的镜像,先进入阿里云官方: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

如果没有账户的话,先注册再登入,再回到docker文件下

输入编辑命令:vim daemon.json

将阿里源进行配置(下图括号里面的)

使用命令进行生效

systemctl daemon-reload
systemctl restart docker

这时候,就算安装好啦!

二 命令

2.1 Docker基本命令

下方是有关于docker的基本命令,可自行操作

systemctl start docker (启动Docker)

systemctl stop docker (停止Docker)

systemctl restart docker (重启Docker)

systemctl enable docker (开机自启动Docker)

docker info (查看Dokcer概要信息)

docker --help (查看Docker帮助文档)

docker version (查看Docker的版本信息)

2.2 Docker镜像命令

下方图拉取(下载)mysql

命令:docker pull mysql

查看当前服务器已下载的:docker images

删除:docker rmi IMAGE ID或名称

强制删除:docker rmi -f IMAGE ID或名称

2.3 Docker容器命令

为了测试,在Linux的Centos7中再安装一个Centos7

命令: docker pull centos:7

这时候下载的centos7为一个容器

我们可以去启动它

创建一个容器并进入该容器: docker run -it --name mycentos02 IMAGE ID

解释:

  1. docker run: 这是Docker命令的基础,用于从镜像启动新容器。

-it: 这是两个标志的组合。

  1. -i--interactive: 保持容器的标准输入(STDIN)开启,即使不连接到容器。

  2. -t--tty: 为容器分配一个伪终端(pseudo-TTY),通常用于交互式会话

  3. --name mycentos02: 这个标志用于给新创建的容器指定一个名称。在这个例子中,容器的名称是mycentos02。如果不指定这个标志,Docker会自动为容器生成一个名称。

  4. IMAGE ID: 这是你想要从中创建容器的Docker镜像的标识符。通常,你会使用docker images命令来查看可用的镜像及其ID,然后选择你想要使用的镜像的ID

综合起来,docker run -it --name mycentos02 IMAGE ID 命令会创建一个名为mycentos02的新容器,该容器基于指定的镜像ID,并且具有交互性和伪终端。一旦容器启动,你就可以通过控制台与容器中的进程进行交互(切换版本),如下图

创建容器但不进入容器:docker run -di --name mycentos03 IMAGE ID

退出不停止容器:Ctrl+p+q

退出并停止容器:exit

查看活的容器:docker ps

查看全部的容器:docker ps -a

强制删除一个运行的容器:docker rm -f IMAGE ID或名称

重启容器:docker restart mycontainer

查看容器日志:cd /var/lib/docker/containers

最后得出,相同的两个Centos7容器不同的文件,存着一种隔离的状态,如下

相关推荐
SelectDB12 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽19 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker