Docker的运行

今天我们来运行一个docker,下面执行以下的命令:
docker -D run hello-world

注意,这里出现了一个错误:进程没有运行,启动docker客户端以后,再次执行:

注意这里打印出来的日志信息:
docker首先从本地拉去镜像,本地没有镜像,然后从远程拉取,拉取之后创建实例,然后运行,打印出 Hello from Docker。
1、通过运行 docker -D run hello-world 运行 hello-world 映像 -D 在调试模式下运行 docker 命令,因此您可以看到幕后究竟发生了什么。
2、正如您所观察到的,docker 首先检查给定名称“hello-world”中是否存在镜像。由于在本地找不到镜像,它从 docker-hub 拉到本机(本地机器),然后运行映像。映像的可运行实例称为容器。
3、容器在终端上回显一些消息并退出。
4、现在,尝试通过 docker rmi hello-world 删除该镜像,您会注意到该镜像无法删除,因为它有一个依赖容器。
5、因此,通过运行 docker rm docker_id 从机器中删除容器以进行清理。
6、通过运行 docker rmi hello-world 删除镜像。
7、现在 hello-world 映像也已从您的系统中清除。
因此,如果您需要删除镜像,则必须先删除镜像对应的容器。
在本文的第一张图,展示了通过DockerFile构建镜像,然后运行镜像的原理。
我们来试试:
# The base image to use in the build.
# This is mandatory and must be the first command in the file.
# © https://jstobigdata.com
FROM busybox:latest
# `Docker inspect` can be used to view image Labels.
LABEL version = "1.0"
LABEL author = "Bikram Kundu"
CMD ["echo", "Welcome to - Zero to Hero in Docker"]
# Now go back to the tutorial and follow the commands
1、查看 Dockerfile,这是指示 Docker 如何构建预期镜像的文件。
2、现在让我们从 Dockerfile 构建镜像, docker -D build -t hello-docker:latest .
-D 在调试模式下运行 docker build 命令,这样你就知道发生了什么。
-t 指定名称和可选的标签名称:标签
.就是指定Dockerfile存在的路径。
docker build – 从 Dockerfile 构建 docker 镜像

3、运行 docker build --help 以了解可用于构建镜像的所有命令。
4、现在镜像hello-docker 已构建,输入 docker images 以查看存储在主机中的图像列表。
5、镜像的可运行实例称为容器,因此要运行 docker container docker run -i --name hello-docker-container hello-docker
-i 以交互模式启动容器,对于高级选项非常有用
--name hello-docker-container 为容器分配这个名称。默认情况下,docker 会尝试为每个可运行的容器分配一个唯一的名称,出于学习目的,我试图向您展示如何命名给定的容器。
使用 docker run --help 了解可用于运行容器的所有选项。
6、要查看系统中存在的所有可运行容器,请运行 docker container ls --all
7、清理容器和图像。您可以参考上面的 hello-world 示例,使用 docker rm 和 docker rmi 清理主机中不必要的容器和镜像。
Docker镜像的构建
如上所述,Dockerfile 具有向 docker 解释如何构建和构建什么的指令或命令。我们将更详细地研究这一点,因为这是最重要的 Docker 教程。
FROM:解释用于构建自定义 hello-docker 映像的基本映像。这就像继承/可重用性。
LABEL:这是为您的图像设置一些标签/元信息。如版本、作者、电子邮件、许可证等。
CMD:在 hello-docker 镜像中运行的命令
还有其他几个命令如下:
FROM, LABEL, COPY, RUN, EXPOSE, ENV, ADD, COPY, ENTRYPOINT, VOLUME, USER, WORKDIR, ARG, ONBUILD, STOPSIGNAL, HEALTHCHECK, SHELL. 所有命令都是大写。
在未来的章节中,我们将花更多时间来理解这些命令中的每一个。