Docker学习1 - Docker

article/2025/8/17 12:22:35

Docker 在部署中的重要性

  1. 直接把程序安装或部署在Linux操作系统上面,很容易引发资源冲突
  2. 程序卸载不干净,导致无法安装或部署新程序
  3. 每次部署之前要安装很多软件,修改复杂的配置文件
  4. 无法让服务器硬件资源实现多租户服务
  5. 增大了在Linux系统上部署集群和分布式的难度

Vmware 和Docker的对比

Vmware 是重量级虚拟机,每个虚拟机实例都虚拟了完整的硬件环境,所以对硬件要求较高
Docker 是轻量级虚拟机,只虚拟了少量的硬件设备,虚拟实例共享使用Linux内核
Vmware 和Docker的对比

Linux之外可以用Docker吗

Docker 是跨平台的轻量级虚拟机,但是在Windows和MacOS上面有部分功能无法使用
比如说安装Keepalived程序,配置虚拟IP
在这里插入图片描述

云计算中的Docker虚拟机

在这里插入图片描述

安装Docker服务

  1. 安装Docker之前要先关闭centOS内置的SELINUX服务。
    SELINUX是CentOS 系统捆绑的安全服务程序,因为安全策略太过于严格,所以建议大家关闭这项服务。
    修改/etc/selinux/config文件,设置SELINUX=disabled,修改之后必须重启系统才生效。
  2. 使用yum命令可以很方便的安装Docker服务,并且Docker服务的管理指令也非常简单。
yum install docker -y #-y代表默认安装,不再需要确认service docker start # 启动docker服务
service docker stop # 停止docker服务
service docker restart # 重启docker服务

什么是DockerHub?

DockerHub是Docker公共镜像库,为用户提供了大量的镜像文件。
DockerHub官方网站:https://hub.docker.com/
由于DockerHub服务器都架设在国外,国内网络访问DockerHub很慢,无法下载镜像文件,我们可以使用Docker加速器

配置Docker加速器

DaoCloud加速器采用自主研发的智能路由及缓存技术,并引入了先进的协议层优化,极大提升拉取镜像的速度和体验

# 安装DaoCloud
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

修改 /etc/docker/daemon.json文件,去掉结尾的逗号。如果存在逗号,重启docker服务时将会报错。

[root@VM-20-14-centos ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

Docker 环境的常用指令

  1. 什么是Docker镜像
    为了快速打包和部署软件环境,Docker引入了镜像机制
    镜像是一个配置好的只读层软件环境
    我们可以通过dockerfile文件创建出镜像,也可以从Docker仓库下载到镜像
    在这里插入图片描述
  2. 什么是Docker容器
    容器是在镜像基础上创建出的虚拟实例,内容可读可写
    一个Docker 镜像可以创建出多个容器,而且容器之间互相隔离,部署的程序不会互相干扰
    所有的容器直接使用宿主机的Linux内核、内存和硬盘,所以容器的性能非常接近于宿主机。(当然每个容器也支持设置占用cpu核心数、内存的上限)
    在这里插入图片描述
  3. 常用的Docker命令
    在这里插入图片描述
    镜像相关
# 从DockerHub下载python 3.8镜像
docker pull python:3.8# 查看docker已安装的镜像
docker images# 查看镜像信息
docker inspect python:3.8# 将安装的python镜像导出至压缩文件
docker save python:3.8 > /root/python.tar# 删除镜像
docker rmi python:3.8
#如果有容器关联了该镜像是不允许删除的#本地导入镜像
docker load < /root/python.tar

容器相关

# 创建Docker容器
docker run -it --name=p1 python:3.8 bash
# 容器创建后会自动进入容器,退出指令用exit,退出后容器就停止运行了,如果加上参数-d,就可以设置默认后台运行,除非执行stop命令#查看容器状态
docker ps -a# 重新启动容器
docker start p1
# 暂停容器运行
docker pause p1
# 恢复运行
docker unpause p1# 进入到已经运行的容器中
docker exec -it p1 bash
# 此时执行exit命令就不会影响容器的运行# 查看容器信息
docker inspect p1# 删除容器
docker rm p1
# 不可以删除正在运行的容器

Docker 网络环境

默认情况下,Docker环境会给容器分配动态的IP地址,这就导致下次启动容器的时候IP地址就变了
在这里插入图片描述
我们可以单独创建一个Docker内部的网段,比如(172.18.0.X)

# 创建新网段,命名为mynet
docker network create --subnet=172.18.0.0/16 mynet 
# 查看Docker环境已存在的网段
docker network ls
# 删除已创建网段
docker network rm mynet
# 创建容器p1,绑定IP地址(172.18.0.1是网关地址,不能用)
docker run -it --name=p1 --net mynet --ip 172.18.0.2 python:3.8 bash# 查看当前IP地址
ip addr

Docker 端口映射

默认情况下,除了宿主机之外,任何主机无法远程访问Docker容器
通过端口映射,可以把容器端口映射到宿主机的端口,这样其他主机就能访问容器了
映射到宿主机的端口,不需要设置防火墙规则,便可以使用

# 把容器的5000端口映射到宿主机的9500端口上
docker run -it -p 9500:5000 python:3.8 bash
# 可以同时映射多个端口
docker run -it -p 9500:5000 -p 9600:3306 python:3.8 bash

注意:容器只有在运行中,端口映射才生效

Docker目录挂载

为了能把一部分业务数据保存在Docker环境之外,或者把宿主机的文件传入容器,所以需要挂在宿主机的目录

Docker 环境只支持目录挂载,不支持文件挂载,而且一个容器可以挂载多个目录

# 宿主机文件夹路径:容器文件夹路径
docker run -it -v /root/test:/root/project python:3.8 bash

项目部署

创建python容器

  1. 创建容器
docker run -it -d --name=p1 -p 9500:5000 -v /root/project:/root/project --net mynet --ip 172.18.0.2 python:3.8 bash
  1. 加速pip安装拓展程序
    为了加快pip命令下载安装拓展程序,可以使用国内镜像来提速
    比如清华大学的镜像:https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

创建MySQL容器

  1. 下载MySQL镜像
# 下载指定版本的镜像
docker pull mysql:8.0.18
# 下载最新版本镜像
docker pull mysql
  1. 用docker run 命令创建MySQL容器,并且做好端口映射和目录挂载
# 创建mysql容器不需要-it
docker run --name=m1 -p 4306:3306 --net mynet --ip 172.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:8.0.18

创建后就可以通过软件来 连接这个数据库了

启动项目

  1. 将项目文件复制到容器映射的文件夹下,容器就可以直接读取了
  2. 运行flask项目
cd /root/project/project_2/
nohup python app.pyc > logs.txt
# nohup 可以是程序后台运行,打印内容输出至log.txt文件上
# 使用nohup,并不会回到命令行

拓展:Pypy环境

Python SDK环境内置的是Cpython解释器,而PypySDK环境内置的是Python解释器,而且带有JIT功能

通常来说同样的Python程序,在Pypy环境中,运行速度比PythonSDK快6~10倍
在这里插入图片描述
Pypy下载官网http://pypy.org/download.html

# 下载Pypy镜像
docker pull pypy:3.6-7.2.0
# 创建Pypy容器
docker run -it -d --name=p2 --net mynet --ip 172.18.0.4 -p 9600:5000 -v /root/pypy_project:/root/pypy_project pypy:3.6-7.2.0 bash
# pypy环境中-it不可缺少,否则会出现闪退 # 查看pypy版本
pypy3 --version
# 进入pypy命令行
pypy3

http://chatgpt.dhexx.cn/article/KtDcI4OR.shtml

相关文章

Docker学习记录-01

Docker 的基本组成 镜像(image): 好比一个模板,tomcat -> run -> tomcat01 (container) 镜像可以创建多个容器 容器(container): 容器可以启动&#xff0c;停止&#xff0c;删除&#xff0c;基本命令 容器就是一个简易的Linux系统 仓库(repository)&#xff1a; 存…

docker学习之Ubuntu系统部署docker

目录 安装环境&#xff1a; 支持安装docker的Ubuntu操作系统版本 卸载旧版本的docker 安装docker所需要的依赖包 添加Docker的官方GPG密钥&#xff1a; 设置docker的镜像仓库 安装docker引擎 测试docker 卸载Docke ​​​​安装完毕。 安装环境&#xff1a; Linux系…

Docker学习2

文章目录 Docker学习Docker镜像是什么特点Docker镜像commit操作补充 Docker容器数据卷是什么能干嘛数据卷容器内添加 数据卷容器 DockerFile解析是什么DockerFile构建过程解析基础知识Docker执行DockerFile的大致流程 DockerFile体系结构&#xff08;保留字指令&#xff09;Doc…

Docker学习自我总结(一)

以下内容皆参考至狂神说docker学习视频 一、初识dockerfile ​ docker镜像创建时需要使用dockerfile&#xff0c;dockerfile相当于一个命令脚本&#xff0c;通过这个脚本可以生成镜像&#xff0c;镜像是一层一层的&#xff0c;脚本一个个的命令&#xff0c;每个命令都是一层&…

Docker 学习笔记

Docker 学习笔记 Docker 安装CentOS 安装 DockerUbuntu 安装 Docker Docker 常用命令 Docker 实操记录Docker 安装mysqlDocker 部署 jupyter notebook Docker 安装 CentOS 安装 Docker 以下是docker官网的安装教程&#xff0c;我只是将命令都提取出来 按下列顺序逐步输入即可…

docker 学习

centos7安装docker 步骤 1、Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发…

docker学习1

1.docker常用管理命令 格式 docker image 【】 ls 列出镜像 bulid 构建镜像利用dockerfile history 查看 inspect 显示一个或多个镜像的详细信息 pull 从镜像仓库拉取镜像 rm 移除一个或多个镜像 push 推送一个镜像到镜像仓库 prune 移除没有被…

docker 学习总结

只要学不死&#xff0c;就往死了学。 docker学习目录 docker概述docker安装docker基本组成 镜像命令容器命令操作命令 docker镜像容器数据卷dockerFiledocker 网络原理IDEA整合dockerdocker composerdocker swarmcI\cd docker概述 痛点&#xff1a;解决跨平台&#xff0c;服…

Docker学习总结

Docker学习总结 一、Docker简介二、Docker安装2.1 安装步骤2.2 卸载Docker2.3 配置阿里云镜像加速 三、Docker常用命令3.1 帮助命令3.2 镜像命令3.3 容器命令3.4 其他常用命令 四、Dockerfile4.1 DockerFile简介4.2 DockerFile体系结构(保留字指令)4.3 案例4.3.1 Base镜像(scra…

Docker学习

理念&#xff1a;一次镜像&#xff0c;处处运行。是基于go语言实现的云开源项目 容器与虚拟机的区别&#xff1a; 虚拟机是一种带环境安装的解决方案&#xff0c;可以在一种操作系统中运行另外一种操作系统。 容器不是模拟一整个操作系统&#xff0c;而是只有软件所需要的库资…

一文带你入门docker

✅作者简介&#xff1a;我是18shou&#xff0c;一名即将秋招的java实习生 &#x1f525;系列专栏&#xff1a;牛客刷题专栏 &#x1f4c3;推荐一款模拟面试、刷题神器&#x1f449; [在线刷题面经模拟面试](在线面试刷题) 目录 安装Docker 卸载旧版本 Docker初装命令 Dock…

超全的Docker学习教程(Linux云计算从入门到精通)

CONTENTS 一、docker简介 1.1 docker相关概念 1.2 docker应用场景 1.3 docker和虚拟机比较 二、初识docker 2.1 安装docker 2.2 初识docker-docker架构 2.3 配置镜像加速器 三、docker命令详解 四、docker容器数据卷 五、docker应用部署 5.1 部署mysql 5.2 部署Tom…

Docker 从入门到精通(新手建议收藏的教程)

今天给大家分享一篇小白也能看懂的Docker入门到精通学习教程&#xff0c;篇幅较长&#xff0c;但内容很干&#xff0c;值得认真看完&#xff01; 目录 一 、容器简介 二、什么是 Docker&#xff1f; 三、安装Docker Docker 从入门到精通&#xff08;新手建议收藏的教程&am…

Docker入门教程(详细)

目录 一、Docker概述 1.1 Docker 为什么出现&#xff1f; 1.2 Dorker历史 1.3 能做什么 虚拟机技术&#xff1a;&#xff08;通过 软件 模拟的具有完整 硬件 系统功能的、运行在一个完全 隔离 环境中的完整 计算机系统&#xff09; 容器化技术&#xff1a;&#xff08;容…

docker入门,这一篇就够了。

Docker入门&#xff0c;这一篇就够了。 Docker容器虚拟化平台。 前言 接触docker很长时间了&#xff0c;但是工作中也没有用到&#xff0c;所以总是学了忘&#xff0c;忘了学。不过这次&#xff0c;我打算跟大家分享一下我的学习历程&#xff0c;也算是我的独特的复习笔记&…

总线板卡(1)——总线接口类型

行业的朋友们是否碰到过这种情况&#xff0c;比如你问某厂家是否有1553B总线或者其他总线板卡时&#xff0c;对方会问你要什么接口的&#xff1f; 你知道厂家说的接口指的是什么吗&#xff1f; 这里的接口一般指板卡的总线接口&#xff0c;比较普遍的有PCI、PCIe、CPCI、PXI等…

6U VPX架构XCKU115(FPGA)+XCZU9EG(MPSOC)+TMS320C6678(DSP)的高速信号处理平台VPX630设计原理图及调试经验分享

板卡概述VPX630 是一款基于6U VPX 总线架构的高速信号处理平台&#xff0c;该平台采用一片Xilinx 的Kintex UltraScale 系列FPGA&#xff08;XCKU115&#xff09;作为主处理器&#xff0c;完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM 内核的高性能嵌入式处…

flexray VPX控制板设计方案详细

后IO板 1设计要求1.1功能要求3U VPX通讯板具有4路CAN&#xff0c;2路 Flex Ray、1路SGMII网口、2路RapidIO2、2路PCIE4、2路IPMI接口 整个处理模块系统框图如下&#xff1a; 图1 系统框图 根据上图&#xff0c;模块可以分为以下几个部分&#xff1a; CAN协议模块&#xff1a…

嵌入式高速串行并行技术_推荐(张锋)

前言 之前想学习一下总线相关的知识&#xff0c;就去图书馆搜&#xff0c;其中&#xff0c;有一本是&#xff1a;《嵌入式高速串行并行技术——基于FPGA实现与应用&#xff08;张锋著&#xff09;》 看了一下前言、目录、自序、以及他本书创作过程中的随笔&#xff08;小编就决…

加固机箱设计资料第289篇:基于3U VPX的 5槽加固机箱

基于3U VPX的 5槽加固机箱 一、产品简介 VPX-305 机箱平台是4U高度 3U 5S的一种便携式VPX机箱。由北京太速科技研发&#xff0c;机箱提供1个VPX总线系统槽和4个VPX 外设槽。主要用于组建VPX测试系统。整机美观大方、小巧灵活、安全可靠。可用于外场测试。 VPX-30…