Docker 从安装到实战

news2024/10/5 0:35:34

Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它利用操作系统级别的虚拟化,将应用程序及其依赖项封装在称为容器的轻量级、可移植的单元中。以下是 Docker 的一些关键特点:

  1. 容器化:Docker 容器可以在任何支持 Docker 的环境中运行,确保应用程序的一致性。

  2. 轻量级:与传统虚拟机相比,Docker 容器共享宿主操作系统的内核,启动速度更快,占用资源更少。

  3. 隔离性:每个容器都是独立的,能够运行不同版本的同一应用程序而不相互干扰。

  4. 可移植性:应用程序及其所有依赖项都可以打包成一个镜像,可以在不同的环境中轻松部署。

  5. 快速扩展:Docker 支持快速创建和销毁容器,便于根据需求调整资源。

  6. 生态系统:Docker 具有广泛的工具和社区支持,包括 Docker Hub(一个公共镜像仓库)和 Docker Compose(用于定义和管理应用程序服务的工具.

一、CentOS 7部署Docker

1. 安装docker依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装完成

2. 设置yum镜像源,下载速度会更快

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装Docker-ccli

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

注:若出现 No more mirrors to try. 错误。先修改vim的配置文件。文件路径如下:

/etc/yum.repos.d/CentOS-Base.repo

配置文件内如下,使用了阿里镜像源

# CentOS-Base.repo  
#  
# The mirror system uses the connecting IP address of the client and the  
# update status of each mirror to pick mirrors that are updated to and  
# geographically close to the client.  You should use this for CentOS updates  
# unless you are manually picking other mirrors.  
#  
# If the mirrorlist= does not work for you, as a fall back you can try the  
# remarked out baseurl= line instead.  
#  
#  
  
[base]  
name=CentOS-$releasever - Base - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#released updates  
[updates]  
name=CentOS-$releasever - Updates - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#additional packages that may be useful  
[extras]  
name=CentOS-$releasever - Extras - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#additional packages that extend functionality of existing packages  
[centosplus]  
name=CentOS-$releasever - Plus - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/  
gpgcheck=1  
enabled=0  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#contrib - packages by Centos Users  
[contrib]  
name=CentOS-$releasever - Contrib - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/  
gpgcheck=1  
enabled=0  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

更新Vim

vim update -y

完成之后,再安装docker即可成功

 4. 启动docker,并设置开启自启动

sudo systemctl start docker 开启docker服务

sudo systemctl enable docker 启动开机自启

5. 验证docker版本

docker -v

二、Docker基础

1. 命令

  • docker --version

    • 显示 Docker 的版本信息。
  • docker info

    • 显示有关 Docker 的系统信息,包括容器、镜像、存储驱动等。

2. 镜像相关命令

  • docker pull <image>

    • 从 Docker Hub 或其他注册服务器拉取镜像。
    • 示例:docker pull ubuntu
  • docker images

    • 列出本地所有镜像。
  • docker rmi <image>

    • 删除指定的镜像。
    • 示例:docker rmi ubuntu
  • docker build -t <image_name>:<tag> <path>

    • 从 Dockerfile 构建镜像。
    • 示例:docker build -t myapp:latest .

3. 容器相关命令

  • docker run <options> <image>

    • 创建并启动一个新容器。
    • 示例:docker run -d -p 80:80 nginx(在后台运行 Nginx,并将主机的 80 端口映射到容器的 80 端口)。
  • docker ps

    • 列出当前正在运行的容器。
  • docker ps -a

    • 列出所有容器,包括已停止的。
  • docker stop <container_id>

    • 停止运行中的容器。
    • 示例:docker stop my_container
  • docker start <container_id>

    • 启动已停止的容器。
  • docker exec -it <container_id> <command>

    • 在运行中的容器内执行命令。
    • 示例:docker exec -it my_container bash
  • docker rm <container_id>

    • 删除指定的容器。
    • 示例:docker rm my_container

4. 网络相关命令

  • docker network ls

    • 列出所有 Docker 网络。
  • docker network create <network_name>

    • 创建新的 Docker 网络。
    • 示例:docker network create my_network
  • docker network inspect <network_name>

    • 查看网络的详细信息。
  • docker network rm <network_name>

    • 删除指定的网络。

5. 卷相关命令

  • docker volume ls

    • 列出所有 Docker 卷。
  • docker volume create <volume_name>

    • 创建新的 Docker 卷。
    • 示例:docker volume create my_volume
  • docker volume inspect <volume_name>

    • 查看卷的详细信息。
  • docker volume rm <volume_name>

    • 删除指定的卷。

6. 日志和监控

  • docker logs <container_id>

    • 查看容器的日志输出。
  • docker stats

    • 实时显示容器的资源使用情况。

7. 其他有用命令

  • docker commit <container_id> <new_image_name>

    • 将容器的当前状态保存为新镜像。
  • docker save -o <file>.tar <image_name>

    • 导出镜像到 tar 文件。
  • docker load -i <file>.tar

    • 从 tar 文件导入镜像。

8. Docker Compose

  • docker-compose up

    • 启动 Docker Compose 定义的服务。
  • docker-compose down

    • 停止并删除 Docker Compose 定义的服务。

2. 数据卷

是一个虚拟的目录,宿主机目录与容器目录之间映射的桥梁。

启动容器并,并数据卷挂载 html为数据卷的名字 /usr/share/nginx/html 容器中的目录
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx



mysql 启动 将本地目录挂载到 容器中的文件
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  mysql

3. 自定义映像

1. 在当前项目目录创建 dockerfile文件。

#使用官方 Python 作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到容器的 /app 目录
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露容器的端口
EXPOSE 5000

# 定义容器启动时执行的命令
CMD ["python", "app.py"]

2. 构建镜像

在包含 Dockerfile 的目录中,使用以下命令构建镜像:

docker build -t my-custom-image:latest 
  • -t 选项用于给镜像打标签(tag),格式为 <name>:<tag>
  • . 表示上下文路径,即 Dockerfile 所在的目录。

3. 运行镜像

构建成功后,可以使用以下命令运行该镜像:

docker run -d -p 5000:5000 my-custom-image:latest
  • -d 表示在后台运行容器。
  • -p 选项用于将主机的端口映射到容器的端口

4. 网络

可以直接ping net_name ,docker会帮我们找到对应的IP地址
docker run -d --name c_name -p 3306:3306  --network net_name image_name

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

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

相关文章

(8)MATLAB瑞利衰落信道仿真1

文章目录 一、瑞利随机变量及其概率密度函数二、仿真代码三、仿真结果四、仿真代码的几点补充说明其他 一、瑞利随机变量及其概率密度函数 在无线通信中&#xff0c;如果信道中存在大量非视距路径而不存在视距路径信号分量&#xff0c;此时&#xff0c;无线信道可以由一个复高…

深入浅出,从源码搞清Bean的加载过程

深入浅出&#xff0c;从源码搞清Bean的加载过程 前言 Bean的加载过程算是面试中的老生常谈了&#xff0c;今天我们就来从源码层面深入去了解一下Spring中是如何进行Bean的加载的 Spring 先看示例代码&#xff1a; public static void main(String[] args) {ApplicationCon…

微服务之间的相互调用的几种常见实现方式对比

目录 微服务之间的相互调用的几种实现方式 一、HTTP HTTP/RESTful API调用工作原理 二、RPC 设计理念与实现方式 协议与传输层 RPC远程调用工作原理 应用场景与性能考量 特点 三、Feign 设计理念与实现方式 协议与传输层 Feign调用的基本流程 Feign调用的工作原理…

算法训练营打卡Day19

目录 1.二叉搜索树的最近公共祖先 2.二叉树中的插入操作 3.删除二叉搜索树中的节点 题目1、二叉搜索树的最近公共祖先 力扣题目链接(opens new window) 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有…

温度转换-C语言

1.问题&#xff1a; 输入一个华氏温度&#xff0c;要求输出摄氏温度。公式为 c5(F-32)/9&#xff0c;取位2小数。 2.解答&#xff1a; scanf("%lf",&f);或者scanf("%f",&f);如果你前面定义的f是用double类型的话&#xff0c;就应该用%lf格式&…

deploy thingsboard

ThingsBoard部署 平台&#xff1a;windows10&#xff0c;idea2022&#xff0c;postgres15 maven仓库 进入thingsboard源码下载目录: 主要执行以下两个命令&#xff1a; mvn编译&#xff1a; mvn clean install -Dmaven.test.skiptrue编译报错时&#xff1a; 清除java进程 t…

计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

UART通信—基于江科大源码基础进行的改进和解析

我就不讲理论了&#xff0c;CSDN上大佬属实多&#xff0c;我就只讲代码了&#xff0c;串口的基本理论&#xff0c;大家去看其他大佬写的吧 一、源文件的组成 1、包含的头文件 stm32f10x.h 是STM32F10x系列微控制器的标准外设库&#xff08;Standard Peripheral Library&…

C语言基础(7)之操作符(1)(详解)

目录 1. 各种操作符介绍 1.1 操作符汇总表 2. 移位操作符 2.1 移位操作符知识拓展 —— 原码、反码、补码 2.2 移位操作符讲解 2.2.1 右移操作符 ( >> ) 2.2.2 左移操作符 ( << ) 3. 位操作符 3.1 & (按位与) 3.2 | (按位或) 3.3 ^ (按位异或) 3.4…

【AI学习】Mamba学习(二):线性注意力

上一篇《Mamba学习&#xff08;一&#xff09;&#xff1a;总体架构》提到&#xff0c;Transformer 模型的主要缺点是&#xff1a;自注意力机制的计算量会随着上下文长度的增加呈平方级增长。所以&#xff0c;许多次二次时间架构&#xff08;指一个函数或算法的增长速度小于二次…

C++ 多态:重塑编程效率与灵活性

目录 多态的概念 多态的定义及实现 多态的构成条件 虚函数 虚函数的重写 虚函数重写的两个例外&#xff1a; 1. 协变(基类与派生类虚函数返回值类型不同) 2. 析构函数的重写(基类与派生类析构函数的名字不同&#xff09; 析构函数要不要定义成虚函数&#xff1f;&…

绝对值得收藏!分享7款ai写作论文免费一键生成网站

在当前的学术研究和写作过程中&#xff0c;AI写作工具已经成为了许多研究者和学生的重要助手。这些工具不仅能够提高写作效率&#xff0c;还能帮助生成高质量的论文内容。以下是七款免费的AI写作论文生成器&#xff0c;其中特别推荐千笔-AIPassPaper。 1.千笔-AIPassPaper 千…

信号处理: Block Pending Handler 与 SIGKILL/SIGSTOP 实验

1. 信号处理机制的 “三张表” kill -l &#xff1a;前 31 个信号为系统标准信号。 block pending handler 三张表保存在每个进程的进程控制块 —— pcb 中&#xff0c;它们分别对应了某一信号的阻塞状态、待处理状态以及处理方式。 block &#xff1a;通过 sigset_t 类型实现&…

YOLO11改进 | 检测头 | 融合渐进特征金字塔的检测头【AFPN3】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一个渐进特征金字塔网络&…

关于 S7 - 1200 通过存储卡进行程序更新

西门子S7-1200系列PLC可以通过存储卡进行程序的更新&#xff0c;固件版本的升级以及程序数据的存储多项功能。本例进行程序更新的操作。 存储卡的订货号以及存储容量 一&#xff1b;如何插入存储卡 在CPU断电下&#xff0c;将CPU上挡板向下掀开&#xff0c;可以看到右上角有一…

ai写作论文会被检测吗?分享市面上7款自动写论文网站

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI写作工具在学术界引起了广泛关注。然而&#xff0c;这些工具的使用也引发了关于学术诚信和检测机制的讨论。根据多所高校的声明&#xff0c;为了应对AI代写论文的现象&#xff0c;许多高校已经开始引入论文检测工具…

Python入门:深入了解__init__.py 文件(如何实现动态导入子模块)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 `__init__.py` 的作用示例:📝 如何编写 `__init__.py`1. 空的 `__init__.py`2. 导入子模块3. 初始化代码4. 动态导入子模块📝 编写 `__init__.py` 的技巧和注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 在…

01:(寄存器开发)点亮一个LED灯

寄存器开发 1、单片机的简介1.1、什么是单片机1.2、F1系列内核和芯片的系统架构1.3、存储器映像1.4、什么是寄存器 2、寄存器开发模板工程3、使用寄存器点亮一个LED4、代码改进15、代码改进2 本教程使用的是STM32F103C8T6最小系统板&#xff0c;教程来源B站up“嵌入式那些事”。…

前缀和(6)_和可被k整除的子数组_蓝桥杯

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 前缀和(6)_和可被k整除的子数组 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 …