美文网首页Linux
Docker进阶(创建镜像)

Docker进阶(创建镜像)

作者: YQY_苑 | 来源:发表于2019-06-26 20:03 被阅读0次

1. 容器文件

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。
而且关闭容器并不会删除容器文件,只是容器停止运行而已,故还是会占据硬盘空间

# 列出本机正在运行的容器
$ docker container ls

# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all

# 删除容器文件
$ docker container rm [containerID]
image.png

2. Dockerfile 文件

它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

编写一个Dockerfile文件

本例为创建Docker容器运行Express

1. 新建.dockerignore文件、Dockerfile文件,并分别写入需要排除的路径和配置。

image.png
FROM node:8.4 
//该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
COPY . /app
//将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
WORKDIR /app
//指定接下来的工作路径为/app。
RUN npm install
//在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
EXPOSE 3000
//将容器 3000 端口暴露出来, 允许外部连接这个端口。
CMD node ./bin/www
//  表示容器启动后自动执行node ./bin/www

2. 创建image文件

// -t参数用来指定 image 文件的名字,
// 最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
$ docker image build -t  online-demo .

# 或者

// 后面还可以用冒号指定标签,
//如果不指定,默认的标签就是latest
$ docker image build -t  online-demo:0.0.1 .

image.png

出现这个就是成功了

image

查看是否已经在本地生成镜像


image.png

3. 生成容器

$ winpty  docker container run --rm -p 8000:3000 -it online-demo /bin/bash
# 或者
$ winpty  docker container run --rm -p 8000:3000 -it online-demo:0.0.1 /bin/bash
  • p参数:容器的 3000 端口映射到本机的 8000 端口。
  • it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
  • online-demo:0.0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
  • /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
  • --rm : 表示在容器终止运行后自动删除容器文件.

RUN命令与CMD命令的区别在哪里?

简单说,

  • RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;
  • CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

注意,指定了CMD命令以后,docker container run命令就不能附加命令了(例如里面的/bin/bash),否则它会覆盖CMD命令。

4.发布 image 文件

# 登陆
$ docker login

## 为本地的 image 标注用户名和版本。
$ docker image tag [imageName] [username]/[repository]:[tag]
# 实例
$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1

# 发布 image 文件。
docker image push [username]/[repository]:[tag]

登陆 hub.docker.com ,就可以看到已经发布的 image 文件。

3. 其他有用命令

docker 的主要用法就是上面这些,此外还有几个命令,也非常有用。

(1)docker container start

  • 前面的docker container run命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用docker container start命令,它用来启动已经生成、已经停止运行的容器文件。
$ docker container start [containerID]

(2)docker container stop

  • 前面的docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
$ bash container stop [containerID]
  • 这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。

(3)docker container logs

  • docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。
$ docker container logs [containerID]

(4)docker container exec

  • docker container exec命令用于进入一个正在运行的 docker 容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
$ docker container exec -it [containerID] /bin/bash

(5)docker container cp

  • docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
$ docker container cp [containID]:[/path/to/file] .

相关文章

  • Docker进阶(创建镜像)

    1. 容器文件 image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存...

  • docker相关概念理解

    Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。 Docker 容器(...

  • Docker

    # Docker java进阶/docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器...

  • Docker基础原理理解

    Docker核心概念 镜像 Docker镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器...

  • Docker入门

    目录 一、Docker介绍二、安装Docker三、镜像管理四、通过容器创建镜像五、通过模板创建镜像六、容器管理七、...

  • Docker基础操作

    一.创建镜像docker image 挂载软件目录到docker镜像下 docker run -i -t -v /...

  • Docker从入门到实践

    基本概念 镜像Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器 容器容器是从镜像创建的运...

  • 常用命令

    查看docker镜像是否下载成功docker images查看镜像是否创建成功docker ps -a停止镜像do...

  • docker

    Docker 命令 获取镜像:docker image pull <镜像名>:<版本号> 运行镜像生成容器:只创建...

  • Docker+Jenkins持续集成搭建

    docker search jenkins可以搜索docker官方仓库的镜像然后从docker仓库中下载镜像 创建...

网友评论

    本文标题:Docker进阶(创建镜像)

    本文链接:https://www.haomeiwen.com/subject/gzlhcctx.html