Docker-03-HelloWorld

简介: Docker-03-HelloWorld

我相信你肯定知道 helloworld,其在所有编程语言中都是最经典的入门示例。当然 Docker 也不例外。


启动 helloworld 容器


启动容器使用 docker run 命令,具体用法 docker run --help 可以查看。


Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...
复制代码


启动 hello-world


网络异常,图片无法展示
|


分析


首先,执行 docker run hello-world就可以启动 hell-world 容器,但是因为我们本地没有 hello-world 的镜像,所以 docker 自动从远端仓库进行搜索下载了 hello-world 镜像。


网络异常,图片无法展示
|


查看拉取下来的 hello-world 镜像


root@phyger-VirtualBox:/home/phyger# docker images | grep hello
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
root@phyger-VirtualBox:/home/phyger#
复制代码


我们发现这个镜像只有 13.3kB,特别小,但是它是一个完整的 Docker 容器镜像。

然后,Docker 使用 hello-world 镜像启动了 hello-world 容器,并且打印出了 Hello from Docker!


Hello from Docker!
This message shows that your installation appears to be working correctly
复制代码


最后容器运行结束,打印出了容器的整个启动过程。


网络异常,图片无法展示
|


查看运行结束的容器:


root@phyger-VirtualBox:/home/phyger# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
c3d23ead2fc6        hello-world         "/hello"            6 seconds ago       Exited (0) 4 seconds ago                       sharp_sinoussi
root@phyger-VirtualBox:/home/phyger#
复制代码


为什么这个容器运行完之后的状态是 Exited 呢?下篇继续~


容器运行原理图


网络异常,图片无法展示
|


containerd 的安装使用

安装

下载包


wget https://github.com/containerd/containerd/releases/download/v1.5.7/cri-containerd-cni-1.5.7-linux-amd64.tar.gz
tar -zxvf cri-containerd-cni-1.5.7-linux-amd64.tar.gz
复制代码


删除不必要的文件


rm -rf etc/cni
rm -rf opt
复制代码


启动 containerd


ystemctl status containerd
systemctl enable containerd
systemctl restart containerd
复制代码


生成默认配置文件


containerd config  default > /etc/containerd/config.toml
修改配置文件:oom_score = -999
复制代码


启动 HelloWorld 容器


由于 containerd 默认不会从 docker 的仓库拉取镜像,所以我们指定源来进行操作。


ctr i pull docker.io/library/hello-world:latest
ctr run -d -t docker.io/library/hello-world:latest
复制代码


查看启动的 hello-world 容器:


ctr c ls


更多命令使用ctr --help查看。

相关文章
|
负载均衡 数据安全/隐私保护 Docker
Docker-12:Docker安装Apisix
通过Docker安装APISIX
1675 0
|
Docker 容器
【Docker系列】docker-compose文件如何传递参数
【代码】【Docker】docker-compose文件如何传递参数。
1262 0
【Docker系列】docker-compose文件如何传递参数
|
5月前
|
Docker 容器
docker run
【9月更文挑战第08天】
329 1
|
6月前
|
JSON Shell 数据格式
在Docker中,docker run cmd entrypoint 有什么区别?
在Docker中,docker run cmd entrypoint 有什么区别?
|
9月前
|
前端开发 应用服务中间件 数据库
Docker-docker-compose学习笔记(yaml,实战)
Docker-docker-compose学习笔记(yaml,实战)
710 0
|
9月前
|
运维 Linux Shell
Docker详解(五)——Docker基本使用
Docker详解(五)——Docker基本使用
45 0
|
9月前
|
关系型数据库 MySQL Java
Docker Dockerfile 使用方法
Dockerfile 介绍 当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构建出最终的镜像,以及如何配置容器中的环境、文件和应用程序。 Dockerfile 的编写是构建容器的基础,它允许您定义容器的构建步骤、环境和配置。通过合理使用各种指令,您可以构建出一个满足应用程序需求的定制化镜像,从而实现应用的容器化部署。
232 3
|
9月前
|
Docker 容器
Dockerfile 与 Docker Compose区别
用途: Dockerfile 用于定义单个容器的构建过程。它包含了一系列指令,每个指令都代表容器构建过程中的一个步骤。这些步骤包括从基础镜像中构建、安装依赖、拷贝文件、设置环境变量等操作。 语法: Dockerfile 是一个文本文件,其中包含一系列 Docker 指令。每个指令都会生成一个新的镜像层。常见的指令包括 FROM(指定基础镜像)、RUN(执行命令)、COPY(拷贝文件)、EXPOSE(暴露端口)、CMD(设置容器启动时执行的命令)等。 灵活性: Dockerfile 提供了灵活的方式来定义容器构建过程,允许用户精确地控制容器的组件和配置。 使用场景: Dockerfile 适用于
195 1
|
Ubuntu 网络协议 Shell
|
运维 Kubernetes NoSQL
docker系列:docker-compose用法详解
docker-compose是Docker官方提供的用于定义和管理运行多个Docker容器的开源容器编排工具。 可以使用YML文件来配置应用程序需要的所有服务,然后使用docker-compose运行命令,就可以解析YML文件配置创建并启动文件中配置的所有docker服务。
docker系列:docker-compose用法详解