docker常用命令及dockerfile编写

docker常用命令及dockerfile编写

    • 1.docker常用命令
      • 1.1镜像相关
      • 1.2容器相关
      • 1.3数据卷
      • 1.4网络模式
    • 2.Dockerfile
    • 3.Dockerfile示例

1.docker常用命令

1.1镜像相关

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

#查看docker版本
docker -v#查看docker默认存放目录
docker info |grep Dir#搜索查找指定镜像
docker search 名称关键字#拉取获取镜像到当前机器上
docker pull 镜像名: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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝&#xff0c;又进来偷我源码啦&#x1f44a;&#x1f44a;&#x1f44a;。欢迎偷源码 &#x1f525;&#x1f525;&#x1f525; 获取免费源码以及更多源码&#xff0c;可以私信联系我 我们常常…

springboot + vue+elementUI图片上传流程

1.实现背景 前端上传一张图片&#xff0c;存到后端数据库&#xff0c;并将图片回显到页面上。上传组件使用现成的elementUI的el-upload。、 2.前端页面 <el-uploadclass"upload-demo"action"http://xxxx.xxx.xxx:9090/file/upload" :show-file-list&q…

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用&#xff1f;GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…

Virgo:增强慢思考推理能力的多模态大语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

照片做成图书小程序开发制作介绍

照片做成图书小程序系统&#xff0c;主要是让用户直接通过小程序选择需要做成书的类型和照片排版布局模板&#xff0c;以及上传照片的数量。照片上传完成后&#xff0c;生成模板图片样式进行预览或编辑修改。修改完成全部保存。保存后生成完整的照片书进行预览没问题&#xff0…

《Spring Framework实战》10:4.1.4.2.详细的依赖和配置

欢迎观看《Spring Framework实战》视频教程 集合 <list/>、<set/>、<map/>和<props/>元素分别设置Java集合类型list、set、map和properties的属性和参数。以下示例显示了如何使用它们&#xff1a; <bean id"moreComplexObject" class&qu…

花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7%

花生好坏缺陷识别数据集,7262张图片&#xff0c;支持yolo&#xff0c;coco json&#xff0c;pasical voc xml格式的标注&#xff0c;识别准确率在95.7% 数据集分割 训练组87&#xff05; 6353图片 有效集8% 606图片 测试集4% 303图片 预处理 自动定…

WebLogic安全基线

WebLogic安全基线 一、 用户权限1 、检查weblogic 的启动用户2 、用户权限整改3 、使用普通用户重启weblogic 二、账户共用1 、检查weblogic 控制台的账户2 、账户共用整改3 、测试登录weblogic 控制台新账户 三、 账户清理1 、检查weblogic 控制台的账户2 、帐户清理整改 四、…

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…

TDv2:一种用于离线数学表达式识别的新型树形结构解码器

TDv2:一种用于离线数学表达式识别的新型树形结构解码器 本文提出了一种针对手写数学表达式识别(HMER)任务的新型树形解码器(TDv2) ,旨在充分利用数学表达式的树结构标签进行更有效的建模和预测。相较于传统的LaTeX字符串解码器,该模型通过采用一个节点分类模块和一个分…

银行信贷管理系统flask

完整源码项目包获取→点击文章末尾名片&#xff01;

WordPress静态缓存插件WP Super Cache与 WP Fastest Cache

引言 WordPress是一款开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;最初作为博客平台开发&#xff0c;现已发展成为一个功能强大的建站工具&#xff0c;支持创建各种类型的网站&#xff0c;包括企业网站、在线商店、个人博客等。它具有用户友好的界面、丰富的插…

onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制

文章目录 1. 页面跳转方式2. 你的场景分析3. 页面生命周期4. 总结5. 建议 在微信小程序中&#xff0c;页面跳转时&#xff0c; onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明&#xff1a; 1. 页面跳转方式 微信小程序提供了多种页面…

【深度学习】通俗理解偏差(Bias)与方差(Variance)

在统计学习中&#xff0c;我们通常使用方差与偏差来衡量一个模型 1. 方差与偏差的概念 偏差(Bais)&#xff1a; 预测值和真实值之间的误差 方差(Variance)&#xff1a; 预测值之间的离散程度 低偏差低方差、高偏差低方差&#xff1a; 图中每个点表示同一个模型每次采样出不同…

生态水文研究中的机器学习与数学建模方法选择

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【LeetCode】力扣刷题热题100道(21-25题)附源码 接雨水 合并区间 字母异位词 滑动窗口 覆盖子串(C++)

目录 1.接雨水 2.合井区间 3.找到字符串中所有字母异位词 4.滑动窗口最大值 5.最小覆盖子串 1.接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码如下所示&#xff1a; class Solution {…

慧集通(DataLinkX)iPaaS集成平台-智能体(Agent)API

功能简介&#xff1a; 该功能下主要是用来管理集成平台对外开放接口得管控以及调用日志信息得查看操作&#xff0c;并支持日志得重放等操作&#xff1b;注&#xff1a;所有触发类单据得日志也可以在此查看(如使用数据触发组件自动触发流程得日志信息) 1.第三方调用接口类日志查…

HTB:Bank[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 提取出靶机TCP开放端口 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用curl对域名进行访问…

创建基本的 Electron 应用项目的详细步骤

创建一个基本的 Electron 应用项目的详细步骤。我们将从安装 Node.js 开始&#xff0c;然后创建项目文件夹并初始化 Electron 项目。 1. 安装 Node.js 首先&#xff0c;确保你已经安装了 Node.js 和 npm。你可以在终端中运行以下命令来检查是否已经安装&#xff1a; node -v…

TDengine + MQTT :车联网时序数据库如何高效接入

现代新能源汽车&#xff0c;作为一种内部系统极为复杂的交通工具&#xff0c;配备了大量传感器、导航设备、应用软件&#xff0c;这些传感器产生的数据都需要上报到车联网平台当中。对于这些车辆的状态数据&#xff08;如车速、发动机转速等&#xff09;、位置数据&#xff08;…