如何搭建Docker环境

news2024/9/23 5:23:32

Docker 是一种虚拟化技术,基于 Linux 的容器机制(Linux Containers,简称 LXC),可以把它近似地理解成是一个“轻量级的虚拟机”,只消耗较少的资源就能实现对进程的隔离保护

使用 Docker 可以把应用程序和它相关的各种依赖(如底层库、组件等)“打包”在一起,这就是 Docker 镜像(Docker image)。Docker 镜像可以让应用程序不再顾虑环境的差异,在任意的系统中以容器的形式运行(当然必须要基于 Docker 环境),极大地增强了应用部署的灵活性和适应性

宿主机环境

Ubuntu 18.04 x86_64

安装Docker环境

推荐官方的安装方式

sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

因为 Docker 是国外网站,直接从官网安装速度可能比较慢

所以还可以选择国内的镜像网站来加快速度,像这里就使用 “–mirror” 选项指定了“阿里云”

操作 Docker 必须要有 sudo 权限,安装完之后,检查是否安装成功

sudo docker version

在这里插入图片描述

获取Docker镜像

用的是 “docker pull” 命令

sudo docker pull ubuntu:18.04

从 docker 仓库拉取到一个精简版的 Ubuntu 18.04 镜像

可以用 “docker images” 来查看结果,列出目前宿主机本地的所有镜像

sudo docker images

启动Docker容器

可以用 “docker run” 命令

sudo docker run -it --rm ubuntu:18.04

“-it” 参数表示开启一个交互式的 Shell 终端,默认使用的是 bash

“–rm” 参数表示容器是“用完即扔”,不保存容器实例,一旦退出 Shell 就会自动删除容器(但不会删除镜像),免去了管理容器的麻烦。否则退出容器后,使用 “sudo docker ps -a” 命令还是可以看到一个已退出的容器被列出来

还有其它一些参数

“-v” 表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

“-p" 指定对外的网络端口

“docker run” 之后,就会像虚拟机一样进入容器的运行环境,身份也自动变成了 root 用户

退出容器,使用 “exit” 命令

在Docker容器里做实验

这里根据自己的实际情况,尽情做实验吧

有一点要注意的是:

在容器里生成的文件,在容器关闭后就会消失,所以还要用 “docker cp” 命令及时从容器里拷出来(指定容器的 ID,用 “docker ps -a” 查看)

打开另一个终端查看

sudo docker ps -a

接着拷贝容器里的文件到宿主机,例如

sudo docker cp 732597f4db9b:/hello.txt ./

删除容器

对于已经退出了的容器,如果用 “sudo docker ps -a” 还能看到容器 ID 的话

说明之前运行容器时没有加 “–rm” 参数,此时可以这样删除容器,带上容器 ID

sudo docker rm aa35aeefa2c9

删除镜像

删除完容器之后,还可以删除镜像(”容器“是”镜像“运行时的状态)

使用 “docker rmi” 删除镜像,带上镜像 ID

sudo docker rmi a8780b506fa4

Docker中的网络

Docker 的网络功能相对简单,没有过多复杂的配置,Docker 默认使用 birdge 桥接方式与容器通信。

启动 Docker 后,宿主机上会产生 docker0 这样一个虚拟网络接口,docker0 不是一个普通的网络接口, 它是一个虚拟的以太网桥,可以为绑定到 docker0 上面的网络接口自动转发数据包,这样可以使容器与宿主机之间相互通信。

每次 Docker 创建一个容器,会产生一个虚拟接口,在宿主机上执行 ifconfig,会发现多了一个类似 vethxxxxxxx 这样的网络接口,它会绑定到 docker0 上,由于所有容器都绑定到 docker0 上,所以容器之间也就可以通信。

在这里插入图片描述

小结

今天介绍了 Docker 实验环境的搭建,再小结一下要点

Docker 是一种非常流行的虚拟化技术,可以近似地把它理解成是一个“轻量级的虚拟机”

可以用 “docker pull” 命令从 Docker Hub 上获取相应的 Docker 镜像文件

可以用 “docker run” 命令从镜像启动一个容器,里面是完整的 XXX 环境

参考

https://time.geekbang.org/column/article/283892

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MarchineCubes实现思路总结

MarchineCubes定义 是一种基于体素构建三维模型的方式&#xff0c;有些类似《我的世界》中的堆方块&#xff0c;但实际上&#xff0c;建模是以方块之间的交点为中心点&#xff0c;每个cube表示八个象限的相交模型 实现思路 在三维空间中划分网格&#xff0c;每个网格是一个c…

[附源码]JAVA毕业设计体育竞赛成绩管理系统(系统+LW)

[附源码]JAVA毕业设计体育竞赛成绩管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

Java基础之《netty(9)—netty和线程模型概述》

一、netty概述 1、NIO的类库和API繁杂&#xff0c;使用麻烦&#xff1b;需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 2、需要具备其他的额外技能&#xff0c;要熟悉Java多线程编程&#xff0c;因为NIO编程涉及到Reactor模式&#xff0c;你必须…

Java --- Spring6之Set方法注入

目录 一、注入外部Bean与内部Bean 二、简单类型注入 三、级联属性赋值 四、注入数组 五、List与Set注入 六、Map和Properties注入 一、注入外部Bean与内部Bean public class OrderDao {private static final Logger logger LoggerFactory.getLogger(UserDao.class);public…

led台灯哪个牌子效果最好?2022最新国产led灯品牌排行

目前台灯的发展非常迅速&#xff0c;已经到了全面led灯的时代&#xff0c;传统的卤素灯已经近乎完全淘汰&#xff0c;这不仅仅是跟技术的发展有关&#xff0c;也跟led灯本身的优势有关&#xff0c;各方面很适合做成护眼灯。 护眼灯为什么都是led灯&#xff1f; 护眼台灯使用le…

外卖配送系统搭建,骑手实时更新,路线规划更科学

在如今快节奏的现代生活&#xff0c;人们基本离不开外卖&#xff0c;这也催生了不少外卖配送系统的诞生&#xff0c;那你知道外卖配送系统搭建吗&#xff1f;如果想要一款外卖系统&#xff0c;如何着手呢&#xff1f; 要想开发一款成功的外卖配送系统&#xff0c;要先进行市场…

论文笔记|DeepWalk

简介 DeepWalk是由Bryan Perozzi&#xff0c;Rami Al-Rfou和Steven Skiena在2014年提出的&#xff0c;它是一种基于图的无监督特征学习方法&#xff0c;它有趣的点是将文本处理任务中词向量的处理思想迁移到了图特征学习上&#xff0c;就像处理句子得到word embedding一样&…

深入linux内核架构--进程线程

简介 进程和线程这两个词&#xff0c;每个程序员都十分熟悉&#xff0c;但是想要很清晰的描述出来却有一种不知道从何说起的感觉。所以今天结合一个具体的例子来描述一下进程与线程的相关概念&#xff1a;在terminal上敲出a.out这个自己编译出来可执行程序路径后&#xff0c;这…

【预测模型】基于随机蛙跳算法 SFLA优化神经网络实现数据回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Kafka 3.3.1 Kraft 多端口协议搭建

Kafka 3.3.1 Kraft 多端口协议搭建 序 Kafka 3.3.1 已经出来挺久了&#xff0c;很多公司还停留在 1.X/2.X 甚至 0.8 版本的 kafka&#xff0c;不是说不能用&#xff0c;但是用起来真的糟糕&#xff0c;况且现在 Kraft 已经正式推出了&#xff0c;早就该更新了。 本篇文章从实…

276 t230 二叉搜索树第k小的元素

题解 思路:定义一个全局变量,初值赋予k.中序遍历,每次访问一个,变量–,当该变量为0时,就把val值赋予另一个全局变量返回. class Solution {int resKthSmallest0;int countKthSmallest;// 276 t230 二叉搜索树第k小的元素public int kthSmallest(TreeNode root, int k) {count…

大数据人工智能实验室-大数据培训方案

随着计算机和信息技术的迅猛发展和普及应用&#xff0c;行业应用系统的规模迅速扩大&#xff0c;行业应用所产生的数据呈爆炸性增长。企业需要将隐藏在大批杂乱无章的数据中进行信息的集中、萃取和提炼&#xff0c;找出所研究对象的内在规律&#xff0c;从而对决策提供帮助&…

预训练模型-代码补全(二):Copilot(GitHub)

​ GitHub Copilot是一个为开发者提供的突破性的AI编程辅助工具&#xff0c;但这才是开始。 昨天&#xff0c;Copilot团队推出了一个名为GitHub Copilot Labs的VS Code配套扩展。它独立于&#xff08;并依赖于&#xff09;GitHub Copilot扩展。它可以用来解释代码和翻译代码。…

【元胞自动机】格子波尔兹曼模型研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

【JNA】java springboot 动态读取动态库

【JNA】java springboot 动态读取动态库创建名为dynamic-lib-load.xml的文件资源目录结构如下工具类LibraryLoadDynamicParseUtil工具类调用我们在使用第三方动态库 时长出现动态库无法读取jar包内的动态库文件&#xff0c;以下代码希望对大家有帮助 废话不多说&#xff0c;上代…

【王道计算机网络笔记】数据链路层-局域网广域网

文章目录局域网局域网拓扑结构局域网传输介质局域网介质访问控制方法局域网的分类以太网以太网提供无连接、不可靠的服务以太网传输介质与拓扑结构的发展10BASE-T以太网适配器与MAC地址以太网的MAC帧高速以太网IEEE802标准MAC子层和LLC子层IEEE802.11有固定基础设施无线局域网无…

嵌入式:ARM体系结构详解

文章目录指令集与指令集架构主要计算机指令集架构PC及服务器领域嵌入式领域新生代ARM体系结构的演变ARM发展的历程指令集与指令集架构 指令&#xff1a;就是指挥计算机工作的命令&#xff0c;程序就是一系列按一定顺序排列的指令&#xff0c;计算机就是通过执行程序中的指令来…

11. softmax回归的简洁实现

通过深度学习框架的高级API也能更方便地实现softmax回归模型。 继续使用Fashion-MNIST数据集&#xff0c;并保持批量大小为256。 import torch from torch import nn from d2l import torch as d2lbatch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch…

在IDEA中配置Maven

文章目录Maven 简介Maven 下载与安装修改Maven配置文件Maven文件目录的含义配置IDEA的MavenMaven 简介 Maven 项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外&#x…

数据库审核工具SQLE接口调用

点击上方蓝字关注我接上文数据库审核接口SQLE的探索使用&#xff0c;本次自定义接口进行调用&#xff0c;实现需求。1、创建自定义审核接口因直接调用SQLE的审核接口&#xff0c;会出现token过期&#xff0c;且审核及结果查询接口是分开的&#xff0c;因此&#xff0c;出于以上…