docker扫盲篇2

1、补充上篇部分没有涉及到得命令

# 查看容器网络
docker network ls

# 进入到对应得容器内部,注意有些事bash,有些是sh
docker exec -it [id or name] bash

# 后续继续补充其他得命令

2、镜像管理相关命令

# 下载linux最新得镜像
docker pull linux

# 下载linux指定版本
docker pull linux:7.5.0

# 下载linux全部得版本
docker pull -a linux

# 搜索linux镜像,这个是官方得镜像仓库去搜索
docker search linux

# 查看镜像
docker images

# 显示所有得镜像,包括中间层得镜像
docker images -a

# 查看某一个镜像详细信息
docker inspect [id or name]
eg. docker inspect linux

# 查找本地镜像
docker images | grep linux

# 删除镜像,加空格追加可删除多个
docker rmi liunx image2

# 将镜像保存到本地,保存到当前路径下
docker save -o linux.tar linux

# 将正在运行得容器保存成镜像
docker commit linux linux:latest

3、dockerfile理论知识

3.1       语法

a.对大小写不敏感,不区分大小写

3.2        参数解释

# FROM 
# 语法:FROM <image>:<tag>
# 解释:设置要制作的镜像基于哪个镜像,FROM 指令必须是整个 Dockerfile 的第一个指令,如果指定的镜像不存在默认会自动从 Docker Hub 上下载。
FROM Linux:latest


# MAINTAINER
# 语法:MAINTAINER <name>
# 解释:MAINTAINER 指令允许你给将要制作的镜像设置作者信息
# 示例:
MAINTAINER 1147127099@qq.com


# COPY
# 语法:COPY <src> <dest>
# 解释:<srC>是一个文件或源目录的路径,可以有多个,<dest>是目标目录,如果有多个源目录时,目标目录必须以/结束;目标路径最好用绝对路径。<src>路径是相对于该 Dockerfile 文件所在位置的相对路径(必须在 Dockerfile的目录同级及以下,不能是 Dockerfile 的上级目录,否则会报“No source files were specified”错误)
# 示例:
COPY httpd.conf magic /etc/httpd/conf/


# ADD
# 语法:ADD <src> <dest>
# 解释:ADD指令用于从指定路径拷贝一个文件或目录到容器的指定路径中,<src>是一个文件或目录的路径,也可以是一个URL,路径是相对于该Dockerfile文件所在位置的相对路径(必须在Dockerfile的目录同级及以下,不能是 Dockerfile 的上级目录,否则会报“No source files were specified”错误),<dest>是目标容器的一个绝对路径,例如/home/Docker/Dockerfile 这个文件中定义的,那么 ADD /data.txt /db/指令将会尝试拷贝文件从homeooke/Docker/data.txt 到将要生成的容器的/db/data.txt,且文件或目录的属组和属主分别为 uid 和 gid 为 0的用户和组,如果是通过 url 方式获取的文件,则权限是 600.
# 注意:
# ①如果执行 docker build  即通过标准输入来创建时,ADD 指令只支持 url方式,另外如果url需要认证,则可以通过RUN wget 或 RUN curl来完成,ADD 指令不支持认证。
# ②<src>路径必须与 Dockerfile 在同级目录或子目录中,例如不能使用 ADD.somepath,因为在执行 docker build时首先做的就是把 Dockerfile 所在目录包含子目录发送给 docker 的守护进程。
# ③如果<src>是一个 url 且<dest>不是以"/"结尾,则会下载文件并重命名为<dest>。
# ④如果<SrC>是一个 url 且<dest>以"/"结尾,则会下载文件到<dest>/<filename>,url必须是一个正常的路径形式“http://example.com”像这样的 url 是不能正常工作的。
# ⑤如果<src>是一个本地的压缩包且<dest>是以"/"结尾的目录,则会调用“tar-x”命令解压缩,如果<dest>有同名文件则覆盖,但<src>是一个 url 时不会执行解压缩。
# 示例:
ADD ./linux.tar /opt/


# ENV 
# 语法:ENV <key><value>
# 解释:ENV 指令用于设置环境变量,在 Dockerfile 中这些设置的环境变量也会影响到RUN 指令,当运行生成的镜像时这些环境变量依然有效,如果需要在运行时更改这些环境变量可以在运行 docker run 时添加-env<key>=<value>参数来修改。
# 注意:最好不要定义那些可能和系统预定义的环境变量冲突的名字,否则可能会产生意想不到的结果。
# 示例:
ENV DEBUG_LVL 3


# USER
# 语法:USER [usernameluid]
# 解释:USER 指令用于设置用户或 uid 来运行生成的镜像和执行 RUN 指令。
# 示例:
USER 1


# WORKDIR 
# 语法:WORKDIR /path/to/workdir
# 解释:WORKDIR 指令用于设置 Dockerfile 中的 RUN、CMD 和 ENTRYPOINT 指令执行命令的工作目录(默认为/目录),该指令在 Dockerile 文件中可以出现多次,如果使用相对路径则为相对于 WORKDIR 上一次的值,例如WORKDIR /data,WORKDIR log,RUN pwd 最终输出的当前目录是/data/log。
# 示例:
WORKDIR /data/log


# VOLUME
# 语法:VOLUME["mountpoint"]
# 解释:VOLUME 指令用来设置一个挂载点,可以用来让其他容器挂载以实现数据共享或对容器数据的备份、恢复或迁移。
# 挂在卷除了在dockerfile中声明,还可以直接在docker run 中加入-v命令也可以直接挂载
# 示例:
VOLUME /usr/share/nginx/html
docker run -it -v demo-volume:/data:ro ubuntu


# EXPOSE
# 语法:EXPOSE <port>[/<proto>][<port>[/<proto>]...]
# 解释:EXPOSE 指令用来告诉 Docker 这个容器在运行时会监听哪些端口,如果没有指定协议,则模式是 TCP 协议。
# 示例(这里是 UDP 的 8081 端口和 TCP 的 8080 端口):
EXPOSE 8081/udp 8080


# RUN
# 语法:①RUN<command>  这里将会调用/bin/sh -c <command>
# ②RUN ["executable","param1","param2"]  将会调用 exec 执行,以避免有些时候 shell 方式执行时的传递参数问题,而且有些基础镜像可能不包含/bin/sh
# 解释:RUN 指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于 Dockerfile 中定义的下一步操作,RUN 中定义的命令会按顺序执行并提交,这正是 Docker 廉价的提交和可以基于镜像的任何一个历史点创建容器的好处,就像版本控制工具一样。
# 示例:
RUN apt-get update && apt-get install -y apache && apt-get clean
RUN chmod -R 777 /usr/


# CMD
# 语法:
# ①CMD["executable","param1","param2"] #将会调用 exec 执行,首选方式
# ②CMD ["param1","param2"]  当使用 ENTRYPOINT 指令时,为该指令传递默认参数
# ③CMD <command> [<param1><param2>]  将会调用/bin/sh -c 执行
# 解释:CMD 指令中指定的命令会在镜像运行时执行,在 Dockerfle 中只能存在一个,如果使用了多个 CMD 指令,则只有最后一个 CMD 指令有效。当出现 ENTRYPOINT指令时,CMD 中定义的内容会作为 ENTRYPOINT 指令的默认参数,也就是说可以使用 CMD 指令给 ENTRYPOINT 传递参数。
# 注意:RUN 和 CMD 都是执行命令,他们的差异在于 RUN 中定义的命令会在执行 docker build 命令创建镜像时执行,而 CMD 中定义的命令会在执行 docker run 命令运行镜像时执行,另外使用第一种语法也就是调用 exec 执行时,命令必须为绝对路径。
# 示例:
CMD ["echo","Dockerfile CMD demo"]


# ENTRYPOINT
# 语法:①ENTRYPOINT["executable","param1","param2"] 将会调用 exec执行,首选方式
# ②ENTRYPOINT command param1 param2 将会调用/bin/sh-c执行
# 解释:ENTRYPOINT 指令中指定的命令会在镜像运行时执行,在 Dockerfle 中只能存在一个,如果使用了多个ENTRYPOINT 指令,则只有最后一个指令有效。ENTRYPOINT 指令中指定的命令(exec 执行的方式)可以通过docker run 来传递参数,例如 docker run <images>-启动的容器将会把-参数传递给 ENTRYPOINT 指令定义的命令并会覆盖 CMD 指令中定义的默认参数(如果有的话),但不会覆盖该指令定义的参数,例如 ENTRYPOINT["ls"],CMD["/home”],当通过 docker run <image>启动容器时该容器会运行ls /home 命令,当使用 docker run <image> -l启动时该容器会运行 |s -命令,-参数会覆盖 CMD 指令中定义的/home 参数。
# 注意:
# ①当使用 ENTRYPOINT指令时生成的镜像运行时只会执行该指令指定的命令。
# ②当出现 ENTRYPOINT 指令时 CMD 指令只可能(当 ENTRYPOINT 指令使用 exec 方式执行时)被当做ENTRYPOINT 指令的参数使用,其他情况则会被忽略。

今日更新资料已完成,纯属手工敲打,如有错误,请指出!

如果感觉有用,请拿出你发财得小手,点个赞吧!

明日继续在该基础上更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值