Docker入门系列八——使用Dockerfile构建镜像

Dockfile就是一个文本文件,里边包含了一行行的指令,用来描述如何创建自定义镜像。 1. 使用 使用 docker build 命令来基于Dockerfile文件和上下文构建镜像,构建上下文指的是特定路径(PATH或URL)的文件集合,PATH用来指定本地文件系统目录,而URL用来指定Git仓库的地址,它们包含的所有文件(子目录或子模块)都会被递归处理。在大多数情况下,最好以空目录作为上下文,并将Dockerfile保存在该目录中。仅添加构建Dockerfile所需的文件。 docker build命令语法: docker build [OPTIONS] PATH | URL | - 例如: $ docker build . Sending build context to Docker daemon 6.51 MB ... 上边的命令会被docker daemon程序来处理而不是docker CLI,构建进程将发送指定路径下的Dockerfile文件到docker daemon。 Dockerfiie通过命令来关联构建上下文的文件,如 COPY、ADD 等命令。另外,可以通过 .dockerignore文件来排除文件或目录,以提高构建速度和性能。 一般而言,Dockerfile文件应该位于构建上下文的根目录中,但是,也允许使用 -f 选项来指定它的位置: $ docker build -f /path/to/a/Dockerfile . 也可以在镜像构建完成后指定tag: $ docker build -t shykes/myapp . 多次使用 -t 选项可以指定多个tag。 Docker daemon运行Dockfile之前会先进行校验,校验失败会输出错误信息: $ docker build -t test/myapp . Sending build context to Docker daemon 2.048 kB Error response from daemon: Unknown instruction: RUNCMD ...

2019-11-15 · 4 min · 711 words · Hank

Docker入门系列七——端口映射与容器互联

1. 端口映射 1.1. 外部访问容器内的应用 如果外部要访问容器,需要将容器的端口开放出来,使用 -p 或 -P (大写)参数来映射容器端口和宿主机端口的关系: -p:明确指定端口映射,每个端口只能绑定一个容器,格式包括:IP:HOST_PORT:CONTAINER_PORT|IP:CONTAINER_PORT|HOST_PORT:COINTAINER_PORT 举例: docker run -p 8080:80 nginx 该命令表示启动容器是将宿主机的8080端口映射为容器的80端口,外部访问宿主机的8080端口就是在访问容器的80端口。 -P(大写):随机映射一个宿主机的可用端口到容器 举例: docker run -P nginx 通过docker ps命令可以看到端口的映射结果: root@ubuntu:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e4cb770c5cc nginx "nginx -g 'daemon of…" 17 seconds ago Up 16 seconds 0.0.0.0:32768->80/tcp peaceful_robinson 可以看到,宿主机的32768端口映射到容器的80端口 1.2. 映射多个端口 多次使用 -p 参数,可以将容器的多个端口与宿主机的多个端口进行映射 例如: docker run -p 8080:80 -p 8081:80 nginx 1.3. 映射指定地址的指定端口 使用 IP:HOST_PORT:CONTAINER_PORT 格式来指定IP地址下的端口 例如: ...

2019-09-15 · 2 min · 234 words · Hank