Docker常用命令 - 黑马学习笔记

news2024/11/17 17:37:06

Docker服务命令

# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 查看docker状态
systemctl status docker
# 重启docker服务
systemctl restart docker
# 设置docker开机自启动
systemctl enable docker

Docker镜像命令

# 查看镜像:查看本地所有镜像
docker images
# 查看所有镜像的id
docker images -q


# 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称

# 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为:名称:版本号,如果版本号不指定则拉取最新版本
# 若不知道镜像版本,可以去hub.docker.com搜索对应镜像查看
docker pull 镜像名称


# 删除镜像:删除本地镜像
docker rmi 镜像id # 删除指定镜像
docker rmi `docker images -q` # 删除本地所有镜像,`docker images -q`相当于查出所有镜像id,然后传给rmi删除

Docker容器相关命令

# 查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
# 创建并启动容器
docker run 参数

参数说明:

  • -i : 保持容器运行,通常和 -t 使用,加入这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
  • -t : 为容器分配一个伪输入终端,通常与 -i 使用
  • -d : 以守护(后台)模式运行容器,通常与 -i 使用
  • -it : 创建的容器一般成为交互式容器,-id 创建的容器一般称为守护式容器
  • –name : 为创建的容器命名
# 进入容器
docker exec 参数 # 退出容器,容器不会关闭
docker exec -it 容器id/容器名 /bin/bash

# 停止容器
docker stop 容器名称

# 启动容器
docker start 容器名称

# 删除容器: 如果容器是运行状态则删除失败
docker rm 容器名称

# 查看容器信息
docker inspect 容器名称

Docker容器的数据卷

数据卷

  • 数据卷是宿主机中的一个目录或文件

  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步

  • 一个数据卷可以被多和容器挂载

  • 一个容器也可以被挂载多个数据卷

数据卷作用

  • 容器数据持久化

  • 外部机器与容器间通信

  • 容器之间数据交换

配置数据卷

# 创建启动容器时,使用 -v 参数设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
  • 注意事项

    1. 目录必须是绝对路径

    2. 若目录不存在,会自动创建

    3. 可以挂载多个数据卷

  • 案例

# 将centos7镜像创建并启动容器命名为c1,将宿主机的/root/data挂载到c1容器的/root/c1
docker run -it --name=c1 -v /root/data:/root/c1 centos:7

# 一个容器挂载多个目录
# 将centos7镜像创建并启动命名为c1,将宿主机的/root/data1、/root/data2 挂载到容器的/root/data1、/root/data2目录
docker run -it --name=c1 -v /root/data1:/root/data1 -v /root/data2:/root/data2 centos:7

# 多个容器挂载一个目录,实现容器间数据共享
docker run -it --name=c1 -v /root/data:/root/data1 centos:7
docker run -it --name=c2 -v /root/data:/root/data2 centos:7

数据卷容器

多容器进行交换

  1. 多个容器挂载同一数据卷

  2. 数据卷容器

配置数据卷容器

# 创建c3数据卷容器,使用 -v 参数设置数据卷 /volume是自定义的容器名称
docker run -it --name=c3 -v /volume centos:7 /bin/bash
# 创建启动c1 c2 容器,使用 --volumes-from 参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash

使用数据卷容器将会在宿主机上的 /var/lib/docker/volumes/…/_data 目录下生成源文件,而多个容器是共同维护该目录下的文件

Docker部署Tomcat

  1. 搜索tomcat镜像
docker search tomcat
  1. 拉取tomcat镜像
docker pull tomcat
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=tomcat \
-p 8000:8000 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:8
  • 参数说明:

    • **-p 8080:8080:**将容器的8080端口映射到主机的8080端口

      **-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps

  1. 使用外部机器访问tomcat

Dockerfile

镜像制作

1、容器转为镜像

# 将容器转为镜像
docker commit 容器id 镜像名称:版本号
# 将镜像打包
docker save -o 压缩文件名称 镜像名称:版本号
# 将压缩的镜像导入
docker load -i 压缩文件名称

挂载到本地的文件无法从容器转为镜像

Dockerfile概念

Dokcerfile关键字

关键字作用备注
FROM指定父镜像指定dockerfile基于那个image构建
MAINTAINER作者信息用来标明这个dockerfile谁写的
LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用
COPY复制文件build的时候复制文件到image中
ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

Dockerfile案例

发布springboot项目

发布springboot项目,注意记住暴露的端口号

由于Docker 官方已经弃用java8,若继续使用需要使用openjdk:8进行替换命令

# 通过dockerfile构建镜像    dockerfile路径可以相对可以绝对,镜像名称是自己设定,版本若不指定默认least,最后加 .
docker build -f dockefile文件路径 -t 镜像名称:版本 .
# 构造镜像后需要运行镜像
docker run -it --name app -p 8000:81 app
构建包含vim的centos

# 通过dockerfile构建镜像    dockerfile路径可以相对可以绝对,镜像名称是自己设定,版本若不指定默认least,最后加 .
docker build -f dockefile文件路径 -t 镜像名称:版本 .
# 构造镜像后需要运行镜像
docker run -it --name c1 centos:7

Docker-Compose

docker-compose参数介绍docker-compose常见的参数命令详解

dockerfile和docker-compose区别 dockerfile 与 docker-compose的区别

Docker私有仓库

Docker私有仓库

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

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

相关文章

MySQL--》MySQL数据库以及可视化工具的安装与使用—保姆级教程

目录 数据库简介 MySQL数据库的安装 配置MySQL环境变量 MySQL数据库的启动与使用 MySQL图形化管理工具 Navicat Preminum工具的使用 数据库简介 大多数情况下,特别是企业级应用中,将数据保存到可掉电式存储设备中供以使用是非常重要的&#xff0c…

牛客2022跨年场

​ F题使用python,就是加了一个end \0,然后寄了好多。 A 猜群名 小沙为了这场元旦比赛绞尽脑汁,他现在在每个题目中藏入了一个字,收集所有的字,并将按照题号排列成一句话即可通过本题**!** 其次关于本场比赛难度预…

jmap 和jstack使用

jmap jmap是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具 1.查看整个JVM内存状态 jmap -heap [pid]2.查看JVM堆中对象详细占用情况 jmap -histo [pid]3.导出整个JVM 中内存信息,可以利用其它工具打开dump文件分析,例如jdk自带的…

Faster RCNN网络源码解读(Ⅸ) --- ROIAlign、TwoMLPHead、FastRCNNPredictor部分解析

目录 一、回顾以及本篇博客内容概述 二、代码解析 2.1 FasterRCNNBase类 2.1.1 forward正向传播 2.2 FasterRCNN类 2.2.1 roi_heads定义 2.3 TwoMLPHead类(faster_rcnn_framework.py) 2.4 FastRCNNPredictor类 2.5 RoIHeads类(roi_…

JavaWeb:用户注册登录案例

1.1 用户登录 1.1.1 需求分析 用户在登录页面输入用户名和密码,提交请求给LoginServlet在LoginServlet中接收请求和数据[用户名和密码]在LoginServlt中通过Mybatis实现调用UserMapper来根据用户名和密码查询数据库表将查询的结果封装到User对象中进行返回在LoginSe…

用或不用大O来优化代码(选择排序)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余,我决定把这本书精彩的部分摘录出来与大家分享。 目录 写在前面 1.选择排序 2.选择排序实战 3.选择排序的实现 4.选择排序的效率 5.忽略常数 6.大O的作用 7.总结 写在前面 大 O 是一…

Java面向对象详解(下)

文章目录📖前言:🏅封装• 封装的概念• 封装的好处• 封装的核心理解🏅继承• 继承的概念•继承的特点● 何时使用继承?● 继承的形式● 继承的传递性● 继承的构造方法🧸super关键字🎇用途&…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.14 平移、旋转、缩放

本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV1te4y1L7Mu 本节讲解平移、旋转、缩放这些变换操作 1. 关联信号槽 首先,在 widget.cpp 的构造中,为 “变换” 复选框,关联信号槽 // 平移、旋转、缩放 conn…

leetcode 2439. 最小化数组中的最大值

给你一个下标从 0 开始的数组 nums &#xff0c;它含有 n 个非负整数。 每一步操作中&#xff0c;你需要&#xff1a; 选择一个满足 1 < i < n 的整数 i &#xff0c;且 nums[i] > 0 。将 nums[i] 减 1 。将 nums[i - 1] 加 1 。 你可以对数组执行 任意 次上述操作&…

程序的环境与预处理 程序的编译与链接

目录 1.程序的翻译环境和执行环境 ​编辑 2.编译链接 运行环境 3.预处理 预定义符号 #define #与## 带副作用的宏参数 宏和函数的对比 命名约定 ​编辑 #undef​编辑 命令行定义 ​编辑 条件编译 文件包含 嵌套文件包含 4.其他预处理指令 1.程序的翻译环境和…

新年伊始,和大家聊聊鲜枣课堂的未来

大家好&#xff0c;我是小枣君。时间过得很快&#xff0c;转眼之间&#xff0c;2022年已经结束了。回首这一年&#xff0c;感觉自己一直都在忙&#xff0c;却想不起来到底忙了些什么。这一年&#xff0c;我的生活和工作节奏&#xff0c;一直都是混乱的。这里面&#xff0c;既有…

罗振宇2023“时间的朋友”跨年演讲原版PPT(附下载)

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点2023年&#xff0c;如何科学制定年度规划&#xff1f;《底层逻辑》高清配图清华大学256页PPT元宇宙研究报告.pdf&#xff08;附下载链接&#xff09;…

软件测试[用例篇]

一. 回顾测试用例 1.测试用例基本要素 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合。 这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。 2.测试用例好处 测试用例可以提高测试效率&#xff08;可以减…

省时省力,高速收费站无线组网解决方案

一、行业背景随着我国高速公路里程数的不断增加&#xff0c;科技水平的不断进步&#xff0c;智能化的高速公路收费站趋势在不断的加强。例如&#xff1b;高速公路收费站智能备份系统&#xff0c;通常情况下收费站、路段分中心和省联网中心之间是需要传输收费数据记录流水、清账…

【1801. 积压订单中的订单总数】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个二维整数数组 orders &#xff0c;其中每个 orders[i] [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。 订单类型 orderTypei 可以分为两种&…

关于el-time-picker使用错误的记录

之前在紧急参与一个PC管理后台的项目&#xff0c;项目的基础架子是花裤衩大佬的vue-element-admin()vue2版本),。其中有一个需求是列表数据中数据回显时候&#xff0c;有关时间部分的数据在回显/编辑的情况下&#xff0c;提交时获取的值有问题。虽然后面解决了&#xff0c;但还…

2023年要来了。顺便分享过来后我的学开车经历

你好呀&#xff0c;读者朋友们&#xff01;我是你们的老朋友 zhen guo时光如梭&#xff0c;转眼间我这边再有1个来小时就2023年了&#xff0c;因时差&#xff0c;很多看到这里的读者朋友应该都已经进入2023年。2022年再也回不去了&#xff0c;就像曾经过去的每一年那样&#xf…

【王道操作系统】2.3.1 进程的同步与互斥

进程的同步与互斥 文章目录进程的同步与互斥1.进程同步2.进程互斥1.进程同步 同步也称为直接制约关系在多道程序环境下&#xff0c;进程是并发执行的&#xff0c;不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等&#xff0c;引入了…

IP协议重点总结(附实例)

文章目录前言一、IP地址1.1 概念1.2 作用1.3 格式1.4 组成1.5 分类二、NAT地址转换2.1 作用2.2 转换过程2.3 NAPT端口映射2.4 现实中的栗子&#xff08;以博主的手机为例&#xff09;2.4.1 连无线WLAN的情况2.4.2 用流量上网2.5 NAT的缺陷三、子网掩码3.1 格式3.2 作用3.3 计算…

windows安装IIS服务

安装ASP的环境IIS 1、使用快捷键 【Win X】 打开系统功能菜单&#xff0c;选择【程序和功能】 2、进入【程序和功能】界面管理后&#xff0c;点击【启用或关闭windows功能】。 3、然后保证以下勾选&#xff0c;其他的默认就行&#xff0c;点击确定。如图&#xff1a; 4、出现…