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领…

使用Supervisor在Ubuntu中实现后台自启动服务

在Ubuntu系统中&#xff0c;Supervisor是一个非常实用的进程管理工具&#xff0c;它可以让你的应用程序在后台运行&#xff0c;并且在系统启动时自动启动这些应用程序。下面&#xff0c;我将详细介绍如何在Ubuntu中使用Supervisor来实现后台自启动服务&#xff0c;并以一个具体…

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

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

docker推送本地仓库报错

(base) rootainode3:~# dp 192.168.2.186:5000/bert-deepspeed:latest The push refers to repository [192.168.2.186:5000/bert-deepspeed] Get "http://192.168.2.186:5000/v2/": dial tcp 192.168.2.186:5000: connect: connection refused排查思路如下&#xff…

《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图片 预处理 自动定…

实时数仓:基于数据湖的实时数仓与数据治理架构

设计一个基于数据湖的实时数仓与数据治理架构&#xff0c;需要围绕以下几个核心方面展开&#xff1a;实时数据处理、数据存储与管理、数据质量治理、数据权限管理以及数据消费。以下是一个参考架构方案&#xff1a; 一、架构整体概览 核心组成部分 数据源层 数据来源&#xff…

C#中实现线程安全单例模式的多种方法

在C#中实现线程安全的单例模式通常涉及确保类的实例在多线程环境中只被创建一次&#xff0c;并且这个实例在应用程序的生命周期内是唯一的。以下是几种常见的方法来实现线程安全的单例模式&#xff1a; 1. 使用lock关键字 这是最简单和直接的方法之一。通过在创建实例时锁定一…

【HTML+CSS+JS+VUE】web前端教程-1-VScode开发者工具快捷键

VScode打开文件夹与创建文件 1、选择文件夹 2、拖拽文件夹 生成浏览器文件.html的快捷方式 ! 回车vscode常用快捷键列表 代码格式化&#xff1a;shift alt F 向上或向下移动一行&#xff1a; alt up 或者 alt down 快速复制一行代码&#xff1a;shift alt up 或者 sh…

C语言将点分十进制的IP字符串转成4个整数

最近在做lldp的snmp返回值时需要做这样的转换处理&#xff1a;C语言将点分十进制的IP字符串转成4个整数。 这里用两种方式&#xff1a; sscanf格式化处理用 inet_aton函数将ip字符串转成32位的整形&#xff0c;然后再根据bit转成对应的4个整数。 man命令可以确认下sscanf和i…

WebLogic安全基线

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

Unity3D Huatuo热更环境安装与示例项目详解

前言 Unity3D作为一款强大的游戏开发引擎&#xff0c;广泛应用于各类游戏和应用程序的开发中。然而&#xff0c;随着游戏版本的迭代和功能的增加&#xff0c;热更新技术变得越来越重要。Huatuo是一款基于Unity3D的IL2CPP解释执行框架&#xff0c;可以实现对游戏代码的热更新&a…

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. 页面跳转方式 微信小程序提供了多种页面…