docker常用命令及dockerfile编写

1.docker常用命令

1.1镜像相关

镜像相当于是一个模板,可以实例化出很多个容器;

#查看docker版本
docker -v

#查看docker默认存放目录
docker info |grep Dir

#搜索查找指定镜像
docker search 名称关键字

#拉取获取镜像到当前机器上
docker pull 镜像名:tag版本号

#推送镜像到镜像仓库
docker push 镜像名:tag版本号
#查看本地镜像
docker images

#修改镜像名称和标记
docker tag  镜像id  新镜像名:新tag
docker tag  旧镜像名:旧tag  新镜像名:新tag

#删除镜像
docker rmi 镜像id
docker rmi 镜像名:tag版本

#列出所有镜像的id
docker images -q

#查看镜像提交记录
docker history 镜像id
docker history 镜像名:tag版本

#将镜像导出为tar文件
docker save  源镜像id > 保存后的文件名.tar
docker save  源镜像名:源tag版本 > 保存后的文件名.tar

#导入镜像镜
docker load < 镜像文件.tar 

1.2容器相关

容器是镜像创建的实例,它可以启动/删除/停止等,容器与容器之间是相互隔离的;

#用指定镜像来运行容器
docker run -d --name <运行后容器名> <镜像id/镜像name:tag版本标签> /bin/bash 

-d 是指后台运行不会近入到容器,
--name 是指运行后容器的名字 ,
--privileged=true 获取宿主机的root权限,
--restart=always重启docker后自动重启容器,
-p 宿主机端口:容器端口 指定容器中的端口映射,
-P 容器端口随机映射到主机,
--net=host/none/dridge选择网络模式不写则默认第三种,
-v 宿主机目录:容器目录 和容器挂载共享目录

#查看正在运行的容器
docker ps

#查看所有容器
docker ps -a

#列出所有容器的id,加上-q参数则只显示id
docker ps -qa

#删除容器
docker rm <容器id>
docker rm <容器name>

#启动/停止/重启运行指定容器
docker start <容器id/容器名name>
docker stop <容器id/容器名name>
docker restart <容器id/容器名name

#进入指定容器内部
docker exec -it <容器id/容器名name> /bin/bash
-it 是指以终端的方式进行交互;

#容器文件复制到主机中
docker cp <容器id/容器名name>:<容器中源文件路径> <主机中目标路径>
#如:docker cp testname:/root/test.txt /home

#主机文件复制到容器中
docker cp <主机源文件路径> <容器名称/id>:<目标容器路径>
#如:docker cp /home/test.txt testname:/root/

#导出本地容器为tar文件
#export导出的文件再import回去时无法保留镜像所有历史不能进行回滚操作
docker export id > 文件名.tar  

#导入容器
#导入容器会将容器变成一个新的镜像
docker import 源文件.tar  新名称:tag版本标签

#提交容器为镜像  -m提交记录 ,-a提交作者
docker commit -m="xxx" -a="xxx" <容器id/容器name> <提交为镜像的名字>
#如:docker commit -m="test" -a "yu" mynginx testnginx

#修改指定容器的参数配置
#不停止容器的情况下更新参数主要用于更新资源配置相关参数,无法更新挂载点、端口映射;
docker container update  <更新参数>=数值 <容器名称/id>
#可更新的配置项:
#设置容器cpu调度周期时长
--cpu-period
#设置容器cpu调度周期可占用时间的最大时长
--cpu-quota
#设置容器可使用的cpu数量
--cpus
#设置容器可使用的最大内存
--memory
#设置容器可使用的内核内存最大数
--kernel-memory
#设置容器可运行的最大进程数
--pids-limit
#设置容器重启策略,值可以是:
--restart
#no,默认策略
#on-failure,容器错误退出时重启
#always,任何方式退出都会重启
#unless-stopped,总数重启容器,
--restart

1.3数据卷

对容器内的数据进行持久化操作,容器之间实现数据共享,即使容器被删除挂载的数据也保留下来

#运行指定容器并挂载目录,-p进行端口映射,-v进行目录挂载,需要注意的是挂载时主机目录,会覆盖掉容器中的目录
docker run -d --name <设置容器名> -p <主机端口>:<容器端口> -v <主机目录><容器目录> <指定镜像名>:<tag版本标签>  
# 如:docker run -d --name mynginx -p 1080:80 -v /root/ngconf:/etc/nginx/conf.d/ -v /root/ngdata:/temp nginx:1.22.1

1.4网络模式

--net=指定;

--net=host
#容器不会虚拟自己的网卡和ip而是和宿主机共用一个IP和端口

--net=bridge
#docker默认的网络配置,容器独立使用一个网卡,并连接到docker0虚拟网卡上面,通过docker0与宿主机进行通信

--net=none
#关闭了容器的网络功能无法访问网络,与外部网络隔离

--net=container:<容器name/容器id>
#指定一个已存在的容器共享ip、端口范围

2.Dockerfile

dockerfile分为四部分:
基础镜像信息
维护者信息
镜像操作指令
容器启动时默认要执行的指令
如下:
FROM指令:
功能
用于指定基础镜像,并且必须是第一条指令,后续的操作都是基于这个镜像的;
语法格式
FROM <image镜像名>:<tag版本标签>

LABEL指令:
功能:用指定dockerfile的作者维护者信息、镜像版本等;
语法格式
LABEL <键key1>=<值value1> <键key1>=<值value1> ...

WORKDIR指令:
功能:设置后续指令的工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效,可以理解为设置这些命令执行的家目录;
语法格式
WORKDIR <目录路径>

USER指令:
功能:指定后续指令的用户上下文;
语法格式
USER <用户名>

RUN指令:
功能:用于指定在镜像构建过程中执行的命令;
语法格式
RUN <命令comm>

CMD指令:
功能:用于指定启动容器时默认要执行的命令,每个Dockerfile只能有一条CMD命令,多条时,最后一条命令会覆盖前面的;
语法格式
CMD <命令comm>

ENTRYPOINT指令:
功能:用于指定容器创建时的主要命令;
语法格式
ENTYPOINT <命令comm>

EXPOSE指令:
功能:用于指定容器监听的端口,告诉Docker服务器容器暴露的端口号;
语法格式
EXPOSE <端口号1> <端口号2> ...

ENV指令:
功能:在容器内部设置环境变量;
语法格式
ENV <键key1>=<值value1> <键key1>=<值value1> ...

ADD指令:
功能:将文件、目录或远程URL复制到镜像中;
语法格式
ADD <源文件、目录路径> <目标路径>

COPY指令:
功能:将文件或目录复制到镜像中;
语法格式
COPY <源文件、目录路径> <目标路径>

VOLUME指令:
功能:为容器创建挂载点;
语法格式
VOLUME <目录路径>

执行Dockerfile
命令:docker build -t <设置镜像名>:<设置镜像标签> 指定dockerfile的目录
如:docker build -t mytest_image:latest ./

3.Dockerfile示例

例子1:我这里编写了一个常用的部署项目前端的静态资源的dockerfile;
步骤描述:

1.拉取nginx基础镜像,nginx:latest;
2.设置了维护信息,tagTest="test.test"3.指定了nginx默认的资源检索目录作为工作目录,/usr/share/nginx/html;
4.将本地压缩文件./test-admin.zip,复制到镜像目录./,这里的./指实际上已经指向了前面设置的WORKDIR,即:/usr/share/nginx/html;
5.解压压缩包后将文件删除,以缩减镜像大小;
6.设置了容器监听的端口,80
7.执行nginx启动命令,nginx -g 'daemon off;'以前台方式启动;
  • vim创建文件并填写以下内容;
vim Dockerfile
  • 文件内容
FROM nginx:latest
LABEL tagTest="test.test"
WORKDIR /usr/share/nginx/html
COPY ./test-admin.zip ./
RUN unzip ./test-admin.zip && rm -rf ./test-admin.zip
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
  • 执行构建
docker build -t mytest_admin_ng:latest ./
  • 以镜像运行容器实例
docker run -d -p 8111:80 --name adminfront mytest_admin_ng:latest

如图构建镜像:
在这里插入图片描述

如图运行容器实例:
在这里插入图片描述

如图检查容器状态:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值