Docker的基本使用
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
之前安装tensorflow时尝试了在docker下安装,程序运行在一个独立的环境里,感觉上相当于一个虚拟机。这篇博客记录了使用docker打包程序以及下载到主机上运行的全过程,
1.Docker安装以及卸载
|
|
2. Dockerfile 指令详解
|
|
2.1. FROM 指定基础镜像
格式为 FROM <image> 或 FROM <image>:<tag> 。
第一条指令必须为 FROM 指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM指令(每个镜像一次)。
2.2. MAINTAINER
格式为 MAINTAINER <name> ,指定维护者信息。
2.3. RUN 执行命令
RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。其格式有两种:
- shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
- exec 格式:RUN [“可执行文件”, “参数1”, “参数2”],这更像是函数调用中的格式。
2.4 COPY 复制文件
格式:
- COPY [–chown=
: ] <源路径>… <目标路径> - COPY [–chown=
: ] ["<源路径1>",… “<目标路径>”]
和 RUN 指令一样,也有两种格式,一种类似于命令行,一种类似于函数调用。
COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。比如:
COPY package.json /usr/src/app/
2.5 ADD 更高级的复制文件
格式为 ADD <src> <dest> 。
该命令将复制指定的 <src> 到容器中的 <dest> 。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
2.6 CMD 容器启动命令
支持三种格式
- CMD [“executable”,”param1″,”param2″] 使用 exec 执行,推荐方式;
- CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
- CMD [“param1″,”param2”] 提供给 ENTRYPOINT 的默认参数;
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
2.7 WORKDIR 指定工作目录
格式为 WORKDIR /path/to/workdir 。
为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。
可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
2.8 EXPOSE
格式为 EXPOSE <port> [<port>…] 。
告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。
2.9 USER
格式为 USER daemon 。
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户,例如: RUN groupadd -r postgres && useradd -r -g postgres postgres 。要临时获取管理员权限可以使用 gosu ,而不推荐 sudo 。
3. Docker镜像构建上传
3.1 构建镜像
以下命令基于Dockerfile所在文件夹
|
|
3.2 使用 Docker ID 登录
如果您没有 Docker 帐户,请在 cloud.docker.com 中进行注册。记录您的用户名。
登录本地机器上的 Docker 公用镜像库。
|
|
3.3 上传镜像
|
|
4. Docker镜像使用
|
|
tips:删除none镜像
|
|
参考
- Docker 从入门到实践 https://wsgzao.github.io/post/docker/
- Docker 教程 http://www.runoob.com/docker/docker-tutorial.html
- Get Docker CE for CentOS https://docs.docker.com/install/linux/docker-ce/centos/
- Docker —— 从入门到实践 https://legacy.gitbook.com/book/yeasy/docker_practice/details