虚拟机下如何使用Docker(完整版)

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。

--privileged=true:它用于赋予容器更多的权限。当设置为 --privileged=true(或者简写为 -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保存的是镜像(image),export保存的是容器(container)。

接下来就是导入环节。

我们可以换个虚拟机,如果嫌麻烦的话可以直接在本机操作。

注意:我们用save保存的镜像也就是img.tar我们需要用load下载,而export的镜像我们需要用import下载,否则无法下载成功!!

docker load -i img.tar  

docker import img2.tar

这样他们就会变成两个镜像,我们可以把镜像做成容器,直接使用。

首先我们删除容器和镜像

完成

这两个都一样其实,接下来创建并打开容器

至此,流程结束。

希望可以帮助到大家~

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
安装Docker需要一些步骤,以下是在虚拟机上安装Docker的一般步骤: 1. 更新系统:首先,确保你的虚拟机操作系统是最新的,运行以下命令更新系统软件包: ``` sudo apt update sudo apt upgrade ``` 2. 安装依赖包:安装Docker所需的一些依赖包,运行以下命令: ``` sudo apt install apt-transport-https ca-certificates curl software-properties-common ``` 3. 添加Docker官方GPG密钥:添加Docker官方的GPG密钥,以便验证下载的软件包的完整性。运行以下命令: ``` curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` 4. 添加Docker软件源:添加Docker的软件源,以便可以从官方仓库下载Docker软件。运行以下命令: ``` echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` 5. 更新软件源并安装Docker:运行以下命令更新软件源并安装Docker: ``` sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io ``` 6. 验证Docker安装:确认Docker是否成功安装,运行以下命令: ``` sudo docker run hello-world ``` 如果一切顺利,你将看到一个Hello World的消息,表示Docker已经成功安装在你的虚拟机上。 请注意,这只是一般的安装步骤,具体步骤可能因为操作系统和版本的不同而有所变化。请根据你的操作系统和需求,参考官方文档或其他资源获取更详细的安装指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨小乌龟11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值