Docker总结

准备环境:

  • VMware17
  • Ubuntu18.04(LTS):https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1. Docker前瞻


docker相关文档:

  • docker官网地址 : https://www.docker.com/
  • docker文档地址 : https://docs.docker.com/
  • docker镜像仓库 : https://hub.docker.com/

Happy Docker

1、docker是什么:它是一个开源的容器引擎,可以方便管理容器,而且容器采用沙箱机制相互隔离。

2、docker解决什么问题:解决软件环境的迁移问题。

3、容器和虚拟机的区别:

  • 容器:是应用程序的抽象(把代码和依赖关系打包在一起),占用资源更少,启动速度快,轻巧灵活。
  • 虚拟机:是对物理硬件的抽象(将一台服务器变成多台服务器),占用资源多,笨重强大。

image-20240706011000322

4、docker存储:

  • 挂载目录,示例: -v /宿主机目录:容器目录
  • 数据卷映射,示例:数据卷:容器目录

5、docker网络:创建自定义网络,实现主机名作为稳定域名访问。(可以让相同网络容器可以互相通信)

#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 \
-v /app/rd1:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=master \
-e REDIS_PASSWORD=123456 \
--network mynet --name redis01 \
bitnami/redis

#从节点
docker run -d -p 6380:6379 \
-v /app/rd2:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=slave \
-e REDIS_MASTER_HOST=redis01 \
-e REDIS_MASTER_PORT_NUMBER=6379 \
-e REDIS_MASTER_PASSWORD=123456 \
-e REDIS_PASSWORD=123456 \
--network mynet --name redis02 \
bitnami/redis

2. 安装Docker


本文基于ubuntu环境安装,如果缺权限的话 前面加个sudo即可。

1、关闭防火墙(后续对外访问就不需要手动暴露端口了,方便测试)

sudo ufw disable

#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable

2、安装docker

#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc

#更新软件包
sudo apt-get update

#安装一些工具
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

#安装docker
sudo apt install docker.io 

#验证dokcer是否安装成功
docker --version

#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now

#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker

3. Docker常用命令


image-20240706032721566

1、docker服务的状态管理:

  • systemctl status docker:查看docker的运行状态
  • systemctl stop docker:关闭docker
  • systemctl start docker:启动docker
  • systemcl restart docker:重启docker
  • systemctl enable docker:设置docker为开机自启

2、docker镜像管理:

  • 搜索镜像:docker search 镜像名
  • 拉取镜像:docker pull 镜像名:tag 如果不指定tag会拉取lastest
  • 查看镜像:docker images
  • 删除镜像:docker rmi 镜像名:tag

3、docker容器管理:

  • 创建容器:docker run -di --name=容器名 镜像名:tag
  • 关闭容器:docker stop 容器名
  • 启动容器:docker start 容器名
  • 删除容器:docker rm 容器名
  • 查看容器:
    • docker ps -a 查看所有容器,包括未运行的
    • docker ps 查看正在运行的容器
  • 进入容器:docker exec -it 容器名 /bin/bash

4、docker的数据卷:

  • 数据卷:是被docker管理的文件夹。

  • 数据卷的用处:可以把数据卷和 某个容器里的路径进行绑定, 实现容器与宿主机之间文件的双向自动传输

    把文件放到宿主机的数据卷里:docker会自动把文件同步到容器里

    容器里的文件有变化:docker会自动同步到宿主机的数据卷里

  • 数据卷操作命令:

    列出数据卷:docker volume ls

    创建数据卷:docker volume create 数据卷名称

    查看数据卷详情(实际路径):docker volume inspect 数据卷名称

    删除数据卷:docker volume rm 数据卷名称

  • 创建容器并绑定数据卷:

    docker run -di --name=容器名 -v 数据卷名:容器里的路径 镜像名:tag

    docker run -di --name=容器名 -v 宿主机里的路径:容器里的路径 镜像名:tag

    注意:-v参数里的路径,全部都得是 绝对路径

5、镜像备份:

  • 导出镜像:docker save -o 文件名称 镜像名称
  • 加载镜像:docker load -i xxx.tar

4. Dockerfile


文档:https://docs.docker.com/reference/dockerfile/

Dockerfile作用:制作自定义镜像。

Dockerfile它是以一种基础镜像为基础,编写一系列的docker指令,每条指令构建一层镜像,通过这些指令一层层最终构建出一个目标镜像出来。

常见指令作用
FROM指定镜像基础环境
RUN运行自定义命令
CMD容器启动命令或参数
LABEL自定义标签
EXPOSE指定暴露端口
ENV环境变量
ADD添加文件到镜像
COPY复制文件到镜像
ENTRYPOINT容器固定启动命令
VOLUME数据卷
USER指定用户和用户组
WORKDIR指定默认工作目录
ARG指定构建参数

示例:

#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar   #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]  #运行命令

# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .

5. 服务编排


服务编排或容器编排:按照一定的业务规则批量管理容器。

Docker Compose是一个用于定义和运行多个Docker容器的编排工具。

可以一条命令启动多个容器。主要是解决了容器与容器之间如何管理编排的问题。

使用Docker Compose 有三个步骤:

  1. 利用Dockerfile定义运行环境(如果已有镜像,可省略这一步)
  2. 使用docker-compose.yml定义组成应用的各服务
  3. 运行docker-compose up -d启动应用

安装docker-compose:

# 下载docker compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置权限
chmod +x /usr/local/bin/docker-compose

# 查看版本 
docker-compose -version

如果要卸载docker-compose,可执行如下命令:

# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

docker-compose常用命令:

# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!

#创建容器并后台启动
docker-compose up -d

#直接启动容器
docker-compose start

#其它命令:
docker-compose help # 查看帮助
docker-compose stop  # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器

示例:

1、创建docker-compose目录

mkdir ~/docker-compose
cd ~/docker-compose

2、编写docker-compose.yaml文件

version: "3.0"
services:
  redis:
    container_name: redis 
    image: redis:5.0
    ports:
      - 6379:6379
  nginx:
    container_name: nginx
    image: nginx:1.14.2
    ports:
      - 80:80
    volumes:
      - /root/volumes/nginx/html:/usr/share/nginx/html
  tomcat:
    container_name: tomcat
    image: tomcat:8.5.88
    ports:
      - 8080:8080
    volumes:
      - /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps

3、启动

# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose

# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

tomcat的优化和tomcat和nginx实现动静分离:

tomcat的优化 tomcat自身的优化 tomcat的并发处理能力不强。大项目不使用tomcat做为转发动态的中间件&#xff08;k8s集群&#xff0c;python&#xff0c;rubby&#xff09;&#xff0c;小项目会使用&#xff08;内部使用&#xff09;&#xff0c;动静分离。 优化tomcat的启动…

【Spring Boot】Spring AOP动态代理,以及静态代理

目录 Spring AOP代理一. 代理的概念二. 静态代理三. JDK代理3.1 重写 invoke 方法进⾏功能增强3.2 通过Proxy类随机生成代理对象 四. CGLIB代理4.1 自定义类来重写intercept方法4.2 通过Enhancer类的create方法来创建代理类 五. AOP源码剖析 总结(重中之重&#xff0c;精华) Sp…

一款简单、免费的web文件共享服务器

#共享文件# #远程访问# #手机访问# 文件共享已成为我们日常生活和工作中不可或缺的一部分。它如同一条无形的纽带&#xff0c;将人们紧密地联系在一起&#xff0c;促进了信息的快速传播和交流。 文件共享的魅力在于其打破了地域和时间的限制。无论我们身处世界的哪个角落&…

深度解析:当下流行的人工智能大模型生成逻辑

在过去的几年里&#xff0c;人工智能领域经历了前所未有的革新&#xff0c;其中最引人注目的就是大规模预训练模型的崛起。这些模型&#xff0c;如GPT系列、BERT、T5、DALLE和CLIP等&#xff0c;凭借其强大的语言理解和生成能力&#xff0c;已经在自然语言处理&#xff08;NLP&…

Springboot使用WebSocket发送消息

1. 创建springboot项目&#xff0c;引入spring-boot-starter-websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>完整项目依赖 <?xml ver…

聊聊使用GROUP_CONCAT函数遇到的坑

问题现象 在工作中我们或多或少都会使用到函数group_concat&#xff0c;它可以合并多行的某列(或多列)数据为一行&#xff0c;默认以逗号分隔。 最近碰到了一个线上bug&#xff0c;查询DB时返回的结果信息mysql自动截取了&#xff0c;导致页面显示的时候只显示了前半段结果。 …

MATLAB环境下4种噪声生成

生成噪声包括: 1)粉红色(闪烁)噪声-功率谱密度斜率-3 dB/oct。&#xff0c; - 10db /dec 2)红色(布朗)噪声-功率谱密度斜率-6 dB/oct。&#xff0c; - 20db /dec 3)蓝色噪声-功率谱密度斜率3 dB/oct。&#xff0c; 10db /dec 4)紫色(紫色)噪声-功率谱密度斜率 6db /oct。&…

抖音商城自定义小程序源码系统 前后端分离 带完整的源代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;电商平台的便捷性和个性化体验成为了吸引用户的关键。随着短视频平台的兴起&#xff0c;抖音作为其中的佼佼者&#xff0c;其商城小程序成为了商家连接消费者的新阵地。为了帮助商家快速构建个性化、高效的小程序店铺&#xff0c;本文将…

Java线程的创建·启动和休眠

一.线程的创建和启动 Java中创建线程的两种方式 ◆继承java.lang.Thread类 ◆实现java.lang.Runnable接口 ◆使用线程的步骤 继承Thread类创建线程 ◆自定义线程类继承自Thread类 ◆重写run()方法&#xff0c;编写线程执行体 ◆创建线程对象&#xff0c;调用start()方法启动…

基于大数据的电商产品评论数据分析与可视化--Python

基于大数据的电商产品评论数据分析与可视化 1绪论 1.1研究背景与意义阐述 随着电子商务领域的迅猛扩张,电商平台累积了海量的用户评价信息。这些建议不只是包含了消费者对产品的评价和经验分享,更重要的是,它们包含了丰富且价值巨大的信息。深度分析在线用户反馈不仅揭示…

#数据结构 链表

单向链表 1. 概念 单向链表 单向循环链表 双向链表 双向循环链表 解决&#xff1a;长度固定的问题&#xff0c;插入和删除麻烦的问题 1、逻辑结构&#xff1a; 线性结构 2、存储结构&#xff1a; 链式存储 链表就是将 结点 用链串起来的线性表&#xff0c;链就是 结点 中的…

《C++20设计模式》命令模式思考

文章目录 一、前言二、分析 拆解1、经典命令模式2、撤销操作3、关于Invoker类 三、实现 一、前言 哎&#xff01;只要是书上写的和经典设计模式不同&#xff0c;我就会很伤脑筋。&#x1f629; 命令模式到底是干什么的&#xff1f; 答&#xff1a;命令的发送者和接收者完全解…

环境配置05——conda创建虚拟环境指定版本torch与python

版本选择&#xff1a; python版本3.11.8torch版本2.1.2 1.创建环境 conda create -n t212p311 python3.11.8 2.下载torch pytorch-wheels-cu121安装包下载_开源镜像站-阿里云 3. 安装torch 进入虚拟环境 activate t212p311 进入torch安装包所在目录&#xff0c;安装torc…

html+css+js随机验证码

随机画入字符、线条 源代码在图片后面 点赞❤️关注&#x1f60d;收藏⭐️ 互粉必回 图示 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"…

将QComboBox下拉项中的文本居中、居右

目录 1. 需求提出 2. 解决方法 1. 需求提出 QComboBox下拉项中的文本默认是居左的&#xff0c;如下&#xff1a; 有时需要将下拉项中的文本居中、居右。如何实现&#xff1f; 2. 解决方法 首先想到的是通过样式表来解决&#xff0c;但找遍Qt Assist和网络&#xff0c;都没这…

MySQL存储与优化 一、MySQL架构原理

1.MySQL体系架构 MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层 (1)网络连接层 客户端连接器&#xff08;Client Connectors&#xff09;&#xff1a;提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术&#xff0c;例如常…

EE trade:市价建仓的优缺点是什么

在金融市场的复杂环境中&#xff0c;市价建仓策略作为一种常见的交易手段&#xff0c;其优缺点成为了投资者关注的焦点。通过深入分析&#xff0c;我们可以更全面地理解这一策略的利弊&#xff0c;从而在实际操作中做出更加明智的决策。 市价建仓优点分析 快速执行 市价建仓…

鸿蒙系统:未来智能生态的引领者

在当今这个日新月异的互联网领域&#xff0c;操作系统作为连接硬件与软件的桥梁&#xff0c;其重要性不言而喻。随着华为鸿蒙系统&#xff08;HarmonyOS&#xff09;的崛起&#xff0c;一场关于操作系统未来的讨论再次被推向高潮。 鸿蒙OS&#xff0c;华为的全新力作&#xff…

从nginx返回404来看http1.0和http1.1的区别

序言 什么样的人可以称之为有智慧的人呢&#xff1f;如果下一个定义&#xff0c;你会如何来定义&#xff1f; 所谓智慧&#xff0c;就是能区分自己能改变的部分&#xff0c;自己无法改变的部分&#xff0c;努力去做自己能改变的&#xff0c;而不要天天想着那些无法改变的东西&a…

2024年电脑监控软件排行榜(真实测评推荐七款电脑监控软件)

在信息化快速发展的今天&#xff0c;企业对员工电脑活动的监控变得尤为重要。有效的电脑监控软件不仅可以提升员工的工作效率&#xff0c;还能防止信息泄露&#xff0c;保障企业的数据安全。本文将介绍几款知名的电脑监控软件&#xff0c;并对其特点进行详细分析&#xff0c;帮…