Dockerfile编写

最近在出题目,Dockerfile有些东西忘记了,重新回顾一下

容器命令

新建并启动容器:docker run [opotions] IMAGE [COMMAND] [Args..]

-i : 交互式运行并且与-t相互运行

-t :新建一个终端

–name:直接跟新建的名字

docker ps:查看所有正在运行的容器 -a查看历史运行过的容器 -l 上次运行的 -n 加个数字显示最近几次创建的容器 -q 显示容器编号 可以以此删除容器

退出容器:两种:1. exit 容器停止退出 2. ctrl+P+Q 容器不停止并退出

启动容器:docker start 容器ID

重启容器: docker restart 容器ID

停止容器: docker stop 容器ID或名字

强制停止容器:docker kill 容器ID或名字

删除已经停止的容器:docker rm 容器ID或名字 没有停止的加个 -f

删除全部 docker rm -f $(docker ps -aq)

-P:随机端口映射

-p:指定端口映射,有以下四种格式

ip:hostPort:containerPort

ip:containerPort

hostPort:containerPort

contarinerPort

启动守护容器: -d 后台运行并返回ID

但是用这种方案启动的docker使用ps命令是看不到其容器进程,因为他已经退出了,Docker后台运行就必须有一个前台进程,如果不是那些一直挂气的命令如(top,tail),就是会自动启动的

查看容器日志 docker logs -f -t –tail 容器ID -t时间戳 -f跟随最新日志打印 –tail跟数字表示最后几条

查看容器内进程:docker top 容器名字、ID

查看容器内部的细节:docker inspect 容器ID

进入正在运行的容器: docker exec -it 容器ID /bin/bash(好像一定要写,试了一下,不写进不去,写不写都可以,也可以是其他命令,则输出命令显示的结果)

或者是docker attach 容器ID,对比一下可以知道exec功能更多

从容器内拷贝文件到主机上:docker cp 容器ID:容器里面的路径 主机本地路径(可以改一下名字)

Docker镜像

是什么?联合文件系统 最大好处 ?共享资源

正常的命令就不说了,看文档就可以。

docker commit 提交容器副本使之成为一个新的镜像

docker commit -m 提交描述的信息 -a 作者 容器ID 要创建的目标镜像名:[标签名]

说明可反着来

容器数据卷

直接命令添加 :docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

容器和宿主机之间数据共享

带权限的docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

Dockerfile添加

可在Dockerfile中使用VOLUMN指令来给镜像添加一个或多个数据卷

新建一个Dockerfile然后通过build运行新建镜像

docker build -f 文件路径 -t 自己的名字空间/centos .

要找默认地址用inspect命令查看

容器数据共享 –volumns-from 各自添加都能共享,而且注意一下这点,数据卷的生命周期一直到没有容器使用它为止

Dockerfile解析

每条保留字指令并且后面至少一个参数,而且是从上往下顺序执行,#表示注释

每条指令都会创建新的镜像层,并对镜像进行提交

保留字指令

FROM 基础镜像

MAINTAINER 镜像维护者的姓名和邮箱

RUN 容器构建时需要运行的命令

EXPOSE 当前容器对外暴露的端口号

WORKDIR 指定创建容器后,终端默认登录进来的工作目录,一个落脚点

ENV 用来在构建镜像过程中设置环境变量

ADD 将宿主机目录下的文件拷贝进京向且ADD命令会自动处理URL和解压tar包

COPY 类似ADD拷贝文件和目录到镜像中1.COPY src dest 2.COPY [“src”,”dest”]

VOLUME 容器数据卷,用于保存数据

CMD 可以有多个命令,但会被docker run之后替换最后一个命令,而且不能追加某个命令的选项

ENTRYPOINT 跟CMD类似,但是可以追加。


听说,打赏我的人最后都成了大佬。



文章目录
  1. 1. 容器命令
  2. 2. Docker镜像
    1. 2.1. 容器数据卷
  3. 3. Dockerfile解析