Docker教程

news2024/11/17 5:59:28
 Docker 能解决的问题
⾸先,我们先来看⼏个问题:
1. 合作开发的时候,在本机可以运⾏,在别⼈的电脑上跑不起来。
这⾥我们以 Java Web 应⽤程序为例,⼀个 Java Web 应⽤程序涉及很多东⻄,⽐如 JDK Tomcat Spring 等等。当
这些其中某⼀项版本不⼀致的时候,可能就会导致应⽤程序跑不起来这种情况。 Docker 则将程序直接打包成镜像,
直接运⾏在容器中即可。
2. 服务器⾃⼰的程序挂了,结果发现是别⼈程序出了问题把内存吃完了,⾃⼰程序因为内存不够就挂了。
这种也是⼀种⽐较常⻅的情况,如果你的程序重要性不是特别⾼的话,公司基本上不可能让你的程序独享⼀台服务
器的,这时候你的服务器就会跟公司其他⼈的程序共享⼀台服务器,所以不可避免地就会受到其他程序的⼲扰,导
致⾃⼰的程序出现问题。 Docker 就很好解决了环境隔离的问题,别⼈程序不会影响到⾃⼰的程序。
3. 测试阶段能运⾏和上线出现问题。
开发阶段部署⼀套软件环境,测试⼈员在开发中测试没有问题,运维进⾏部署(同⼀套代码)。但是正式部署到服
务器时,发⽣了问题(启动参数、环境问题、漏配了参数)等意外。
4. 公司要弄⼀个活动,可能会有⼤量的流量进来,公司需要再多部署⼏⼗台服务器。
在没有 Docker 的情况下,要在⼏天内部署⼏⼗台服务器,这对运维来说是⼀件⾮常折磨⼈的事,⽽且每台服务器的
环境还不⼀定⼀样,这时就会出现各种问题,最后部署地头⽪发麻。⽤ Docker 的话,我只需要将程序打包到镜像,
你要多少台服务,我就给你跑多少容器,极⼤地提⾼了部署效率。
5. 微服务环境搭建问题。
随着微服务技术的兴起,⼀个⼤的应⽤需要拆分成多个微服务。多个微服务的⽣成,就会⾯临庞⼤系统的部署效
率,开发协同效率问题。然后通过服务的拆分,数据的读写分离、分库分表等⽅式重新架构,⽽且这种⽅式如果要
做的彻底,需要花费⼤量⼈⼒物⼒。可能需要部署很多个服务器。
6. 容器版本管理。
持续的软件版本发布、测试项⽬到线上环境的集成。⽤户可以⽅便地创建和使⽤容器,把⾃⼰的应⽤放⼊容器。容
器还可以进⾏版本管理、复制、分享、修改,就像管理普通的代码⼀样。

为什么使⽤Docker

1. 简化程序
Docker 让开发者可以打包他们的应⽤以及依赖包到⼀个可移植的容器中,然后发布到任何流⾏的 Linux 机器上,便
可以实现虚拟化。 Docker 改变了虚拟化的⽅式,使开发者可以直接将⾃⼰的成果放⼊ Docker 中进⾏管理。⽅便快
捷已经是 Docker 的最⼤优势,过去需要⽤数天乃⾄数周的任务,在 Docker 容器的处理下,只需要数秒就能完成。
2. 避免选择恐惧症
如果你有选择恐惧症,还是资深患者。 Docker 帮你打包你的纠结! Docker 镜像中包含了运⾏环境和配置,所以
Docker 可以简化部署多种应⽤实例⼯作。⽐如 Web 应⽤、后台应⽤、数据库应⽤、⼤数据应⽤,再如 Hadoop
群、消息队列等都可以打包成⼀个镜像部署。
3. 节省开⽀
⼀⽅⾯,云计算时代到来,使开发者不必为了追求效果⽽配置⾼额的硬件, Docker 改变了⾼性能必然⾼价格的思维
定势。 Docker 与云的结合,让云空间得到更充分的利⽤。不仅解决了硬件管理的问题,也改变了虚拟化的⽅式。
4. 持续交付和部署
对开发和运维( DevOps )⼈员来说,最希望的就是⼀次创建或配置,可以在任意地⽅正常运⾏。使⽤ Docker 可以
通过定制应⽤镜像来实现持续集成、持续交付、部署。开发⼈员可以通过 Dockerfile 来进⾏镜像构建,并结合持续
集成( Continuous Integration )系统进⾏集成测试,⽽运维⼈员则可以直接在⽣产环境中快速部署该镜像,甚⾄
结合持续部署( Continuous Delivery/Deployment )系统进⾏⾃动部署。⽽且使⽤ Dockerfile 使镜像构建透明化,
不仅仅开发团队可以理解应⽤运⾏环境,也⽅便运维团队理解应⽤运⾏所需条件,帮助更好的⽣产环境中部署该镜
像。
5. 更轻松的迁移
由于 Docker 确保了执⾏环境的⼀致性,使得应⽤的迁移更加容易。 Docker 可以在很多平台上运⾏,⽆论是物理
机、虚拟机、公有云、私有云,甚⾄是笔记本,其运⾏结果是⼀致的。因此⽤户可以很轻易的将在⼀个平台上运⾏
的应⽤,迁移到另⼀个平台上,⽽不⽤担⼼运⾏环境的变化导致应⽤⽆法正常运⾏的情况。

Docker特点

标准化交付: Docker 将应⽤打包成标准化单元,⽤于交付、部署。
轻量级:容器及包含了软件运⾏所需的所有环境,⽽且⾮常轻量级。
⾼可靠:容器化的应⽤程序,可以在任何 Linux 环境中始终如⼀的运⾏。
隔离性:容器化的应⽤程序,具备隔离性,这样多团队可以共享同⼀ Linux 系统资源。
Docker 安装
1. 切换到 root 账户,并输⼊ root ⽤户密码。
su root
2. 查看电脑上是否已经安装 Docker 软件。
yum list installed | grep docker
3. 如果已经安装过 Docker ,先卸载已安装的 Docker ,执⾏如下命令。如果报告未安装这些包,则没有问题
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest
docker-latest-logrotate docker-logrotate docker-engine
4. 安装所需的软件包。 yum-utils 提供了 yum-config-manager 应⽤,并 device-mapper-persistent-data lvm2
需要 devicemapper 存储驱动程序
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5. 设置 Docker 镜像的仓库,添加软件源信息。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7. Docker 要求 CentOS 系统的内核版本⾼于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否⽀持安装
Docker
uname -r
8. 安装 Docker-CE 软件。
docker-ce 表示社区免费版本
yum -y install docker-ce
6. 更新 yum 源。
sudo yum makecache fast
8. 安装 Docker-CE 软件
yum -y install docker-ce
9. 安装后查看 Docker 软件的版本。
docker -v
10. 查看 docker 概要信息。
docker info
11. 查看 docker 帮助⽂档
docker --help
2.3 Docker 守护进程相关命令
1. 启动 docker 服务
systemctl start docker
2. 查看 docker 服务运⾏状态。如果 docker 是在运⾏中,输⼊命令后会看到绿⾊的 " active (running) " 提示。
systemctl status docker
3. 重启 docker 服务。
systemctl restart docker
4. 停⽌ docker 服务。
systemctl stop docker
5. 设置 docker 开机⾃动启动。
systemctl enable docker
6. 禁⽤ Docker 开机⾃动启动。
systemctl disable docker
2.4 Docker 镜像加速器
1. 中科⼤镜像加速器
1. 通过 vim 命令编辑 daemon.json ⽂件(没有时新建该⽂件)。
vim /etc/docker/daemon.json
2. daemon.json ⽂件中输⼊如下内容。
{
"registry-mirrors" : [ "https://docker.mirrors.ustc.edu.cn" ]
}
注意:⼀定要保证该⽂件符合 JSON 规范,否则 Docker 将不能启动。
2. 阿⾥云镜像加速器
1. 访问阿⾥云镜像获取地址: https://promotion.aliyun.com/ntms/act/kubernetes.html
3. 进⼊控制台后,搜索【容器镜像服务】选项。
4. 在打开的容器镜像服务窗⼝中,选择【镜像加速器】选项,复制个⼈的加速器地址。

5. 通过 vim 命令编辑 daemon.json ⽂件(没有时新建该⽂件)。
vim /etc/docker/daemon.json
6. daemon.json ⽂件中输⼊如下内容。
{
"registry-mirrors" : [ "https://icnwj1s9.mirror.aliyuncs.com" ]
}
4. 重新启动服务
 sudo systemctl daemon-reload
 sudo systemctl restart docker
5. 检查加速器是否⽣效
检查加速器是否⽣效配置加速器之后,如果拉取镜像仍然⼗分缓慢,请⼿动检查加速器配置是否⽣效,在命令⾏执
docker info ,如果从结果中看到了如下内容,说明配置成功
$ docker info
...
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn
...
3 Docker 常⽤命令
搜索镜像
docker search tomcat
拉取镜像
docker pull java
注意:受⽹速的影响,上述镜像在下载过程中⽐较缓慢,可能会出现⼀次下载不成功的情况,则重新拉取, 并耐⼼等待。
查看镜像
1. 查看本地镜像列表。
docker images
2. 列出本地镜像中 REPOSITORY ubuntu 的镜像列表。
docker images tomcat
删除镜像
1. 强制删除本地镜像 centos:7
# docker rmi -f centos:7
2.按镜像 ID 删除镜像。
docker rmi 90d5884b1ee0
容器相关命令
查看容器
列出容器。
docker ps
查看停⽌的容器。
docker ps -f status = exited
3.2.2 创建与启动容器
使⽤ nginx 镜像 ID 以后台模式启动⼀个容器,将容器的 80 端⼝映射到主机的 80 端⼝。
docker run -itd --name = mynginx -p 80 :80 fb5657adc892
  3.2.3 启动停⽌重启容器
docker stop :停⽌⼀个运⾏中的容器。
docker start :启动⼀个或多个已经被停⽌的容器。
docker restart :重启容器(重启已经关闭的容器)。
停⽌运⾏中的容器 mynginx
docker stop mynginx
停⽌所有正在运⾏的容器。
docker stop $(docker ps -aq)
启动已被停⽌的容器 mynginx
docker start mynginx
重启容器 mynginx
docker restart mynginx
3.2.4 登录容器
docker exec -i -t mynginx /bin/bash

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

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

相关文章

机器学习 day21(Tensorflow代码实现)

Tensorflow代码实现 在tensorflow中训练神经网络模型的步骤:第一步:指定模型,并告诉tensorflow按何种方式计算。第二步:使用特定的损失函数编译模型。第三步:训练模型

企业知识管理要怎么做,才能清晰有序?

在当今快速变化的商业环境中,企业知识管理的重要性日益凸显。有效的知识管理可以帮助企业整理、保存和传递知识,提高员工的工作效率和创新能力,从而为企业获得竞争优势奠定基础。本文将介绍企业在进行知识管理时应采取的措施,以确…

微型导轨的使用寿命能达到多久?

微型导轨,顾名思义就是体积很小的导轨,一般是应用在小型化设备中的,像半导体设备,医疗设备,IC制造设备,X-Y table,精密测量及检测仪器,高速皮带驱动设备,高速移载设备等都…

传说中,让测试猿分分钟心酸的五大谣言

谣传1:测试无聊 综观现今软件测试的一些轶事,我对某些错误想法的频繁出现感到吃惊。尽管有很多可以罗列,但是我还是想分享测试的五个最常见的谣传(基于我短暂的经验)。我发现前三个盛行于一些主流的新闻文章&#xff…

STM32F407系统时钟的配置和查看方法

1、系统时钟的来源 STM32F407具有两个PLL,用于产生不同的时钟信号。这里主要来讨论主PLL时钟。主PLL时钟的时钟源有两个信号,分别是上边提到的HIS信号和HSE信号。PLL通过把这两个信号倍频,分频等达到更高频率的时钟信号。一般来说&#xff0…

Linux6.yum,git,gdb

1.yum三板斧 yum list :显示所有能安装的软件。 yum lisy | grep 软件 :搜索软件。 yum install -y :安装软件。 yum remove -y 软件 :删除已经安装的软件。 2.git git clone 仓库网址 :添加仓库,按回车之后。需要输入账户和密码。 git add 文件 :把文件添加…

图像几何变换、仿射变换、透视变换

图像几何变换:平移、缩放、旋转 图像旋转变换:(x,y)为原图像坐标系,(x’,y’)为以(x0,y0)为中心的笛卡尔坐标系,图像以x0,y0)为中心进行旋转。 图像坐标系->笛卡尔坐标系->图像坐标系。如果是以图像中心旋转,则left=W/2,right=H/2,其中W和H为图像旋转…

MinGW 编译jsoncpp 的下载和编译

目录 1. jsoncpp 的下载 1.1 下载地址,点击可直接下载 1.2 下载完解压内容如下 2. jsoncpp 的编译 2.1 配置 2.2 生成 3. jsoncpp测试使用 1. jsoncpp 的下载 1.1 下载地址,点击可直接下载 mirrors / open-source-parsers / jsoncpp GitCode 1…

数据库监控与调优【十五】—— ORDER BY语句优化

ORDER BY语句优化 最好的做法:利用索引避免排序 实验 目的:哪些情况下ORDER BY子句能用索引避免排序,哪些情况下不能 之前说过,BTree数据结构里面的关键字,也就是索引值都是按照顺序排列的,那么&#xf…

端午节粽子代码(python)需要的拿走,顺带给博主一点关注呗~~~~

import math from turtle import * #胡阳 # 画粽子 def rice_dumpling():pensize(4) # 画笔宽度pencolor(4, 60, 12) # 画笔颜色fillcolor(4, 70, 19) # 填充色begin_fill()fd(200) # 向前circle(15, 120) #画圆弧fd(200)circle(15, 120)fd(200)circle(15, 120)fd(200)circle(1…

自动化测试你一定要知道的几个技巧,包你受用终身

自动化测试是应用程序在非常短的时间内执行软件的整个生命周期的过程,使测试软件具有很大的充分性和有效性。在这个程序设计的系统中,测试人员编写一个脚本,并借助合适的软件对软件进行测试。自动化测试背后的基本目标是提高测试效率和提高软…

C 语言经典100例(菜鸟在线工具)

C 语言经典100例 C 语言经典100例 菜鸟工具 C代码在线运行工具 搜索引擎 前端开发

农产品批发采购APP开发 手机里的农产品市场

农业发展是民生之本,随着互联网时代的到来各行各业都迎来了新的发展机遇,农产品批发采购、配送服务等方面也发生了很大的改变,各种农产品商城APP、农产品批发采购平台、农产品供应管理系统的开发让包含农产品信息、数据、物流、配送、仓储、质…

关于tcp协议的18个常问面试题(进阶版)

TCP是一个基础协议,这里相关的十八个问题也都是常见的问题。无论是前端还是后端同学,都应该掌握的这些问题。过于基础的问题,比如TCP格式是什么 占多少字节 三次握手的流程等等,由于过于简单,我们不介绍,本…

Mabatis(CRUD)

Mybatis CRUD(数据和配置使用Mybatis快速入门) select标签 选择&#xff0c;查询语句: <select id"getUserById" resultType"com.louis.pojo.User" parameterType"int"></select>id:就是对应namespace中的方法名(就相当于重写了…

记录::windows11安装子系统ubuntu18.04+cuda

https://learn.microsoft.com/zh-cn/windows/wsl/install-manual https://zhuanlan.zhihu.com/p/436441212 目录 1、开启开发者模式 2、开启子系统 3、下载ubuntu 4、安装ubuntu 5、安装cuda 6、安装cudnn 7、安装桌面 2、桌面 3、Xfces&#xff08;前面2和这个二选一…

不需要数据线传输如何共享笔记软件内容?

在生活和工作中&#xff0c;手机电脑共享数据的情况非常多&#xff0c;比如“共享笔记内容”。每当遇到这种情况&#xff0c;很多人都会使用数据线或借助第三方社交平台&#xff0c;把信息或文件传输过去。不过&#xff0c;这两种方法一个安全性不能保障&#xff0c;尤其是使用…

如何基于Nilearn绘制绘制脑网络图(一)?绘制功能连接、结构连接可视化

结果图 Nilearn Nilearn是一个Python库,用于神经影像分析。它提供了处理和分析功能性和结构性脑成像数据的工具。Nilearn提供了多种预处理函数、机器学习算法应用、统计分析和结果可视化的功能。在神经影像研究领域,Nilearn常用于分析功能性磁共振成像(fMRI)等技术的数据。…

Kubernetes1.21部署apisix网关

1、安装nfs-subdir-external-provisioner helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner -f values.yaml -n default docker pull k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 下载…

本地生活服务平台加盟

本地生活服务平台加盟是一种让创业者可以成为品牌合作伙伴&#xff0c;开展本地生活服务业务的方式。通常&#xff0c;加盟商需要缴纳一定的加盟费用&#xff0c;获得品牌授权和支持&#xff0c;并承担一定的经营风险。 加盟本地生活服务平台可以让创业者在品牌知名度和运营…