Docker详解及常用命令介绍

news2024/11/23 21:39:46

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
在这里插入图片描述在这里插入图片描述

文章目录

  • 一、Docker简介
  • 二、Docker与虚拟机区别
  • 三、Docker镜像与容器介绍
  • 四、CentOS安装Docker
    • 4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载
    • 4.2 安装yum工具
    • 4.3 更新本地镜像源
    • 4.4 安装docker
    • 4.5 启动、停止、重启、查看版本、设置开机自启
  • 五、Docker基本操作
    • 5.1 镜像操作
    • 5.2 容器操作
    • 5.3 数据卷操作
      • 5.3.1 容器与数据耦合带来的问题
      • 5.3.2 数据卷介绍
      • 5.3.3 数据卷操作命令
  • 六、自定义镜像Dockerfile
  • 七 、docker-Compose介绍

但是

一、Docker简介

Docker是一个开源的平台,可以帮助开发者快速构建、部署和管理软件应用程序它通过将应用程序打包为Docker镜像,使得应用程序可以在任何环境中运行,而无需考虑底层基础设施的差异。Docker提供了一系列工具,包括Dockerfile、docker-compose、docker images等,帮助开发者从零构建一个应用程序到发布上线的整个过程。

Docker是一个快速交付应用,运行应用的技术:

  1. 可以将程序及其依赖,运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  2. Docker允许开发中将应用、依赖、函数库、一起打包,形成可移植镜像
  3. 运行时利用沙箱机制形成隔离容,各个应用互不干扰
  4. 启动,移出都可以通过一行命令完成,方便快捷

二、Docker与虚拟机区别

  1. docker 硬盘占用一般为MB,虚拟机一般为GB2
  2. docker 是一个系统进程;虚拟机是在操作系统中的操作系统
  3. docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

三、Docker镜像与容器介绍

镜像(image): Docker将应用程序及其所需的依赖,函数库,环境,配置,等文件打包在一起,称为镜像

容器(Container) : 镜像中应用程序运行形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
在这里插入图片描述

四、CentOS安装Docker

4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

4.2 安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

4.3 更新本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

4.4 安装docker

Centos7如下:

yum install -y docker-ce

注意Centos8如下:

yum install docker-ce docker-ce-cli containerd.io -y

4.5 启动、停止、重启、查看版本、设置开机自启

systemctl start docker  # 启动docker服务

systemctl enable docker     # 设置开机自启docker

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

查看是否启动

 systemctl status docker  # 查看服务状态

在这里插入图片描述

查看版本

docker -v

五、Docker基本操作

5.1 镜像操作

  • 镜像名称一般分为两部分组成:[repository]:[tag]
  • 在没有指定tag是,默认是latest,代表最新版本的镜像
 docker images        查看所有镜像
 docker pull     拉取自己需要的镜像,不指定则默认最新
 docker rmi      删除镜像
 docker save -o    保存镜像为tar
 docker load -i   重新加载
 docker push   --- 把本地镜像推送到远程仓库上

在这里插入图片描述

5.2 容器操作

 docker run  --naem containerName -80:80 -d nginx     -- 创建并运行一个容器,处于运行状态
 docker stop                                             停止一个运行的容器
 docker start                                            让一个停止的容器再次运行
 docker restart                                          重新启动一个或者多个容器
 docker exec -it containerName bash                    -- 进入到docker容器中
 docker logs    -f containerName                         -- 查看容器的运行日志
 docker rm                                              -- 容器的删除
 docker ps                                             -- 查看容器信息

在这里插入图片描述

5.3 数据卷操作

5.3.1 容器与数据耦合带来的问题

  1. 不便于修改
  2. 数据不可复用:在容器内的修改对新创建的容器是不可复用的
  3. 升级维护困难:数据在容器内,升级或更换容器必然会导致数据丢失

5.3.2 数据卷介绍

数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录.

在这里插入图片描述

5.3.3 数据卷操作命令

**命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:**

docker volume                          
               create  创建一个volume
               inspect  显示一个或多个volume的信息
               ls  列出所有的volume
               prune  删除未使用的volume
               rm  删除一个或多个指定的volume

六、自定义镜像Dockerfile

镜像结构:

  1. 基础镜像(Baselmage): 包含基本的系统函数库,环境变量.文件系统
  2. 层(Layer) :在基础镜像基础上添加安装包,依赖,配置等,每次操作都形成新的一层
  3. 入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数

Dockerfile

  • Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
  • Dockerfile的第一行必须是FROM,从一个基础镜像来构建
  • 基础镜像可以是基本操作系统,也可以是其他人制作好的镜像例如:java8-8-alpine

在这里插入图片描述

FROM java:8-alpine    
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar

构建命令
空格后面跟.,表示Dockerfile所在目录

docker build-t javaDemo:1.0 .     

七 、docker-Compose介绍

  1. Docker-compose 可以基于Compose文件快速部署分布式应用,而无需手动一个个创建和运行容器

  2. Docker-compose文件可以看做是将多个docker run 命令写到一个文件中,只是语法稍有差异

  3. Docker-compose是一个文本文件,通过指令定义集群中的每个容器如何运行

  4. Docker-compose中的服务之间可以通过服务名访问

案例:

version: "3.2"    

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10000:10000"

部署启动

docker-compose up -d

Compose 常用命令与配置

docker-compose logs -f userservice  查看日志
docker-compose  restart gateway userservice ......等等   重启

在这里插入图片描述
重点
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

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

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

相关文章

【5】构建手写数字模型

1 mnist数据集 下载数据集: 手动下载:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges tf程序下载: tensorflow2.x将数据集集成在Keras中。tensorflow2.0,更新删除了input_data的函数。 import…

19.主题时钟

主题时钟 html部分 <div class"btn">黑色</div><div class"clock-container"><div class"time">21</div><div class"date">21</div><div class"clock"><div class&qu…

经典面试题(力扣,接雨水)

接雨水 方法一思路测试代码复杂度测试结果 方法二思路测试代码复杂度测试结果 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]…

Java基础——Stream类

文章目录 1 概述2 获取Stream对象3 常用API4 收集Stream流5 总结 1 概述 Stream类用于简化集合和数组操作的API。 Stream类提供了很多可以简化集合操作的api&#xff0c;比如过滤元素 示例如下&#xff1a; 假如一个List集合中存储着字符串&#xff0c;从这些字符串中找到以“…

Java反射 -- 详细介绍 (框架核心)

反射 是 Java框架 的核心 &#xff0c;无论是Tomcat、SpringMVC、Spring IOC、Spring AOP、动态代理 &#xff0c;都使用到了 反射 反射的作用简单讲就是 无需 new 对象&#xff0c;就可以动态获取到一个类的全部信息&#xff0c;包括 属性、方法&#xff0c;构造器&#xff0…

iOS--属性关键字

定义 chat&#xff1a; 在iOS开发中&#xff0c;属性关键字是用于声明类的属性&#xff08;实例变量&#xff09;的修饰符。属性关键字可以影响属性的访问权限、内存管理和生成相关的getter和setter方法。 属性关键字有哪些&#xff1f; 分类属性关键字原子性atomic、nonato…

dpdpdp

这里写目录标题 139. 单词拆分322. 零钱兑换300. 最长递增子序列120. 三角形最小路径和64. 最小路径和63. 不同路径 II5. 最长回文子串&#xff08;回文dp&#xff09;⭐97. 交错字符串⭐&#xff08;抽象成路径问题&#xff09;221. 最大正方形⭐ 139. 单词拆分 class Soluti…

实用便捷!一站式BI系统推荐

在企业数字化转型过程中&#xff0c;BI系统可以建立业务、数据的双驱引擎&#xff0c;形成业务、数据的互补作用&#xff0c;通过建立数字化技术架构&#xff0c;明确企业的战略定位和业务目标&#xff0c;从而支撑实现这个目标。而一站式BI系统&#xff0c;则是指可以轻松从数…

使用Soft-RoCE实践RDMA

RDMA介绍 RDMA&#xff08; Remote Direct Memory Access &#xff09;意为远程直接地址访问&#xff0c;通过RDMA&#xff0c;本端节点可以“直接”访问远端节点的内存。所谓直接&#xff0c;指的是可以像访问本地内存一样&#xff0c;绕过传统以太网复杂的TCP/IP网络协议栈读…

Github 上有没有优秀的Java 项目推荐?

前言 下面是我精心整理的GitHub上关于Java的高Star的项目&#xff0c;可以自己选择去练手喔&#xff0c;希望对你有帮助~ 我们直接进入正题——> 1、 JavaGuide Star&#xff1a;135k JavaGuide指的是一份完整的Java学习指南或学习资料&#xff0c;它提供了Java编程语言…

AcWing4118. 狗和猫

输入样例1&#xff1a; 3 6 10 4 0 CCDCDD 4 1 2 0 CCCC 4 2 1 0 DCCD输出样例1&#xff1a; Case #1: YES Case #2: YES Case #3: NO样例1解释 在 Case 1 中&#xff0c;一共有 1010 份狗粮和 44 份猫粮。 前两只动物是猫&#xff0c;喂食它们后&#xff0c;还剩下 22 份猫粮…

数据结构之BinaryTree(二叉树)的实现

BinaryTree要实现的方法 总结 remove不在BinNode里&#xff0c;而是BinTree里 递归的两种写法 从上往下&#xff1a;同一对象的递归&#xff08;参数多一个&#xff0c;判空用一句话&#xff09;&#xff0c;子对象的递归&#xff08;参数void&#xff0c;判空用两句话&#…

算法分析和设计简答题

算法分析和设计简答题 1.1分治法的算法思想&#xff08;重点&#xff09; 1.2动态规划的算法思想&#xff08;重点&#xff09; 1.3贪心算法的算法思想 1.4回溯算法的算法思想 1.5分支限界法的算法思想 1.6时间复杂度的定义(最好/一般/坏)&#xff0c;有什么意思 1.7渐进记号…

【Git】分支合并冲突产生与解决

文章学习自&#xff1a;麦兜搞IT&#xff0c;如有侵权&#xff0c;告知删除 文章目录 前言1 Fast Forword 合并1.1 核心原理1.2 举个栗子1.3 经验之谈 2 three way merge2.1 核心原理2.2 举个栗子&#xff08;不带冲突&#xff09;2.3 带冲突的three way merge 3 变基rebase3.…

Windows上配置Python环境变量

Python配置环境变量 &#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; Python下载官网&#xff1…

GB28181设备接入端如何播放语音广播数据?

技术背景 语音广播功能是GB28181设备接入端非常重要的功能属性&#xff0c;语音广播让终端和平台之间&#xff0c;有了实时双向互动&#xff0c;可以满足执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、…

Docker介绍以及实战教程

Docker简介 Docker为什么出现 从事软件开发的朋友&#xff0c;可能经常会碰到以下场景&#xff1a;运维&#xff1a;你这程序有Bug啊&#xff0c;怎么跑不起来啊&#xff01;开发&#xff1a;我机子上能跑啊&#xff0c;你会不会用啊究其原因还是开发环境与生产环境不同造成的…

基于linux下的高并发服务器开发(第二章)- 2.18 内存映射(2)

1.如果对mmap的返回值(ptr)做操作(ptr), munmap是否能够成功? void * ptr mmap(...);ptr; 可以对其进行操作munmap(ptr, len); // 错误,要保存地址 2.如果open时O_RDONLY, mmap时prot参数指定PROT_READ | PROT_WRITE会怎样? 错误&#xff0c;返回MAP_FAILEDopen()函数中的…

cpolar+calibre搭建自己的kindle书库

cpolarcalibre搭建自己的kindle书库 在我们身边众多的便携电子设备中&#xff0c;Kindle无疑是最为矛盾的设备之一&#xff0c;很多人在买它时都想读书破万卷&#xff0c;可是到最后Kindle的归宿都是盖泡面。尽管如此&#xff0c;当亚马逊不讲武德&#xff0c;打算将Kindle真正…