织梦网站默认密码忘记,wordpress调试模式,成都网站平台建设,北京活动策划网站简介
Docker是一种容器化的技术#xff0c;可以实现在一台宿主机电脑上运行多个不同的容器#xff0c;每个容器之间都相互独立#xff0c;具有完整的一套文件#xff0c;网络和端口。
可以将其理解为一种虚拟机技术#xff0c;只不过和VMware等虚拟化技术不同#xff0…简介
Docker是一种容器化的技术可以实现在一台宿主机电脑上运行多个不同的容器每个容器之间都相互独立具有完整的一套文件网络和端口。
可以将其理解为一种虚拟机技术只不过和VMware等虚拟化技术不同docker共享宿主机的操作系统只创建应用和应用运行的依赖。这样就大大减少了每个容器的体积。这样容器部署和启动速度更快开销更小也更容易迁移。 工作流程
Docker是一个CS架构的软件客户端通过docker api与服务端进行交流并由服务端完成docker的相关操作。
Docker操作中主要涉及如下几个概念
仓库(registry): 存储docker镜像的远程仓库通常为docker hub镜像(image): 创建容器的模板类似于VM中的虚机模板容器(container): 应用实际运行的地方类似于VM中的一个虚拟机
创建docker容器的步骤如下
从远程仓库拉取镜像利用镜像生成容器
安装Docker Desktop
Docker Desktop中包含了Docker引擎Docker命令行客户端Docker扩展工具Docker Compose等并支持图形显式针对入门学习是一个不错的工具。
首先根据各自的操作系统在Docker官网下载应用安装包。此处以Windows系统为例进行安装。
系统要求 WSL版本1.1.3.0Win10 BIOS支持虚拟化内存4GB64位操作系统 安装过程
1.双击安装包开始安装
2.勾选添加桌面快捷方式 3. 等待程序安装完成 4. 双击图标打开应用统一许可证书 5. 在道客官网注册账户并获取docker加速器 6. 配置Docker desktop的镜像加速器由于默认为docker hub是一个国外网站国内打开较慢 7. 查看docker版本
在cmd中输入docker version显示docker的相关版本信息。
docker version 8. 运行hello-world容器
在cmd中输入docker run hello-world看到“Hello from Docker!”等信息就说明docker已经安装完成。 9. 查看docker desktop的变化
镜像中多了一个hello-world镜像 容器中多了一个使用hello-world镜像的仓库。 镜像
镜像是创建容器的基础有了容器才能启动容器。
获取镜像
更具镜像的获取方式不同有如下几种获取镜像的方式。
1. 拉取镜像
从镜像仓库中拉取镜像是最常见的获取镜像的方式。主要通过docker pull指令完成。 docker pull [选项] 镜像名[:标签] 这里标签不存在时默认为latest标签。标签通常为镜像的版本号。 镜像名称并不是我们随便书写的它应该在仓库中存在。一般情况下为应用的名称例如djangopython等 为了确保镜像名称正确可以通过docker search指令查看仓库中相关的仓库有哪些通常选择官方的镜像。 这样就确定了镜像的名称。
镜像名称确认后可以在docker hub中查看该镜像的标签。 一个简便的方法就是通过如下网址进行查看https://hub.docker.com/v2/repositories/library/镜像名称/tags/ 2. 还原镜像 有时候内部通过tar文件来存储镜像此时通过docker image import 镜像tar文件 镜像名指令完成镜像文件的制作。 此处通过镜像tar文件制作镜像还有另一个指令docker image load -i 镜像文件名指令完成镜像文件的制作。 对比这两种指令产生的镜像发现如下不同
对比项docker importdocker load大小变大不变构建历史丢失保持 查看镜像
1. 查看本地所有镜像
利用docker image ls指令可以查看本地所有的镜像。 2. 查看镜像详细信息
利用docker image inspect 镜像id指令查看某个镜像的详细信息。 3. 查看镜像历史过程
利用docker image history 镜像名可以查看镜像的制作历史即Dockerfile的部分过程。 制作镜像
镜像本质上由Dockerfile制作而来通过查看镜像发现镜像是一个多层结构。通过docker pull获取镜像时经常会发现拉取多个镜像层。 镜像的存储结构如下由多个只读层的镜像层组成并在顶层创建一个读写层来运行容器。上层可以读取和覆盖下层相同的文件。 镜像层数量可能会很多所有镜像层会联合在一起组成一个统一的文件系统。如果不同层中有一个相同路径的文件比如/a上层的/a会覆盖下层的/a。也就是说用户只能访问到上层中的文件/a。在容器层中用户看到的是一个叠加之后的文件系统。
1. 根据Dockerfile制作
Dockerfile可以理解为时创建镜像文件每个步骤的脚本文件。
以hello-world镜像为例它的Dockerfile内容为
FROM scratch
COPY hello /
CMD [/hello]
并将文件名命名为Dockerfile。
这样利用docker image build 指令创建一个镜像。 docker image build -t 镜像名称:标签 路径 2. 根据容器制作镜像 不推荐 这种方式容易出错效率低且可重复性差。 使用者不知道镜像的制作过程无法对镜像进行审计 通过更改容器中一些内容并以这个容器作为运行对象创建一个新的镜像。
利用docker container commit 容器名 镜像名:标签来实现以一个容器为基础创建新的镜像。 分享镜像
1. 通过仓库分享
docker hub是一个公共的docker仓库网站它存储镜像的要求是镜像名称以 用户名/镜像名:标签的方式命名。
当通过镜像仓库来分享镜像时需要在docker hub中创建自己的账户并通过docker login命令登录自己的账号。 然后通过docker image tag指令将目标镜像改为满足推送要求的镜像名称。 最后通过docker image push指令将镜像推送到仓库完成共享。 2. 通过文件分享
当没有仓库可以使用的时候可以将镜像文件存储为tar文件进行存储然后分享给其他人使用。
利用docker image save -o 文件名 镜像名指令将镜像以tar文件存储。
docker image save -o hello-world.tar hello-world
删除镜像 删除镜像的前提是没有任何运用该镜像的容器所以要删除镜像首先需要删除依赖该镜像的所有容器。 通过docker image rm 镜像id指令删除镜像。 通过docker image prune -a指令可以删除所有没有被使用的镜像。
容器
容器就是基于镜像创建的运行应用的地方。通常一个容器对应一个应用和其运行的最少依赖。
创建容器
容器由镜像而来一个镜像可以创建多个容器容器之间的资源是相互独立的。每个容器都有自己的名称空间实现文件网络和端口的隔离。
1. 单纯创建一个容器
通过docker container create 镜像名指令会创建一个匿名容器(容器名称由docker随机命名). 当需要指定容器的一些配置时可以通过添加选项来实现常用的一些选项说明如下
--name 指定容器的名称必须在宿主机中是唯一的-e 为容器设置环境变量-p 为宿主机和容器进行端口映射-v 为容器映射宿主机文件目录--mount 为容器绑定文件目录-h 设定容器主机名--network 为容器绑定网络--ip 为容器指定ip地址
2. 创建并运行一个容器
通过docker container run 镜像名指令会创建并运行一个匿名容器。 docker container run的很多选项和docker container create的是一致的此外再补充几个.
-d 容器在后台运行-t 使用命令行终端-i 与容器交互
删除容器
当存在不再使用的容器时可以将容器删除。
通过在docker container rm 容器id指令可以完成容器删除操作。
当删除正在运行的容器时会产生报错。 正确的操作步骤应该是先暂停容器然后再删除容器。或者通过-f选项将运行中的容器强制删除。
通过docker container prune -a指令可以删除所有暂停的容器。
查看容器
1. 容器列表
通过docker container ls 指令可以查看系统中正在运行的容器列表。通过docker container ls -a指令可以查看系统中所有的容器列表。 2. 查看容器配置信息
通过docker container inspect 容器id指令可以查看对应容器在系统中的设置。 操作容器
容器的状态和操作示意图 1. 启动容器
当容器创建后可以通过docker container start 容器id指令启动容器。 2. 暂停容器
通过docker container stop 容器id指令暂停容器。 3. 进入容器
进入容器表示进入容器内部目前有两种操作方式。
attach方式
通过docker container attach 容器id指令可以直接进入容器启动命令的终端不会启动新的进程。
exec方式
通过docker container exec 容器id指令可以在容器中打开新的终端并且可以启动新的进程。
最佳实践
服务类容器如mysqlnginx等通过-d后台方式启动并以exec -it进入容器。
工具类容器通常给我们提供一个临时的工作环境以run -it方式运行exit退出容器后容器暂停。
4. 退出容器
在容器中输入exit即可退出容器进入宿主机环境。
5. 重启容器
通过docker container restart 容器id指令可以重启容器。