docker 2 :定义分享自己的docker

2017-12-29  本文已影响0人  初庆钊

1. 根据镜像修改

建立一个ubuntu 容器,修改

docker container run -ti ubuntu bash

自定义修改

apt-get update
apt-get install -y figlet
figlet "hello docker"

退出

exit

commit docker

首先查看刚才修改的container id

docker container ls -a
docker container diff <container ID># 查看修改

然后根据id提交为镜像(不必全部输入id,只要能与其他container 区分开)

docker container commit CONTAINER_ID

然后通过docker image ls 可以查看到刚才提交的镜像

REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a104f9ae9c37 46 seconds ago 160MB
ubuntu latest 14f60031763d 4 days ago 120MB

此时刚提交的镜像名字是none,通过下面命令为它命名。然后以后就可以通过 ourfiglet来召唤它了:)

docker image tag <IMAGE_ID> ourfiglet

2. 使用dockerfile 创建镜像

Give a sysadmin an image and their app will be up-to-date for a day, give a sysadmin a Dockerfile and their app will always be up-to-date.
给一个管理员一份镜像,他们的软件将暂时是最新的;给一个管理员一个Dockfile,他们的软件将永远是最新的。

Dockerfile 规定如何构建镜像。下面通过一个Node.js程序说明
建立一个index.js和Dockerfile文件,内容如下。
index.js:

var os = require("os");
var hostname = os.hostname();
console.log("hello from " + hostname);

Dockerfile:

FROM alpine
RUN apk update && apk add nodejs
COPY . /app  #从当前目录将index.js拷贝到container中
WORKDIR /app #设定工作目录
CMD ["node","index.js"] #= node index.js 当run container时运行。

然后通过docker build命令建立镜像,-t 命名

docker image build -t hello:v0.1 .
docker build -t tutorial -f ./Dockerfile ./

打开一个container,验证docker正常运行。

docker container run hello:v0.1
docker image pull alpine
docker image inspect alpine
docker image inspect --format "{{ json .RootFS.Layers }}" alpine
docker image inspect --format "{{ json .RootFS.Layers }}" <image ID>
上一篇下一篇

猜你喜欢

热点阅读