使用 Docker 工具箱从图像中提取和更改代码
Extract and change code from image using Docker Toolbox
我成功地从 public 存储库中检索了一个名为 k8s.gcr.io/guestbook:v3
的图像,并且 运行 它作为本地 Windows devbox 上的容器使用 Docker Toolbox.
(我必须使用 Docker Toolbox,因为有问题的 devbox 不满足安装 Docker for Windows
)
的先决条件
What specific commands do I need to type in order to locate and open the files that were used to create the image?
我想检查容器内应用程序的代码,然后在这里和那里进行一些更改,然后 运行 将修改后的图像作为容器查看修改后的代码。但如果我不能首先访问代码,我就不能很好地做到这一点。
正在下载图像和 运行 容器
以下是我检索和验证 container/image 所采取的步骤:
User@pc MINGW64 /c/Program Files/Docker Toolbox
$ docker run -d -p 3000:3000 k8s.gcr.io/guestbook:v3
Unable to find image 'k8s.gcr.io/guestbook:v3' locally
v3: Pulling from guestbook
a3ed95caeb02: Pull complete
300273678d06: Pull complete
de2a362ef050: Pull complete
06d5067149bd: Pull complete
7a38a4e8f983: Pull complete
10af2c65b7d4: Pull complete
Digest: sha256:8f333d5b72677d216b4eb046d655aef7be9f1380e06ca1c63dfa9564034e7e26
Status: Downloaded newer image for k8s.gcr.io/guestbook:v3
953785bda17b0396fa3f3812a9b8ad8e2038120336895dfe1d57343adb917cce
User@pc MINGW64 /c/Program Files/Docker Toolbox
$ curl $(docker-machine ip default):3000
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta charset="utf-8">
<meta content="width=device-width" name="viewport">
<link href="style.css" rel="stylesheet">
<title>Guestbook</title>
</head>
<body>
<div id="header">
<h1>Guestbook</h1>
</div>
<div id="guestbook-entries">
<p>Waiting for database connection...</p>
</div>
<div>
<form id="guestbook-form">
<input autocomplete="off" id="guestbook-entry-content" type="text">
<a href="#" id="guestbook-submit">Submit</a>
</form>
</div>
<div>
<p><h2 id="guestbook-host-address"></h2></p>
<p><a href="env">/env</a>
<a href="info">/info</a></p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
</html>
User@pc MINGW64 /c/Program Files/Docker Toolbox
$
可以使用 docker commit.
“将 Dockerfile 指令应用于创建的图像”
此处解释了您可能想要执行的操作:
https://www.techrepublic.com/article/how-to-commit-changes-to-a-docker-image/
尽管如此,编辑 Dockerfile 并构建容器可能是更好的方法;参见 https://docs.docker.com/compose/gettingstarted/
我成功地从 public 存储库中检索了一个名为 k8s.gcr.io/guestbook:v3
的图像,并且 运行 它作为本地 Windows devbox 上的容器使用 Docker Toolbox.
(我必须使用 Docker Toolbox,因为有问题的 devbox 不满足安装 Docker for Windows
)
What specific commands do I need to type in order to locate and open the files that were used to create the image?
我想检查容器内应用程序的代码,然后在这里和那里进行一些更改,然后 运行 将修改后的图像作为容器查看修改后的代码。但如果我不能首先访问代码,我就不能很好地做到这一点。
正在下载图像和 运行 容器
以下是我检索和验证 container/image 所采取的步骤:
User@pc MINGW64 /c/Program Files/Docker Toolbox
$ docker run -d -p 3000:3000 k8s.gcr.io/guestbook:v3
Unable to find image 'k8s.gcr.io/guestbook:v3' locally
v3: Pulling from guestbook
a3ed95caeb02: Pull complete
300273678d06: Pull complete
de2a362ef050: Pull complete
06d5067149bd: Pull complete
7a38a4e8f983: Pull complete
10af2c65b7d4: Pull complete
Digest: sha256:8f333d5b72677d216b4eb046d655aef7be9f1380e06ca1c63dfa9564034e7e26
Status: Downloaded newer image for k8s.gcr.io/guestbook:v3
953785bda17b0396fa3f3812a9b8ad8e2038120336895dfe1d57343adb917cce
User@pc MINGW64 /c/Program Files/Docker Toolbox
$ curl $(docker-machine ip default):3000
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta charset="utf-8">
<meta content="width=device-width" name="viewport">
<link href="style.css" rel="stylesheet">
<title>Guestbook</title>
</head>
<body>
<div id="header">
<h1>Guestbook</h1>
</div>
<div id="guestbook-entries">
<p>Waiting for database connection...</p>
</div>
<div>
<form id="guestbook-form">
<input autocomplete="off" id="guestbook-entry-content" type="text">
<a href="#" id="guestbook-submit">Submit</a>
</form>
</div>
<div>
<p><h2 id="guestbook-host-address"></h2></p>
<p><a href="env">/env</a>
<a href="info">/info</a></p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
</html>
User@pc MINGW64 /c/Program Files/Docker Toolbox
$
可以使用 docker commit.
“将 Dockerfile 指令应用于创建的图像”此处解释了您可能想要执行的操作: https://www.techrepublic.com/article/how-to-commit-changes-to-a-docker-image/ 尽管如此,编辑 Dockerfile 并构建容器可能是更好的方法;参见 https://docs.docker.com/compose/gettingstarted/