基于标准映像创建新映像



我已经安装了Docker并使用命令运行了一些Ubuntu映像:

sudo docker run ubuntu

我想在其上创建一些文本文件,并在下次运行相同的图像时找到它。如何实现?

上。

连接到码头工人时遇到问题。我正在运行码头工人

docker ps -a
aef01293fdc9        ubuntu              "/bin/bash"         6 hours ago         Up 6 hours                                      priceless_ramanujan

由于它是Up模式,我想我不需要执行命令:

docker start priceless_ramanujan

所以,我运行命令attach

docker attach priceless_ramanujan

并且在命令不返回时输出中没有任何内容。

为什么我无法到达容器的bash?

简单的例子:

$ docker run -it ubuntu
root@4d5643e8c1a8:/# echo "test" > test.txt
root@4d5643e8c1a8:/# cat test.txt 
test
root@4d5643e8c1a8:/# exit
exit
$ docker run -it ubuntu
root@cdb44750bffc:/# cat test.txt
cat: test.txt: No such file or directory
root@cdb44750bffc:/#

码头工人运行image_name

此命令根据提供的image_name创建并启动一个新容器。如果未为容器设置名称,则 docker 会生成并分配一个随机名称。在上面的示例中,基于 ubuntu 创建了 2 个容器。

  • 通过docker ps -a我们可以看到创建的随机名称modest_jenningsoptimistic_leakey

    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                     PORTS                  NAMES
    cdb44750bffc        ubuntu              "/bin/bash"              About a minute ago   Exited (1) 4 seconds ago                          optimistic_leakey
    4d5643e8c1a8        ubuntu              "/bin/bash"              2 minutes ago        Exited (0) 2 minutes ago                          modest_jennings
    
  • cat test.txt第二次失败,因为该文件不存在。容器从"干净"的ubuntu映像开始。

实际上,我们只在modest_jennings内部创建了test.txt

码头工人启动container_name

此命令将启动已停止的容器。因此,在我们的例子中,文件仍然存在:

$ docker start modest_jennings 
modest_jennings
$ docker attach modest_jennings 
root@4d5643e8c1a8:/# cat test.txt
test
root@4d5643e8c1a8:/#

码头工人提交container_name image_name

此命令用于创建新映像,以便以后可以使用它并基于该映像运行容器。继续我们的例子...

$ docker commit modest_jennings my_ubuntu
sha256:a4357f37153ac0b94e37315595f1a3b540538283adc3721df4d4e3b39bf8334f
$ docker run -it my_ubuntu
root@2e38616d532a:/# cat test.txt 
test
root@2e38616d532a:/#

如果需要自定义镜像,可以创建一个 Dockerfile

`FROM ubuntu:16.04
 ADD ./test.txt /tmp/`

在你可以docker build -t ubuntu:custom .构建它之后最后运行自定义映像docker run --name myubuntu ubuntu:custom sleep 3000

您可以使用docker exec -it myubuntu /bin/bashmore /tmp/test.txt检查文件

最新更新