做网站收费 优帮云,怎样建立俄罗斯网站,找活做的网站,惠州网站制作网站Docker详细介绍#xff1a;
Docker 是一款开源的应用容器引擎#xff0c;由Docker公司最初开发并在2013年发布。Docker的核心理念源自于操作系统级别的虚拟化技术#xff0c;尤其是Linux上的容器技术#xff08;如LXC#xff09;#xff0c;它为开发人员和系统管理员提供…
Docker详细介绍
Docker 是一款开源的应用容器引擎由Docker公司最初开发并在2013年发布。Docker的核心理念源自于操作系统级别的虚拟化技术尤其是Linux上的容器技术如LXC它为开发人员和系统管理员提供了一种标准化、轻量级的方式来打包、分发和运行应用程序及其依赖环境。
**Docker的三大核心概念**
1. **镜像Images** - Docker镜像是构建容器的基础是一种只读模板。它可以看作是一个包含了运行应用程序所需的所有文件、依赖库和其他配置信息的文件系统层次结构。镜像不包含动态数据且通常是基于先前镜像层叠加创建的具有存储效率高、易于分发的特点。
2. **容器Containers** - Docker容器是从镜像启动的运行实例它是对操作系统资源的隔离和限制的虚拟化单元。容器之间互不影响各自运行在一个独立的环境中共享宿主机内核但拥有自己的文件系统、CPU、内存、网络资源等从而实现了轻量级的虚拟化效果。
3. **仓库Registries** - Docker仓库是用来存储和分发Docker镜像的地方其中最知名的是Docker Hub。用户可以上传自己的镜像或者下载其他人分享的镜像。企业级场景下也会搭建私有仓库以满足安全性和合规性需求。
**Docker的主要优势** - **便携性**开发人员可以在本地创建包含应用及其全部依赖的镜像确保这个镜像能在任何支持Docker的环境中一致地运行。 - **资源高效**相比于传统的虚拟机Docker容器不需要额外的Hypervisor开销因此启动更快、占用资源更少。 - **一致性**确保应用在开发、测试和生产环境间的一致性简化部署流程减少环境差异导致的问题。 - **隔离与安全性**容器之间相互隔离通过控制组cgroups和命名空间等机制确保资源管理和安全隔离。
**Docker生态工具** - docker run用于启动容器的命令可以从镜像创建并运行一个新容器。 - docker-compose用于定义和运行多容器应用程序通过YAML文件docker-compose.yml集中管理多个容器及其依赖关系和服务编排。 - Docker Swarm原生的集群管理工具用于在多台主机上部署容器化的应用作为单一的虚拟系统。
由于Docker带来的便利性和标准化它极大地推动了微服务架构的发展成为现代云计算和持续集成/持续部署CI/CD工作流中的重要组成部分。
Docker使用教程 sudo -i 提升权限 Ubuntu: apt install docker.io Centos: yum install docker.io
ubuntu举例 安装成功后输入 docker --version 查看版本 如果显示信息则代表安装成功 docker run hello-world
这个命令相当于从仓库拉取一个helloworld镜像并运行也是docker经典的测试镜像。 成功。
接下来我们可以随便拉取一个镜像这边选择centos7,大家也可以自行选择。 拉取成功
查看全部镜像 这就是我们刚刚拉取的hello-world和centos7镜像。接下来我们把它做成容器这样才能供我们使用 相信大家看到这可能会疑惑这些-it -d 的意思。以下是解释
-d 或 --detach后台运行容器并打印容器ID。容器将在后台运行而非直接进入容器的命令行。-i 或 --interactive使容器的标准输入保持打开通常与 -t 结合使用允许用户与容器的命令行进行交互。-t 或 --tty为容器分配一个伪TTY为容器分配一个终端适合运行需要终端交互的命令行应用。--name指定容器的名称如果不指定Docker会随机生成一个名称。-p 或 --publish端口映射格式为 主机端口:容器端口将容器内部的服务端口暴露给主机。-v 或 --volume数据卷挂载格式为 主机路径:容器路径用于将主机目录或文件映射到容器内。-e 或 --env设置环境变量格式为 环境变量名值用来向容器传递环境变量。--restart设置容器重启策略如 always、unless-stopped、on-failure[:max-retries] 等决定当容器停止或退出时如何自动重启容器。-w 或 --workdir设置容器内部的工作目录。--network指定容器的网络模式可以是预创建的网络或默认网络。--rm容器退出后自动删除容器文件系统和网络配置。-u 或 --user指定运行容器的用户或UID。image必须参数指定要运行的镜像名称。[command]容器启动时执行的命令和参数如果不指定则使用镜像的默认ENTRYPOINT和CMD。--privilegedtrue它用于赋予容器更多的权限。当设置为 --privilegedtrue或者简写为 -privileged时容器内的进程将获得几乎与宿主机相同的访问权限包括但不限于所有设备的访问容器可以访问宿主机的所有设备比如硬件设备、内核模块等。CAP_SYS_ADMIN能力集容器可以获得完整的Linux能力集允许对系统进行高级操作如修改网络接口、挂载文件系统、改变系统时间等。安全设定绕过容器可以不受seccomp、AppArmor等安全机制的限制。其他内核资源完全控制包括内核命名空间、cgroups等系统的完整控制权。
创建成功 进入容器 接下来我们就可以在容器里尽情释放才华作者才华不够就写一个txt文件好了。。。 接下来就是docker的很方便的一个地方移植性。
退出容器 此时我们要进行的是打包容器如果是平时我们的使用我们可以选择commit容器提交成一个镜像然后把镜像save成tar文件但是注意如果是公用考虑产品以后会在docker上迭代更新的话我们可以采用export,因为如果一直commit save的话最后的容器的大小可能会越来越大这个就涉及到docker的一些底层原因如果有小伙伴愿意深究可以点下方链接。
docker容器commit之后变得非常大的原因及解决办法_docker commit提交后镜像更大了-CSDN博客
转载于CrystalheartLi
commit save 流程
语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -a :提交的镜像作者 -c :使用Dockerfile指令来创建镜像 -m :提交时的说明文字 -p :在commit时将容器暂停。
commit save方法 docker commit -a bbxwg centos7 mycentos7:1.0 save 导出成功
export 方法 大家是否会疑惑这两个镜像有何不同呢如果说是正常使用的话没什么不同
save操作镜像是保存一个完整的镜像包含分层系统统一打包export操作容器是导出容器当前的操作系统不包含分层系统仅包含当前系统中的状态。save保存的是镜像imageexport保存的是容器container。
接下来就是导入环节。
我们可以换个虚拟机如果嫌麻烦的话可以直接在本机操作。
注意我们用save保存的镜像也就是img.tar我们需要用load下载而export的镜像我们需要用import下载否则无法下载成功
docker load -i img.tar
docker import img2.tar
这样他们就会变成两个镜像我们可以把镜像做成容器直接使用。
首先我们删除容器和镜像 完成 这两个都一样其实接下来创建并打开容器 至此流程结束。
希望可以帮助到大家~