0

0

菜鸟入门Docker[通俗易懂]

爱谁谁

爱谁谁

发布时间:2025-07-13 08:42:32

|

1064人浏览过

|

来源于php中文网

原创

大家好,我们又见面了,我是你们的朋友全栈君。

最近我在学习Docker时,发现网上的很多教程都是过时的,导致我在学习过程中遇到了各种各样的问题。为了方便以后查阅,我现在将学习相关的笔记记录在这里。本文仅为记录学习轨迹,如有侵权,请联系删除。

一、什么是Docker 在学习Docker的过程中,我在网上看到了一篇非常好的博文,经自己总结,Docker将应用程序及其依赖打包在一个文件中,该文件包含了所有打包的应用程序的所有依赖项,如数据库等;直接运行该文件,就可以让程序运行起来,从而无需再考虑环境问题。

(1)虚拟机和Linux容器 提到Docker,就必须了解虚拟机和Linux容器。虚拟机可以在一种操作系统中运行另一种操作系统,例如在Windows系统中运行Linux系统,并且不会对实际的电脑产生影响,不需要时可以删除虚拟机相关的文件,用户可以通过虚拟机还原软件的原始环境,实际上就是解决了配置环境的问题。尽管它有资源占用多、启动慢等缺点。Linux容器是为了解决虚拟机的这些缺点而生的。Linux发展出了一种新的虚拟化技术:Linux容器(Linux Containers,简称LXC)。Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器内部的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相较于虚拟机有很多优势,如启动快、资源占用少等。而Docker就是Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。就像前面说的,Docker将应用程序及其依赖打包在一个文件中。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器中运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。

二、Docker的用途 这里引用网上某博主的部分内容,Docker的主要用途目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成时提供单元测试和构建的环境。

(2)提供弹性的云服务。因为Docker容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以运行多个服务,因此在本机就可以模拟出微服务架构。

三、Docker安装说明 由于Docker需要Linux内核的支持,我在自己的电脑(Windows 10)上安装了VMware虚拟机,在虚拟机中安装了一个Ubuntu系统,在此基础上进行Docker的安装。我参考了菜鸟教程,链接:https://www.php.cn/link/14c2a205d6fb5fb3f80fe6b9b4f5bdec

(1)设置仓库卸载旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

更新apt包索引

$ sudo apt-get update

安装apt依赖包,用于通过HTTPS来获取仓库

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加Docker的官方GPG密钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

$ sudo apt-key fingerprint 0EBFCD88

使用以下指令设置稳定版仓库

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

(2)安装Docker Engine-Community 更新apt包索引

$ sudo apt-get update

安装最新版本的Docker Engine-Community和containerd

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

(3)验证安装成功 输入命令:docker,出现以下命令即安装成功

菜鸟入门Docker[通俗易懂]

四、Docker启动与停止 (1)启动Docker

sudo service docker start

(2)停止Docker

sudo service docker stop

(3)重启Docker

sudo service docker restart

五、Docker配置 (1)将用户加入Docker用户组 Docker需要用户具有sudo权限,为了避免每次命令都输入sudo,建议将用户加入Docker用户组。

添加Docker用户组 sudo groupadd docker 将当前用户加入到Docker用户组 sudo gpasswd -a ${USER} docker 重启Docker服务 sudo service docker restart 退出当前用户重登一下

(2)配置daemon.json 我一开始安装完Docker后,启动Docker服务,直接拉取image文件(注意:不是图片,后面有讲到image文件)后直接报错,显示超时,因为默认网址是国外的,需要配置国内镜像。

进入root权限 su root

菜鸟入门Docker[通俗易懂]

进入Docker文件,查看该文件下只有一个key.json,新建一个daemon.json文件。 查看文件夹命令:ls 新建文件夹命令:vim daemon.json

菜鸟入门Docker[通俗易懂]

编辑docker.json文件,输入以下内容:

{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }

菜鸟入门Docker[通俗易懂]

Lessie AI
Lessie AI

一款定位为「People Search AI Agent」的AI搜索智能体

下载

保存退出,重启Docker服务。

六、image文件 Docker将应用程序及其依赖打包在image文件中。只有通过这个文件,才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。简单理解就是,将程序打包在image文件(也叫image仓库)中,运行image文件,生成一个容器实例,容器中运行程序(已将MySQL之类的依赖都打包在里面了,无需配置数据库等环境)。也就是说,别人的程序打包在image中,自己直接拿过来后无需配置环境就可以直接运行(很神奇)。

# 列出本机的所有image文件。
$ docker image ls
# 删除image文件
$ docker image rm [imageName]

菜鸟入门Docker[通俗易懂]

hello-world是我自己手动下载的image仓库。

七、安装Hello-world实例 命令行直接输入

命令:docker image pull library/hello-world
命令解析:docker image pull:抓取image文件
library:image文件所在的组
hello-world:image文件的名字
注意:后期需要的image文件都可以通过这样的方式拉取,像MySQL数据库、Ubuntu系统等

其中Docker官方提供的image文件,都默认放在library组里面,因此,上面的命令可以写成下面这样。

docker image pull hello-world

运行该实例

命令:docker container run hello-world
命令解析:docker container run:自动抓取image文件
注意:如果发现本地没有指定的image文件,就会从仓库自动抓取

运行结果

菜鸟入门Docker[通俗易懂]

注意:输出这段提示以后,hello world就会停止运行,容器自动终止。对于那些不会自动终止的容器,必须使用docker container kill命令手动终止。

$ docker container kill [containID]

八、容器文件 image文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件:image文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

# 列出本机正在运行的容器
$ docker container ls
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all

上面命令的输出结果之中,包括容器的ID。很多地方都需要提供这个ID,比如上一节终止容器运行的docker container kill命令。

终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。

$ docker container rm [containerID]

运行上面的命令之后,再使用docker container ls --all命令,就会发现被删除的容器文件已经消失了。

九、配置镜像 这是额外补充的,当前面配置了各种加速镜像都没有的情况下,用这个方式。

命令:vi /etc/docker/daemon.json 注意:daemon.json该文件可能不存在,这个时候正常创建即可。

加入如下内容:

{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}

例如

菜鸟入门Docker[通俗易懂]

配置完重启服务即可。 命令1:sudo systemctl daemon-reload 命令2:sudo systemctl restart docker

十一、Docker的另一种安装方式

1. 下载docker-ce的repo
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
2. 安装依赖
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
3. 安装docker-ce
dnf -y  install docker-ce  docker-ce-cli --nobest
4. 启动docker
systemctl start docker
5. 查看docker版本信息
docker -v
6. 设置开机自动启动
systemctl enable --now docker

我用CentOS 8亲测可以,就是有一个安装102M的过程有点久,只有不到100k/s的速率,不过也是可以安装成功的。

至此,Docker基本入门结束,该博文参考了网上大多数Docker教程。

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/556fe7056165f3f6490139ca118e1c49 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

664

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

246

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

514

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

253

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

529

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

599

2023.08.14

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

0

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.5万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号