在Docker中,容器和镜像有什么区别?[重复]

24 浏览
0 Comments

在Docker中,容器和镜像有什么区别?[重复]

这个问题已经有了答案:

Docker镜像和容器有什么区别?

Docker中容器和镜像有什么不同?在使用Docker入门教程中,这些术语都被使用了,但我不理解它们之间的区别。

请有人能给我解释一下吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

一个镜像是有序的根文件系统更改集合,以及相应的执行参数,用于在容器运行时使用。镜像是只读的。

一个容器是一个镜像的活动(或已退出的非活动)有状态实例化。

0
0 Comments

镜像是存储容器的冻结不可改变的快照。容器是一些镜像正在运行(或停止)的实例。

从名为“ubuntu”的基础镜像开始。让我们在ubuntu镜像中交互式运行bash并创建一个文件。我们将使用-i-t标志来给我们一个交互式的bash shell。

$ docker run -i -t ubuntu  /bin/bash
root@48cff2e9be75:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@48cff2e9be75:/# cat > foo
This is a really important file!!!!
root@48cff2e9be75:/# exit

不要期望当您退出并重新启动镜像时该文件会保留下来。您重新启动的状态与之前的完全相同,而不是从您停下来的地方继续。

$ docker run -i -t ubuntu  /bin/bash
root@abf181be4379:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@abf181be4379:/# exit

但是,容器现在不再运行,但是具有状态并且可以保存(提交)为镜像。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                          PORTS                      NAMES
abf181be4379        ubuntu:14.04        /bin/bash              17 seconds ago       Exited (0) 12 seconds ago                                  elegant_ardinghelli    
48cff2e9be75        ubuntu:14.04        /bin/bash              About a minute ago   Exited (0) 50 seconds ago                                  determined_pare        
...

让我们从我们创建文件的容器ID 48cff2e9be75创建镜像:

$ docker commit 48cff2e9be75 ubuntu-foo
d0e4ae9a911d0243e95556e229c8e0873b623eeed4c7816268db090dfdd149c2

现在,我们有了一个全新的包含非常重要文件的镜像:

$ docker run ubuntu-foo /bin/cat foo
This is a really important file!!!!

尝试执行docker images命令。您应该可以看到您的新镜像ubuntu-foo与我们开始使用的ubuntu标准镜像一起列出。

0