Java真的不难(五十三)Docker的快速入门及使用

news/2024/11/8 15:02:09/

Docker的入门及使用

这篇文章将不全面介绍理论,Docker对于我们后端开发来说会用就行,能使用Docker去安装一些镜像运行,为简化配置节省时间和错误率,所以这篇文章实用性很高,可以直接上手!


一、什么是Docker?

Docker官网:https://www.docker.com/

首先一句话:Docker解决了软件环境部署复杂的问题

其实在我们开发中遇到的最多一个情况就是:我在我的电脑能运行,为什么你电脑上不能运行?所以就需要运维人员去不断调试,而有了Docker,只需要简单的几行命令,就可以做到所有运行环境都一致。

Dcoker的专业介绍:

docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。

为什么docker越来越受欢迎?

灵活、轻量级、可互换、便携式、可扩展、可堆叠


二、docker改变了什么

面向产品:产品交付
面向开发:简化环境配置(相当于一键安装)
面向测试:多版本测试
面向运维:环境一致性
面向架构:自动化扩容(微服务)


三、Centos下Docker的安装

因为Docker是运行在Linux上,所以需要准备一台Linux虚拟机,推荐购买阿里云或腾讯云的服务器,因为这样以后不管在哪都可以通过地址访问,若使用电脑本地的虚拟机,只能在本地电脑上使用。

官方帮助文档:https://docs.docker.com/get-docker/

Linux环境查看:

uname -r
3.10.0-1160.71.1.el7.x86_64
#需要3.10以上#查看当前系统信息:
cat /etc/os-release

安装Docker:

若之前安装过Docker,则先得卸载(全部复制直接执行):

#1、卸载旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

开始安装:

#3、设置镜像仓库(默认是国外的)
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo#修改成国内的
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#更新软件包索引
yum makecache fast#4、安装Docker相关内容(ce:社区版  ee:企业版)
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin#5、启动Docker
sudo systemctl start docker

查看是否安装成功:

docker versionClient: Docker Engine - CommunityVersion:           20.10.22API version:       1.41Go version:        go1.18.9Git commit:        3a2c30bBuilt:             Thu Dec 15 22:30:24 2022OS/Arch:           linux/amd64Context:           defaultExperimental:      trueServer: Docker Engine - CommunityEngine:Version:          20.10.22API version:      1.41 (minimum version 1.12)Go version:       go1.18.9Git commit:       42c8b31Built:            Thu Dec 15 22:28:33 2022OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.14GitCommit:        9ba4b250366a5ddde94bb7c9d1def331423aa323runc:Version:          1.1.4GitCommit:        v1.1.4-0-g5fd4c4ddocker-init:Version:          0.19.0GitCommit:        de40ad0

若输入docker version 指令后出现以上信息,则安装成功!

测试运行:

#7、运行hello world
sudo docker run hello-world
#输出
Hello from Docker!#8、查看一下hello world这个镜像是否存在
docker imagesREPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   15 months ago   13.3kB
#上述存在hello world这个镜像#查看启动情况
docker ps -l

到这里Docker已经安装完毕!


四、Docker的卸载

Docker的卸载也是比较简单的,直接执行以下命令即可:

#1、卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin#2、删除资源
sudo rm -rf /var/lib/docker  (docker默认资源路径)
sudo rm -rf /var/lib/containerd

五、配置阿里云镜像加速

Docker默认的下载源在国外,所以很慢,一般我们都会配置一下国内的镜像,比如配置阿里云的:

#一下步骤分步执行即可
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://yqtk4mcd.mirror.aliyuncs.com"]
}
EOFsudo systemctl daemon-reloadsudo systemctl restart docker

六、Docker镜像命令

#查看本机上所有的镜像
docker imagesREPOSITORY  仓库源
TAG  镜像标签
IMAGE ID   镜像ID
CREATED    镜像创建时间  
SIZE      镜像大小#可选项-a, --all             显示全部-q, --quiet           只显示ID#搜索镜像
docker search 镜像名  (docker search mysql)
#mysql    MySQL is a widely used, open-source relation…   13622     [OK]       
#mariadb   MariaDB Server is a high performing open sou…   5202  #加上条件搜索(mysql STARS大于等于10000的镜像)
docker search mysql --filter=STARS=10000

下载镜像:

这里就以下载mysql为例:

docker pull mysql#以下是输出信息
Using default tag: latest   #如果不写tag。默认就是最新的
latest: Pulling from library/mysql
72a69066d2fe: Pull complete   #分层下载
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709  #签名信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  #真实地址

docker下载默认都是下载最新版的,若要指定版本下载,就需要在后面加上版本号:

#指定版本下载(版本必须在docker hub上存在)
docker pull mysql:5.7

删除镜像:

docker rmi(#remove images)
docker rmi -f d445c0adc9a5   #删除一个镜像
docker rmi -f d445c0adc9a5 d445c0adc9a5 d445c0adc9a5   #删除多个镜像

七、Docker容器的命令

#新建容器并启动(新建Centos)
docker pull centos#启动
docker run[可选参数] 镜像名称
docker run -it  centos /bin/bash   #启动并进入容器#可选参数
--name="name"  #给镜像取一个名字
-d             #后台运行
-i/-t          #使用交互方式运行,进入容器查看内容
-p             #指定容器端口  -p:8080:8080
-P(大写)      # 随机指定端口#直接停止容器并退出
exit#容器不停止退出
ctrl+p+q#查看所有运行的容器
docker ps
docker ps -a  #查看之前运行过的
docker ps -n  #显示最近创建过的容器
docker ps -q  #只显示容器编号#启动容器、停止容器
docker start 容器ID   #启动容器
docker restart 容器ID  #重动容器
docker stop 容器ID   #停止正在运行的容器
docker kill 容器ID   #强制停止容器
docker stop $(docker ps -aq)  #停止全部容器#删除容器
docker rm 容器ID (不能删除正在运行的容器)
docker rm -f $(docker ps -aq) #强制删除

八、操作防火墙命令

systemctl start firewalld.service  #开启服务
systemctl enable firewalld.service  #设置开机启动
systemctl stop firewalld  #关闭防火墙
firewall-cmd --list-ports  #查看开启了哪些端口号
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp #添加端口号
firewall-cmd --reload  #操作防火墙后要重启防火墙

若大家需要更加透彻的了解和使用docker,在这里给大家推荐一篇完整性很强的文章:
docker入门(利用docker部署web应用)

在这里插入图片描述


http://www.ppmy.cn/news/9930.html

相关文章

一文解决用C语言实现一个链表(全都是细节)

目录前言单链表1.链表中的结点2.链表中的常见操作&#xff08;1&#xff09;相关声明格式&#xff08;2&#xff09;常见操作的实现&#xff08;定义&#xff09;&#xff08;5&#xff09;测试前言 链表是指数据使用一个一个的结点连接起来的数据结构&#xff0c;这样的数据结…

Linux小黑板(6):软硬链接

"飞吧&#xff0c;去寻觅红色的流星!"一、软硬链接简介软链接:软链接又叫符号链接&#xff0c;这个文件包含了另一个文件的路径名。可以是任意文件或目录&#xff0c;可以链接不同文件系统的文件。软链接硬链接:硬链接&#xff08;hard link&#xff0c;也称链接&…

Qt—事件处理

Qt中&#xff0c;事件作为一个对象&#xff0c;继承自QEvent类&#xff0c;常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。Qt中&#xff0c;任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent&#xff08;&#xff0…

年度征文 | 回顾2022,展望2023 (清风与我)

个人简介&#xff1a; 名称内容个人主页清风与我学习方向主攻前端方向推荐学习vue&#xff0c;vue3&#xff0c;node.js&#xff0c;React&#xff0c;项目实战推荐学习用网站菜鸟教程&#xff0c;博客&#xff0c;哔哩哔哩 …学习用资源网vue&#xff0c;element&#xff0c;…

八、k8s 数据存储

文章目录1 数据存储介绍1.1 基本存储1.1.1 EmptyDir1.1.2 HostPath1.1.3 NFS2 高级存储2.1 PV2.2 PVC2.3 生命周期3 配置存储3.1 ConfigMap3.2 Secret1 数据存储介绍 在前面已经提到&#xff0c;容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&am…

容器生命周期事件处理

容器生命周期事件处理 Kubernetes 中支持容器的 postStart 和 preStop 事件&#xff0c;本文阐述了如何向容器添加生命周期事件处理程序&#xff08;handler&#xff09;。 postStart 容器启动时&#xff0c;Kubernetes 立刻发送 postStart 事件&#xff0c;但不确保对应的 h…

Arduino与Proteus仿真实例-人脸追踪及反馈到舵机转向控制仿真

人脸追踪及反馈到舵机转向控制仿真 文章目录 人脸追踪及反馈到舵机转向控制仿真1、仿真电路原理图2、仿真代码实现3、人脸检测及追踪代码4、仿真结果本文将演示如何通过OpenCV进行人脸检测、追踪并反馈到舵机转向控制。OpenCV检测到人脸后,实时跟踪人脸的移动方向,转换成XY坐…

Day1. Spring

1 课程描述IoC基础容器&#xff0c;主要涉及Bean对象的管理。AOP面向切面编程&#xff0c;主要涉及切面配置&#xff0c;声明式事务控制Spring整合Web环境。Web层解决方案-SpringMVC.1.1 IoC、DI和AOP思想的提出由于传统的JavaWeb出现的问题&#xff1a;问题1&#xff1a;层与层…