docker简介
docker客户端
Docker 客户端有两种替代选项:名为 docker
的命令行应用程序或名为 Docker Desktop 的基于图形用户界面 (GUI) 的应用程序。 CLI 和 Docker Desktop 均与 Docker 服务器交互。 来自 CLI 或 Docker Desktop 的 docker
命令使用 Docker REST API 将指令发送到本地或远程服务器,并作为用于管理容器的主要接口。
docker服务器
Docker 服务器是一个名为 dockerd
的守护程序。 dockerd
守护程序通过 Docker REST API 响应来自客户端的请求,并且可以与其他守护程序进行交互。 此外,Docker 服务器还负责跟踪容器的生命周期。
docer创建镜像的创建方法
创建docker镜像的三种方法,分别是基于已有的容器创建、基于本地模板创建、以及dockerfile创建。
基于以有容器创建镜像
基于已有的容器创建主要是使用docker commit命令。实质就是把一个容器里面运行的程序以及该程序的运行环境打包起来生成新的镜像。
命令:docker commit 选项 容器ID/名称 仓库名称:标签
常用的选项:
-m:说明信息
-a:作者
-p:生成过程中停止容器的运行(一般不会使用)
docker commit -m "this is a test image" -a "duzhe" mytomcat testimg:1.0
sha256:aa675b1e538c0463c4d0df45e8be34c7cfe71225ec896009b0ee7a754b3db283
基于本地模板镜像创建
通过导入操作系模板文件可以生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:
https://wiki.openvz.org/Download/template/precreated
Cat 镜像包 | docker import - 生成的镜像名:标签
cat ubuntu-12.04-x86_64-minimal.tar.gz | docker import - myubuntu:1
sha256:17dccdf9e0a761de3eb582d5ca370377aa602e0881e58ce07c76cf6223904bcd
用dockerfile生成镜像
Dockerfile结构的四个部分:基本镜像信息
,维护者信息
,镜像操作指令
和容器启动执行指令
建立工作目录
mkdir dockerdir
cd dockerdir
创建并编写dockerfile文件
FROM centos:7
MAINTAINER duzhe
ENV PATH $PATH:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
编写执行脚本文件
vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
COPY
COPY
指令将从构建上下文目录中 <源路径>
的文件/目录复制到新的一层的镜像内的 <目标路径>
位置。
格式:
COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
示例:
COPY package.json /usr/src/app/
<源路径>
可以是多个,甚至可以是通配符,其通配符规则要满足 Go 的 filepath.Match 规则,如:
COPY hom* /mydir/
COPY hom?.txt /mydir/
<目标路径>
可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR
指令来指定)。目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
在使用该指令的时候还可以加上 --chown=<user>:<group>
选项来改变文件的所属用户及所属组。
COPY --chown=55:mygroup files* /mydir/
COP