本文已参与「新人创作礼」活动,一起开启掘金创作之路
DockerFile
用来构建docker镜像文件,实质就是命令参数脚本
介绍
Docker构建的步骤:
- 编写一个dockerfile文件
- docker build 构建一个镜像
- docker run 运行一个镜像
- docker push 发布镜像(dockerhub,腾讯云仓库,阿里云仓库)
官方制作镜像:
DockerFile构建
基本知识
- 每个保留关键字必须是大写
- #用来注释
- 脚本语言,所以是从上到下执行的
- 每一行指令都是创建一层镜像
- **DockerFile:**构建文件,定义了一切步骤,是源代码
- **Dockerimages:**由DockerFile构建的镜像,最终发布并被使用的产品
- **Docker容器:**镜像运行起来提供的服务
DockerFile的指令
FROM #基础镜像,一切从这里开始扣减
MAINTAINER #镜像的作者信息
RUN #镜像构建时要运行的命令
ADD #添加内容 (比如构建centos+tomcat,我们在这里反tomcat压缩包)
WORKDIR #镜像的工作目录
VOLUME #镜像的挂载目录
EXPOSE #镜像端口配置
CMD #指定容器启动时要运行的命令,可以替换命令
ENTRYPOINT #指定容器启动时要运行的命令,可以追加命令
ONBUILD #触发指令
COPY #类似于ADD 将我们的文件拷贝到镜像中
ENV #构建的时候设置环境变量
CMD和ENTRYPOINT的区别
- 如果使用CMD,那么后面运行镜像时再加命令,此时后加的命令会将前面的DockerFile内的CMD命令替换
- 如果使用ENTRYPOINT,那么不会想CMD那样,它会以追加的形式追加命令(直接拼接到后面)
小结
#镜像:
docker images #查看本地主机上的镜像
-a #列出所有镜像
-q #列出镜像的id
docker search #搜索镜像
--filter=过滤参数=数值 #过滤相应的数值参数
docker pull 镜像名 #下载镜像(默认下载最新本)
:版本号 #下载指定版本
docker rmi -f 镜像id #删除指定镜像
多个镜像id #同时删除多个指定镜像
$(docker images -aq) #将所有的镜像全部删除
#容器:
docker run 镜像名 #新建了一个容器
--name=“Name” #给容器命名
-it #使用交互式运行,进入容器查看内容
-p #指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口 #主机端口映射到容器端口 (最常用的)
-p 容器端口
容器端口
-P #随机指定容器端口
docker ps #当前运行的容器
-a #列出曾经的运行的和现在运行的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
exit #容器停止并退出
ctrl + P + Q #容器不停止退出
docker rm 容器id #删除指定容器,不能删除正在运行的容器
-f 容器id #强制删除
-f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm -f #删除所用容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
docker logs -t -f #显示全部日志(包括时间戳)
docker -tf --tail number #指定要显示多少条的日志
docker top 容器id #显示容器运行信息
docker inspect 容器id #显示容器元数据
docker exec -it 容器id bsahShell #进入容器开启另一个终端
docker attach 容器id #进入容器并上次退出的终端页面
docker cp 容器id:容器内路径 目的主机路径 #将容器内的文件拷贝到本地主机上
docker stats #查看doker的cup状态