docker 初步使用

▶ 运行docker容器

docker 有三大部分组成:镜像容器仓库

用个不是很确切的理解 镜像 和 容器 的关系就像是 程序 与 进程,前者 镜像/程序静态 的,而后者 容器和进程动态 的。

所以:镜像是容器运行的基石。

NAME
       docker-run - Create and run a new container from an image
SYNOPSIS
       docker  run  [-a|--attach[=[]]]  
--snip--

通过使用 docker docker run 后面指定一个镜像就能够运行一个容器了。如运行一个 debian镜像 的容器就是 docker run debian

示列:

[root@server ~]# docker run debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
8cd46d290033: Pull complete
Digest: sha256:b8084b1a576c5504a031936e1132574f4ce1d6cc7130bbcc25a28f074539ae6b
Status: Downloaded newer image for debian:latest
[root@server ~]#

在上面的示列中很长的输出部分是拉取镜像的操作,这是在下载镜像,由于镜像是容器运行的基石,当docker发现当前的系统上没有 debian 这个镜像的时候,docker就会向 registry 也就是镜像仓库去下载镜像。

docker run debian 命令执行的过程是先看本地有没有指定的镜像,如果没有就会去仓库拉取指定的镜像,有的话直接就有本地的镜像,随后开始执行让镜像成为容器的过程。

在上面的输出中只有拉取的镜像的显示,后面的就没有了,这是因为镜像变成的容器已经结束了它的任务退出了,通过 docker ps -a 可以看到:

[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
ccc7a9795f4e   debian    "bash"    7 minutes ago   Exited (0) 7 minutes ago             beautiful_chatterjee

ps 列出docker的容器,不带参数表示列出运行状态的容器,-a 的子选项是列出所有容器包括没有运行的。

可以看到 STATUS 一行是 Exited 的这个容器已经运行了然后退出了,这个 docker run debian 过程是很快的。最后一行是 NAMES 这一行名字是容器的名字,容器的名字可以自己来设置如果没有在 docker run 的时候对容器的名字进行设置那么docker会动取名字。

本部分就这些内容,关于 删除镜像、容器 等其他操作不是本篇的内容。

▷ docker run 运行容器更近一步

▷ docker run debian 后面添加参数试试

[root@server ~]# docker run debian echo "test the docker container"
test the docker container

[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
c91f1fd86386   debian    "echo 'test the dock…"   2 minutes ago    Exited (0) 2 minutes ago              silly_heyrovsky
ccc7a9795f4e   debian    "bash"                   20 minutes ago   Exited (0) 20 minutes ago             beautiful_chatterjee

在先前的 docker run debian 命令后面添加 echo "test the docker container",可以看到在终端显示屏幕中已经显示了 test the docker container 这个字符串,执行完成后通过 docker ps -a 查看,发现果然这个运行的容器也和之前一样结束了任务,退出了。

COMMADN 部分知道第一行的容器就是该容器。

▷ 进入容器内部

[root@server ~]# docker run -i -t debian /bin/bash
root@cd99ded6f414:/# echo "the three container"
the three container
root@cd99ded6f414:/# exit
exit

[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
cd99ded6f414   debian    "/bin/bash"              3 minutes ago    Exited (0) 33 seconds ago             bold_volhard
c91f1fd86386   debian    "echo 'test the dock…"   8 minutes ago    Exited (0) 8 minutes ago              silly_heyrovsky
ccc7a9795f4e   debian    "bash"                   27 minutes ago   Exited (0) 27 minutes ago             beautiful_chatterjee

上面的过程中就进入到了容器内部 -it 的意思是创建一个能够指定交互会话的容器,后面跟着的 /bin/bash 是指容器运行时候指定的 shell 环境,在容器内部使用 exit 退出容器,退出后容器也就 Exited 了。

posted @ 2024-09-06 22:19  takenika  阅读(21)  评论(0)    收藏  举报