Docker容器的简单介绍与使用

news2025/1/8 6:03:08

前言:大家好,我是小威,24届毕业生,曾经在某央企公司实习,目前入职某税务公司。本篇文章将记录和分享docker容器相关的知识点。
本篇文章记录的基础知识,适合在学Java的小白,也适合复习中,面试中的大佬🤩🤩。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,曾经在某央企公司实习,目前在某税务公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

在这里插入图片描述

以下正文开始

在这里插入图片描述

文章目录

  • 🚓Docker的简单介绍
  • 🚕Docker在centos系统的安装
  • 🚙Docker镜像命令
  • 🚗Docker容器相关命令

🚓Docker的简单介绍

Docker 是一个开源的应用容器引擎,可以让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
在这里插入图片描述

Docker可以将开发中的应用、依赖、函数库、配置一起打包,形成可移植镜像,迁移到任意的Linux系统;同时,Docker应用运行在容器中,使用沙箱机制,相互隔离,各个应用之间不会相互干扰,Docker的启动和移除都可以通过命令来完成,比较简单而方便。

🚕Docker在centos系统的安装

在CentOs系统上安装docker
前置步骤需要用到工具有虚拟机,FinalShell等,将虚拟机的ip地址与FinalShell连接。
首先可以检测一下之前是否安装过docker,如果安装过,可以通过以下的命令卸载docker(我这里是公司的新电脑,因此没有安装过):

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

在这里插入图片描述

之后在联网的虚拟机上面执行指令,安装yum工具:

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

安装完成后,需要更新本地镜像源,这里可以采用阿里云,华为云等(不然连接国外的镜像源比较慢):

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

在这里插入图片描述
然后安装docker-ce版本,docker一个有两个版本,一个为ce版本,一个为ee版本,ce版本是社区版本,免费使用,ee版本为企业版本,比较安全,但需要付费使用,ce版本可以满足我们学习docker的需求了,因此我们这里以ce版本为例,稍等片刻即可安装成功:

yum install -y docker-ce

在这里插入图片描述
我们在启动docker的时候需要用到很多端口,因此需要关闭防火墙,这里我们在启动docker之前先将防火墙关闭:

# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

在这里插入图片描述
关闭防火墙后,我们即可通过命令来启动docker:

systemctl start docker  # 启动docker服务

启动完成后,我们可以通过命令才查看docker的启动状态:

systemctl status docker //查看docker启动状态

在这里插入图片描述
我们可以通过查看docker的版本来测试docker是否启动,运行命令看看是否有docker版本即可:

docker -v

如果想要关闭或重启docker,也可运行命令将docker关闭或重启:

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

最后,我们需要配置镜像加速,在前面我们选择的阿里云镜像,在这里我们也可以选择阿里云的镜像加速,这里是阿里云的镜像操作文档地址:点击进入阿里云镜像加速操作文档
我们选择自己的虚拟机系统,在finalshell终端运行文档中的命令即可
在这里插入图片描述

🚙Docker镜像命令

首先先解释一下镜像和容器。
镜像(Image):Docker将应用程序和其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,Docker会给容器做隔离,对外隔离。

接着聊运行镜像名称的组成。一般情况下镜像名称由仓库和版本号组成([repository]:[tag]),如果没有指定tag版本,默认是最新版本的镜像(latest)。

获取docker镜像和git差不多,我们可以从本地dockerfile构建镜像,也可以从docker registry镜像服务器中拉取(docker pull)镜像。同时如果我们想要分享镜像给其他人,可以将镜像保存为压缩包(docker save),也可以将其他朋友分享的压缩包加载为镜像(docker load)。

对这些docker命令感兴趣的话,可以在终端查看docker命令帮助文档(docker --help)。

接下来我们从DockerHub(一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry)中拉取一个nginx镜像作为案例:
第一步先去镜像仓库找到nginx镜像,首先进入DockerHub中搜索nginx,第一条就是官方正版nginx镜像:点击进入DockerHub
在这里插入图片描述
点击进入,会看到拉取nginx镜像的指令:
在这里插入图片描述
复制docker pull nginx指令,在finalshell终端执行指令,由于我们没有指定版本,所以加载的nginx镜像为最新版。
在这里插入图片描述

通过docker images命令查看下载的镜像:
在这里插入图片描述
我们可以使用docker save [OPTIONS] IMAGE [IMAGE]指令来保存我们下载的镜像(-o表示output输出,在后面需指定输出到哪个文件夹,如果没有此文件夹的话会自动建立这个文件夹,nginx:latest表示仓库为nginx,版本为latest):

[root@localhost ~]# docker save -o nginx.tar nginx:latest

执行命令完成后,通过ll来查看文件夹:
在这里插入图片描述
这里有了压缩包,我们可以把我们的镜像移除,然后再加载压缩包,移除镜像后发现这个镜像已经不存在了(docker rmi ***)rmi 全称为 remove images:
在这里插入图片描述
之后我们可以将移除的镜像加载回来(docker load [OPTIONS]):
在这里插入图片描述
通过docker images可以看到我们的nginx镜像又回来了~!
在这里插入图片描述

🚗Docker容器相关命令

docker run 创建一个容器,并且可以让容器处于运行状态;
docker pause 使运行中的容器处于暂停状态,操作系统将容器内的进程挂起,保存容器内存,CPU不再执行此进程;
docker unpuase 使暂停中的容器恢复运行状态,内存空间恢复,程序继续运行;
docker stop 使运行中的容器进入停止状态,进程杀死,容器所占的内存被回收;
docker start 使停止状态的容器恢复运行状态,会创建全新的进程;
docker ps 查看所有运行的容器及其状态;
docker logs 查看容器的运行日志;
docker exec 进入容器内部执行命令;
docker rm 删除指定的容器

以docker run命令为例,我们后面需要跟参数,这个可以参考DockerHub上面的命令描述,比如运行nginx容器,如下指令:
docker run表示创建并运行一个容器,–name表示给创建的容器起一个名字,比如mn,-p(暴漏容器端口,让外界可以访问容器)后面有两个端口,实际上冒号左侧为宿主机端口,冒号后面为我们的容器端口; -d表示可以后台运行容器,比如说我们的一些应用可以后台运行;最后nginx为镜像的名称,因为默认是最新版本,所以latest可以省略。
在这里插入图片描述
运行之后返回了一坨数据,这是容器的唯一ID,我们可以通过docker ps来查看容器上面有显示镜像,创建时间,状态up表示运行中,端口号,名称等等:在这里插入图片描述
在这之后,docker算是开启了,我们再浏览器输入我们的虚拟机IP地址,加上80端口,会请求到容器

在这里插入图片描述

同时我们可以通过docker命令来查看日志,docker logs mn,mn是我们刚才创建的容器名称,这个要带上:
在这里插入图片描述

可以看到发送了一次get请求。
如果想要持续查看日志,带上-f参数即可,即docker logs -f mn。

接下来康康我们创建的nginx容器中都有什么,在finalshell终端输入指令:

docker exec -it mn bash

docker exec指令意为进入容器内部,-it表示给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互,mn为我们创建的nginx容器名称,bash意思是进入容器后执行的命令,bash是一个linux终端交互命令。
进入到容器之后,我们切换目录,找到首页的界面,cat index.html,查看首页的内容,与我们刚才访问浏览器的界面一样。
。
从上图中科院看到Welcome to nginx!但是我们不能通过Linux的vi或vim命令来修改文字,我们需要以docker容器的命令来达到我们的目的,即在终端输入以下内容:

sed -i 's#Welcome to nginx#小威要向诸佬学习呀#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

在这里插入图片描述
执行完命令之后退出(exit),重新在浏览器访问我们的地址,可以看到页面发生了变化:
在这里插入图片描述
当然,如果我们想删除此容器,也可以执行指令docker rm mn删除容器。

本篇文章就先分享到这里了,后续会继续分享其他的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻
希望能和诸佬们一起努力,今后进入到心仪的公司
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

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

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

相关文章

如何更好地进行 Android 组件化开发——路由原理篇

前言 组件化开发的会实现代码隔离&#xff0c;在开发时访问不到模块的代码&#xff0c;降低代码耦合度。那么如何跳转组件的页面、如何进行组件间的通信是个问题。这通常会使用到 ARouter、TheRouter、WMRouter 等路由框架。可能有不少人只知道怎么去调用&#xff0c;并不知道…

Pod内容详情梳理

本篇是笔者的一篇读书笔记&#xff0c;用于梳理pod的详情&#xff0c;方便理解和学习&#xff0c;也方便后续自己查询。一、Pod的概述Pod是k8s里面典型的CR&#xff0c;从它的元数据来看&#xff0c;具有所有CR的基本数据构成&#xff0c;分别是 version、kind&#xff0c;以及…

迅为RK3568开发板支持多屏同显/异显动态方案

iTOP-RK3568开发板采用四核Cortex-A55处理器&#xff0c;芯片内置VOP控制器&#xff0c;支持HDMI、LVDS、MIPI、EDP四种显示接口的多屏同显、异显和异触&#xff0c;可有效提高行业定制的拓展性。 三屏同显&#xff1a; 三屏异显&#xff1a; 双屏同显&#xff1a; 双屏异显&am…

Docker容器里进程的 pid 是如何申请出来的?

大家好&#xff0c;我是飞哥&#xff01;如果大家有过在容器中执行 ps 命令的经验&#xff0c;都会知道在容器中的进程的 pid 一般是比较小的。例如下面我的这个例子。# ps -ef PID USER TIME COMMAND1 root 0:00 ./demo-ie13 root 0:00 /bin/bash21 root …

编程小技巧9-如何生成没有水印的代码图片(IDEA carbon-now-sh插件使用教程)

陈老老老板&#x1f9b8;&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;快速变成小技巧&#xff08;主要讲一些平时常用的、有助于提高开发素的内容&#xff09;&#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下使用carbon-now-sh插件生成图片超详细教程。&…

STM32

一&#xff1a;生成独立的他.h和.c文件 勾选后&#xff0c;生成单独的.h和.c文件。不勾选的话都在main里面。 二&#xff1a;常用。 1&#xff1a;电平输出。 HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, …

django 登录流程实现

一、简介&#xff1a; 1、用户输入正确的用户名、密码、验证码点击登录即可跳转到管理员页面。 2、用户输入错误的用户名或者密码或者验证码需要错误信息提示&#xff08;数据校验&#xff09; 二、实现步骤 1、新建一个项目&#xff08;创建项目过程和数据库略&#xff0c;…

签完三方后无法去实习,有什么可以弥补的吗?

作者&#xff1a;阿秀校招八股文学习网站&#xff1a;https://interviewguide.cn这是阿秀的第「228」篇原创你好&#xff0c;我是阿秀。2023届秋招已经步入尾声&#xff0c;很多小伙伴都已经找到工作&签约三方&#xff0c;慢慢结束了自己的秋招之旅&#xff0c;不过也有一些…

Local Attention和动态深度卷积间的关系

摘要 Local Vision Transformer 是分别在一个个小的局部窗口中进行注意力计算。 作者将局部注意力重新定义为通道级的局部连接层&#xff08;channel-wise locally-connected layer&#xff09;&#xff0c;并4个方面进行分析&#xff1a;两种网络的正则化方式&#xff0c;稀疏…

C语言实现九大排序算法(建议收藏!)

文章目录排序算法稳定性1. 插入排序原理排序过程代码实现性能分析2. 希尔排序原理排序过程关于增量取值代码实现性能分析3. 选择排序原理排序过程代码实现性能分析4. 堆排序原理排序过程代码实现性能分析5. 冒泡排序原理排序过程代码实现性能分析6. 快速排序原理Hoare法挖坑法前…

Easy App Locker - 给你的 mac 应用加锁保护你的隐私

Easy App Locker - 给你的 mac 应用加锁保护你的隐私 Easy App Locker可以对Mac上的单个应用进行密码保护。维护Mac上的隐私。 像如果你的某个应用存在隐私数据就可以使用该软件将此应用上锁&#xff0c;这样当你的朋友使用你的 mac 时你就不用担心你的隐私被泄露了&#xff0…

Java中创建线程的五种方式

目录&#xff1a; 前言 1.进程与线程的区别&#xff1f; 2.进程是操作系统进行资源分配的基本单位&#xff0c;而操作系统是以线程为单位进行调度的。 3. Java操作多线程&#xff0c;依赖最核心的类Thread。 4.关于start和run的区别&#xff1f; 5.使用JDK自带的工具jcon…

ArcGIS基础实验操作100例--实验7分割多部分要素

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验7 分割多部分要素 目录 一、实验背景 二、实验数据 &#xff08;1&#xff09;查看多…

第05讲:Redis主从复制

一、关于主从复制 1.1、什么是主从复制 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 1.2、主从复制的作用 读写分离&#xff0c;性能扩展容灾快速恢复 二、一主多从的实验 2.1、原…

GitHub+HEXO博客设置主题

文章目录安装主题修改站点配置文件修改主题配置文件部署到github补充由于之前使用HexoGitHub搭建了个人博客用的是最原始的主题&#xff0c;丑的一批QAQ 用一下Github上面Star最高Next主题look look&#xff01; 上节博客&#xff1a;HexoGitHub搭建个人博客 主题选取网站&a…

CnOpenData中国工业企业基本信息扩展数据

一、数据简介 拉动中国经济的三个产业中&#xff0c;工业企业占有特殊的地位&#xff0c;是推动国内经济发展的重要产业。工业是最主要的物质生产部门&#xff0c;为居民生活、各行业的经济活动提供物质产品&#xff0c;这一重要作用是其他任何产业部门都无法替代的。工业企业为…

拆串后结构化,其中按行对齐

【问题】 I have a bit weired scenario where i need to fetch data i have following three products product1 product2 product3and each product has different ids(e.g. p1345,p3453,p2345) and then each froduct have different options which are having different…

算法题刷累了就来试试游戏吧----2048小游戏----C语言实现

目录 1. 代码前的准备 2. 游戏思路及代码分析 2.1 game.h 代码分析 2.2 test.cpp代码分析 3. 完整代码 3.1 game.h 3.2 game.cpp 3.3 test.cpp 嘿嘿嘿&#xff0c;写游戏还是挺高兴的撒&#xff0c;如果你还不知道2048这个小游戏的规则&#xff0c;那么快去试试吧。不然…

项目管理误区:项目不确定性≠项目风险

项目失败的原因千千万万&#xff0c;罪魁祸首肯定跟“它”脱不了关系&#xff01; 前段时间&#xff0c;偶然看到一个求助贴引发了各路网友&#xff08;项目经理&#xff09;的热议。求助人的问题是&#xff1a;“如何管理项目中的不确定性&#xff1f;” 下面的回复已然偏离答…

Linux系统运行时参数命令--文件IO性能监控

目录 4 文件IO性能监控 4.1 I/O 的两种方式(缓存 I/O 和直接 I/O) 1 缓存 I/O 2 直接 I/O 4.2 监控磁盘I/O的命令 1 iostat IO状态 2 swapon查看分区使用情况 3 df硬盘使用情况 4 du目录文件大小 4.3 文件IO写入频繁案例分析 C/CLinux服务器开发/后台架构师【零声教育…