首页 > 其他分享 >Docker 启蒙教程 (1)

Docker 启蒙教程 (1)

时间:2024-06-05 19:00:22浏览次数:16  
标签:容器 教程 可以 sudo 启蒙 镜像 Docker docker

Docker 启蒙教程 (1)

本教程致力于以通俗易懂的方式使读者上手 Docker。

本文使用 CentOS 7 系统演示。

第一章 什么是 Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 就像一个盒子,你可以把你的软件及其需要的一切东西(像是工具、库等)都放进这个盒子里面。

这个盒子就像是一个可以装软件的盒子一样,里面的软件在不同的电脑上都能跑起来,就像你把同样的盒子搬到不同的房间,里面的东西还是一样的,不会受到外界影响。

有了 Docker,你就可以把你的软件「打包」成一个盒子,然后随意搬到其他地方,它都能照常运行,不用担心环境不一样导致的问题。这样就方便了很多,不管是在开发、测试,还是在生产环境中部署软件,都能更加轻松、稳定。

正如他们的口号:「Develop faster. Run anywhere.」

相比虚拟机,Docker 有以下优势:

  1. Docker 容器能在几秒内快速启动和关闭
  2. 对系统资源要求低,一台主机可以运行甚至上千个容器
  3. 高度可移植

Docker 有三个基本的概念:容器(Container)、镜像(Image)、仓库(Repository),本教程将为你介绍这几个概念。

第二章 三大基本概念和 Docker Registry

容器

容器是代码的隔离环境。容器就是上一章我们比作的「盒子」。容器拥有代码运行所需的一切环境,甚至可以是基本操作系统。

镜像

镜像类似于虚拟机中的镜像,是一个特殊的文件系统,提供容器运行时需要的程序、库等文件。不包含动态数据。

Docker Registry

很多时候我们要站在巨人的肩膀上,使用他人提供的服务,如 MySQL,这个时候就需要一个集中存储、分发镜像的系统,我们可以从这个系统中下载需要的服务,这个系统的名字叫 Docker Registry。

可以把 Docker Registry 的作用与 GitHub 的作用类比。

官方的 Docker Hub 就是最常用的 Docker Registry。如果在国内访问速度慢也可以使用阿里云等第三方的镜像服务。

此处提到的阿里云等第三方镜像并非属于三大基本概念的镜像(Image),而是针对国内网络环境提供下载速度优化的镜像(Mirror)。

仓库

仓库是集中存放镜像文件的地方,就像 Docker Registry 是集中存放仓库的地方一样。

Docker Registry 中可以包含多个仓库,就像一个 GitHub 账号可以创建很多仓库一样;一个仓库可以包含许多标签,一个标签对应一个镜像,就像一个 GitHub 仓库可以包含许多分支一样。我们以 MySQL 的 Docker 仓库举例。

MySQL 的 Docker 仓库

如图所示,标签代表了不同的 MySQL 版本,用户可以按需使用。

通过 <仓库名>:<标签> 的格式指定版本,不写标签默认为 latest(最新版本)。

总结一下,Docker Registry 包含了许多仓库,仓库又可以包含许多标签,一个标签对应一个镜像。

第三章 安装 Docker

实践是检验真理的唯一标准,让我们来亲自安装,感受一下。

本文使用 CentOS 7 系统演示。

官方已经给出了安装命令,我们根据官方文档执行即可。

  1. 先执行

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  2. 安装最新版本的 Docker CE

    CE 代表 Community Edition(社区版)

    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. 启动 Docker

    sudo systemctl start docker
    
  4. 通过运行官方的 Hello World 镜像来确定是否安装成功

    sudo docker run hello-world
    

安装成功。

第四章 镜像

前面已经讲到,镜像提供容器运行时需要的程序、库等文件。

让我们使用 docker pull 命令亲自获取一个镜像吧!

手动获取第一个镜像

以获取 MySQL 镜像为例。

docker pull mysql:latest

在这里,我们就用到了 <仓库名>:<标签> 的格式,mysql 为仓库名,latest 为标签。

为什么这么多条信息?!

你可能会好奇:「我只是下载了一个镜像,为什么终端的提示似乎在告诉我,服务器在下载多个文件?」

其实,Docker 有一个重要概念叫「镜像分层」,我们会在后面的教程里了解。

列出镜像

下载完成后,可以使用 docker images 命令列出它们。

移除

如果要移除本地镜像,可以使用 docker rmi 命令移除。

删除镜像之前要使用 docker rm 命令删除所有依赖此镜像的容器。

第五章 容器

新建容器

我们可以使用 docker run 命令新建并启动一个容器,就像我们安装时运行官方 Hello World 一样。

sudo docker run hello-world

运行结束后或通过 exit 命令退出后,容器会自动终止,我们可以使用 docker ps -a 查看所有容器。如果只执行 docker ps,则会显示正在运行的容器。每个容器都会有一个唯一的 ID。

启动停止与一气呵成

如果要启动已经终止的容器,应使用 docker start <id> 命令。

如果要停止一个容器,可以使用 docker stop <id>;如果要停止再启动一气呵成,则使用 docker restart <id> 命令。

很多时候需要让容器在后台以守护态运行(Daemonized),则需要添加 -d 参数。

sudo docker run -d mysql:latest

我要查看输出信息

执行带 -d 参数的命令后,我们无法看到容器输出的消息。此时可以使用 docker logs <id> 命令查看。

容器 ID 也太长了吧!!!

容器的 ID 太长了,我们可以仅输入容器 ID 的前 3 个字母,甚至只输入第一个字母,只要不重复即可,一般不建议只输入一个字母。

也可以在创建容器时添加 --name 参数为容器指定一个名字。

sudo docker run -d --name MyDatabase mysql:latest

这样,操作时就可以使用你指定的名字代替容器 ID 了。

和容器交互

默认不加参数的情况下,你是无法在容器内部执行命令的。所以创建容器时我们要使用 -i-t 参数。

-i 表示以交互模式运行容器,-t 表示为容器分配一个伪终端,你现在只需要记住这两个参数要同时用就可以。加参数的时候写到一起就可以,不用分开。

sudo docker run -itd ubuntu:latest

进入容器内部操作

要进入容器内部操作,使用 docker attach <id> 命令即可,退出则可以按 Ctrl + PCtrl + Q 组合键或使用 exit 命令,或者按 Ctrl + D

移除

使用 docker rm 删除一个处于终止状态的容器。

标签:容器,教程,可以,sudo,启蒙,镜像,Docker,docker
From: https://blog.csdn.net/weixin_46430910/article/details/139479759

相关文章

  • 【教程】使用 Tailchat 搭建团队内部聊天平台,Slack 的下一个替代品!
    前言多人协作,私有聊天一直是团队协作的关键点,现在有很多专注于团队协作的应用和平台,比如飞书、企业微信和Slack等。这期教程将带你手把手的搭建一个在线的团队协作向聊天室,希望对你有所帮助!本期聊天室使用TailChat作为服务端,TailChat是下一代nolM(不仅仅是IM)应用程序,适......
  • 最新版手把手升级GPT-4o、GPT-4 Turbo详细步骤教程!! 【2024年6月】
    01GPT-4介绍ChatGPT3.5自从发布以来,便受到了广泛的关注和火热追求。而作为3.5升级版的GPT4.0,比3.5会更加稳定、没有字数限制、回答更准确以及支持AI绘图等,为用户带来了更多的创意与想象空间。如何免费使用GPT-4o?如何升级GPT4.0Turbo?(内附详细步骤教程)我个人体验来说,日常科......
  • ESP8266 01sWiFi模块保姆级教程 烧录和联网,连接华为云
    前言写在前面。这个esp01s联网真的是折磨人啊,浪费了我三四天的时间,网上各种教程叫天天不灵,叫地地不灵,所以才有了这篇教程,致力于帮助像我一样的小白少踩坑,我可以说是把能踩的坑都塌了一遍。烧录部分首先强烈建议小白玩家不要用网上任何一种接线方式和手动上电的方式(这里真的......
  • 服务器部署-docker-容器版本
    后端部署准备docker环境,拉取所需镜像正式安装docker环境:1)较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。[root@localhost~]#sudoyumremovedocker\docker-clientdocker-client-latestdocker-commondocker-la......
  • wsl安装教程
    转载自:https://blog.csdn.net/m0_51233386/article/details/127961763关于WLS的介绍1.什么是WSL?2双系统的方法比较3WSL1与WSL2比较方法一:传统手动安装1.1windows系统版本查看及更新1.2启用适用于Linux的Windwos子系统1.3启用虚拟机功能1.4重启电脑1.5下载Linux......
  • 【手把手教学】最新ChatTTS语音合成项目使用指南AI变声器chatTTS教程来了!5S夺走你的卧
    像这种充满语气充满感情色彩的人声,再搭配一段自拍图,是由最近大火的AI项目chatTTS生成的,ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小......
  • docker使用Open Policy Agent(OPA)进行访问控制
    目录一.系统环境二.前言三.OpenPolicyAgent简介四.Rego语言简介五.配置基本环境六.docker安装OPA插件6.1安装docker6.2docker安装OPA插件6.3启用OPA七.OPA规则7.1允许docker所有操作7.2禁止docker所有操作7.3禁止创建允许所有系统调用的docker容器7.4根据Authz-User判......
  • network xxx was found but has incorrect label com.docker.compose.network set to
    在执行docker-composedown之后,再执行docker-composeup-d提示已有同名称标签的虚拟网卡  解决1、执行dockernetworkls命令展示所有的虚拟network2、执行dockernetworkrm<networkId>删除已存在的network3、再重新运行docker-composeup-d启动容器  扩......
  • Jupyter Notebook 简易教程
    1.安装JupyterNotebook 1.1安装Python在安装JupyterNotebook之前,你需要确保你的计算机上已经安装了Python。你可以从Python的官方网站(https://www.python.org/downloads/)下载并安装最新版本的Python。1.2安装JupyterNotebook打开命令行(Windows用户可以使......
  • Docker Compose
    目录一、DockerCompose概述1、DockerCompose是什么2、DockerCompose核心概念3、DockerCompose使用步骤4、Docker与DockerCompose文件版本对应关系二、DockerCompose安装与卸载1、二进制包安装1.1、下载DockerComposeV2版本1.2、添加可执行权限1.3、设置软链接1.4......