Ubuntu环境下Docker的安装与简单实践

概念

Docker是容器技术的标准化实现,核心是容器,它是一种特殊的进程,运行在独立的运行环境中,拥有自己的文件系统和网络栈。与传统的虚拟机相比,容器不需要额外的操作系统开销,因此可以更快地启动和更高效地利用资源。Docker镜像是构建容器的基础元素,它是一个只读模板,包含了运行应用程序所需的所有内容:code、运行时环境、库、环境变量和配置文件。Docker提供了简单易用的命令行工具,方便用户创建、运行和管理容器。

与虚拟机的对比

图2:与虚拟机特性对比

图3:与虚拟机资源对比

如图3所示,在资源方面,容器包括应用程序及其所有依赖项,但是他们与其他容器共享OS内核,在主机操作系统上的用户控件作为独立进程运行;虚拟机包括应用程序、必需的库或二进制文件以及完整的来宾操作系统,与容器化相比,完全虚拟化需要更多资源。

核心组件与架构

客户端(Client):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。

镜像(Image):只读模板,包含应用代码、依赖库和配置文件,通过分层存储(Union File System)实现高效复用。例如,Python 应用镜像可基于官方 Python 基础镜像构建,减少重复下载。

容器(Container):镜像的运行实例,通过 Namespace 和 Cgroups 实现隔离。容器可随时创建、停止、删除,保证环境一致性。

Registry:镜像仓库,分公有(Docker Hub、Quay.io)和私有(Harbor),支持版本管理和团队协作。

架构图如图4所示。

图4:Docker架构图

1)Docker 镜像(Image)

Docker 镜像可以被认为是 Docker 容器的模板。Docker 镜像是用于创建 Docker 容器的基础。简单来说,Docker 镜像就是一个只读的模板,用来创建 Docker 容器,一个镜像可以创建多个容器。

镜像包含了运行容器所需的所有内容,包括代码、运行时、库、环境变量和配置文件等。Docker 镜像是由文件系统叠加而成,每一层都代表 Dockerfile 中的一条指令,层与层之间是互相依赖的。

2)Docker 容器(Container)

Docker 容器是 Docker 镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。简单来说,容器就是用镜像创建的运行实例。它可以被启动、开始、停止、移动和删除。每个容器之间是相互隔离的、保护的,每个容器都有自己的文件系统,每个容器之间运行的进程都是相互隔离的。

容器的定义和镜像几乎一样,也是一系列的层的集合,不同的是容器的最上面那一层是可读可写的,而镜像的最上层是只读的。

3)Docker 仓库(Repository)

Docker 仓库是用来保存镜像的地方。Docker 仓库可以被认为是代码控制中的代码仓库一样。Docker 用户可以在仓库中创建一个账户,存储和分享自己的镜像。也可以从 Docker 仓库中下载别人分享的镜像。

Docker 仓库分为公开和私有两种形式。公开的 Docker 仓库是 Docker 公司提供的,可以被所有用户使用。DockerHub 就是最知名的公开 Docker 仓库。私有的 Docker 仓库可以在本地部署,只能被内部用户使用。

总的来说,Docker 的工作流程是,首先从 Docker 仓库中获取 Docker 镜像,然后用这个镜像创建 Docker 容器,最后对容器进行操作(启动、停止等)。

实践

1.Docker的安装

安装参考:最详细的ubuntu 安装 docker教程-腾讯云开发者社区-腾讯云

ubuntu下自带了docker的库,不需要添加新的源。但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的。

apt-get remove docker docker-engine docker.io containerd runc

1)更新软件包

在终端中执行以下命令来更新Ubuntu软件包列表和已安装软件的版本:

sudo apt updatesudo apt upgrade

2)安装docker依赖

Docker在Ubuntu上依赖一些软件包。执行以下命令来安装这些依赖:

apt-get install ca-certificates curl gnupg lsb-release

3)添加Docker官方GPG密钥

执行以下命令来添加Docker官方的GPG密钥:

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4)添加Docker软件源

执行以下命令来添加Docker的软件源:sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

5)安装docker

执行以下命令来安装Docker:apt-get install docker-ce docker-ce-cli containerd.io

6)配置用户组(可选)

默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。命令如下:sudo usermod -aG docker $USER

注:重新登录才能使更改生效。

7)运行docker

我们可以通过启动docker来验证我们是否成功安装:systemctl start docker

安装工具:apt-get -y install apt-transport-https ca-certificates curl software-properties-common

重启docker:service docker restart

验证是否成功:sudo docker run hello-world

因为之前没有拉取过hello-world,所以运行命令后会出现本地没有该镜像,并且会自动拉取的操作。

这里在拉取时若是一直显示超时,通过配置加速地址成功运行Docker:

参考博客:​​​​​从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼_docker拉取镜像超时-CSDN博客

上面拉取了hello-world的镜像,现在可以通过命令sudo docker images来查看镜像

出现上述情况,表示成功在Ubuntu系统上安装了docker。

2.Docker容器

使用docker run命令管理容器的运行

docker ps命令列出系统上的容器。

3. Dockerfile

Docker允许创建自己的Docker镜像。Dockerfile是一个用于创建Docker镜像的配置文件,文本格式,里面包含了创建镜像的指令。Docker通过读取Dockerfile中的指令,自动构建镜像。

1. 创建一个名为“Dockerfile”的文件

docker build命令用于从Dockerfile构建镜像。

docker build -t myimg:0.1 .在本目录创建名字为myimg,Tag为0.1的镜像。

查看定制的镜像:docker images

运行定制的镜像:docker run myimg:0.1

4.JAVA案例

Docker可以执行任何应用程序。

下面将创建一个Java应用程序,并使用Docker运行它。

1. 创建项目目录

把这个项目的相关文件,集中放到一个目录docker-java:

2. 创建Java文件

在docker-java目录下,创建一个Java文件:openlab.java

3. 创建Dockerfile

创建Java文件之后,创建一个Dockerfile,其中包含了Docker的指令。在java目录下创建Dockerfile,文件名必须是Dockerfile。

4. 构建 Docker 镜像

切换到java目录,运行docker build -t zs-java .命令,构建Docker镜像。Docker镜像可以任意取名,此处命名为zs-java。

构建镜像失败—这个错误由于 Docker 无法从官方镜像源拉取java:8基础镜像导致的。具体来说,错误代码522表示与镜像源的连接超时,通常是网络问题或镜像源不可用造成的。

# 修改Dockerfile文件第一行为:FROM openjdk:8-jdk-alpine  # 轻量级Alpine版本,

5. 查看创建好的镜像:docker images

6.运行镜像:docker run zs-java

 成功运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值