大家好,我们又见面了,我是你们的朋友全栈君。
最近我在学习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[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736087778.jpg)
四、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[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736248755.jpg)
进入Docker文件,查看该文件下只有一个key.json,新建一个daemon.json文件。
查看文件夹命令:ls
新建文件夹命令:vim daemon.json
![菜鸟入门Docker[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736234921.jpg)
编辑docker.json文件,输入以下内容:
{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }![菜鸟入门Docker[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736317808.jpg)
保存退出,重启Docker服务。
六、image文件 Docker将应用程序及其依赖打包在image文件中。只有通过这个文件,才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。简单理解就是,将程序打包在image文件(也叫image仓库)中,运行image文件,生成一个容器实例,容器中运行程序(已将MySQL之类的依赖都打包在里面了,无需配置数据库等环境)。也就是说,别人的程序打包在image中,自己直接拿过来后无需配置环境就可以直接运行(很神奇)。
# 列出本机的所有image文件。 $ docker image ls # 删除image文件 $ docker image rm [imageName]
![菜鸟入门Docker[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736361543.jpg)
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[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736482314.jpg)
注意:输出这段提示以后,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[通俗易懂]](https://img.php.cn/upload/article/001/503/042/175236736581157.jpg)
配置完重启服务即可。
命令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
以上就是菜鸟入门Docker[通俗易懂]的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号