标签:端口映射 table home span hat shell命令 linux idt hub
一、镜像仓库
镜像存储中的核心概念仓库(Repository)是镜像存储的位置。Docker 注册服务器(Registry)是仓库存储的位置。每个仓库包含不同的镜像。Docker Hub 是Docker官方提供公共仓库,提供大量的常用镜像,由于国内网络原因经常连接Docker Hub会比较慢,所以我们也可以选择一些国内提供类似Docker Hub镜像服务站点。
镜像搜索:
root@ryj:/home/wuh151# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 10247 [OK] mariadb MariaDB is a community-developed fork of MyS… 3785 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 749 [OK] percona Percona Server is a fork of the MySQL relati… 514 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 86
镜像拉取:
root@ryj:/home/wuh151# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 6ec7b7d162b2: Pull complete fedd960d3481: Pull complete 7ab947313861: Pull complete
本地镜像展示:
root@ryj:/home/wuh151# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest ab2f358b8612 2 days ago 545MB harbor.lingda.com/common/java 8-jre-alpine fdc893b19a14 3 years ago 108MB
二、Docker image 指令
root@ryj:/home/wuh151# docker image --help Usage: docker image COMMAND Manage images Commands: build Build an image from a Dockerfile history Show the history of an image import Import the contents from a tarball to create a filesystem image inspect Display detailed information on one or more images load Load an image from a tar archive or STDIN ls List images prune Remove unused images pull Pull an image or a repository from a registry push Push an image or a repository to a registry rm Remove one or more images save Save one or more images to a tar archive (streamed to STDOUT by default) tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
三、Dockerfile 创建镜像
Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile的指令是忽略大小写的,建议使用大写,使用#作为注释,每一行只支持一条指令,每条指令可以携带多个参数。
Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。构建指令用于构建image,其指定的操作不会在运行image的容器上执行;设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行
指令 | 语法 | 描述 |
FROM |
FROM < image>[:< tag> | @< digest>] FROM mysql:5.6 |
设置基础镜像。镜像都是从一个基础镜像(操作系统或其他镜像)生成,可以在一个Dockerfile 中添加多条FROM指令,一次生成多个镜像 注意:如果忽略tag选项,会使用latest镜像 |
MAINTAINER |
MAINTAINER < name> MAINTAINER yj Rao
|
设置镜像作者 |
RUN |
RUN < command> RUN apk update
RUN ["executable", "param1", "param2"] RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline |
RUN指令会生成容器,在容器中执行脚本,容器使用当前镜像,脚本指令完成后,Docker Daemon会将该容器提交为一个中间镜像,供后面的指令使用。Dockerfile 的指令每执行一次 都会在docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大。 RUN指令第一种方式为shell方式,使用/bin/sh -c < command>运行脚本,可以在其中使用\ 将脚本分为多行RUN指令第二种方式为exec方式,镜像中没有/bin/sh或者要使用其他shell时使 用该方式,其不会调用shell命令 |
CMD |
CMD < command> CMD ["executable", "param1", "param2"] |
设置容器的启动命令。如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。 CMD不 同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行 的命令。CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数 |
LABEL |
LABEL < key>=< value> < key>=< value> … LABEL version="1.0" description="这是一个Web服务器" by="IT笔录"
|
设置镜像的标签,不同标签之间通过空格隔开。每条指令都会生成一个镜像层 |
EXPOSE |
EXPOSE < port> < port> … |
就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理 解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 |
ENV |
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... |
设置镜像中的环境变量。通过${变量名}或者 $变量名使用变量 |
COPY |
COPY <src>... <dest> |
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 |
ADD | ADD <src>... <dest> | 与copy类似,但是src为压缩文件,并且压缩方式为gzip,bzip2或xz时,指令会将其解压为目录 |
ENTRYPOINT |
ENTRYPOINT [“executable”,”param1”,”param2”] ENTRYPOINT command param1 param2 |
设置容器的入口程序,入口程序是容器启动时执行的程序。每个Dockerfile只能够包含一个entrypoint, 多个entrypoint只有最后一个有效,当定义了entrypoint以后,CMD只能够作为参数进行传递。 |
VOLUME |
VOLUME ["/path/to/dir"] |
用来创建一个在image之外的mount point,用来在多个container之间实现数据共享 |
USER | USER < name> | 使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT都将使用该用户。 |
WORKDIR | WORKDIR < Path> | 设置RUN CMD ENTRYPOINT ADD COPY指令的工作目录 |
ONBUILD | ONBUILD [INSTRUCTION] |
用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这是执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。 |
标签:端口映射 table home span hat shell命令 linux idt hub
原文地址:https://www.cnblogs.com/ryjJava/p/14134100.html