🥳🥳Welcome Huihui's Code World ! !🥳🥳
接下来看看由辉辉所写的关于Docker的相关操作吧
目录
🥳🥳Welcome Huihui's Code World ! !🥳🥳
1.Docker为什么出现
????????我们在开发过程中,可能经常会遇到这种问题。当项目中自己负责的模块完成时,每个工程师都会使用自己的开发环境来构建和测试应用程序。这就会导致一个常见的问题:当一个工程师将代码提交给源代码管理系统后,另一个工程师在拉取代码并尝试构建时,经常会遇到依赖项不一致的问题。有时候,即使两个工程师使用相同的依赖版本,由于操作系统或系统库的差异,也会导致应用程序在不同环境中表现出不同的行为。
????????同时,公司的运维团队在部署应用程序时也遇到了一些问题。他们使用了一些脚本和配置文件来手动安装和配置应用程序的依赖项。这个过程非常耗时且容易出错,导致了频繁的部署失败和生产环境中的故障。
????????于是就有人想到将应用程序及其所有依赖打包到一个容器中。这个容器包含了应用程序所需的所有运行时环境、库和配置文件。通过使用这个容器,就可以确保每个开发人员、测试人员和运维人员都使用相同的容器来工作,消除了因为环境差异而导致的兼容性问题。这个容器就是Docker
2.Docker是什么
????????上面也讲到了Docker的定义,但是这里我再详细的描述一下Docker。
?????????Docker是一种开源的容器化平台,它可以让开发者将应用程序及其所有依赖项打包到一个轻量级、可移植的容器中,并在任何地方运行这些容器,无论是在开发、测试还是生产环境中。Docker使用了Linux容器技术来实现这个功能,通过隔离进程、文件系统和网络空间等资源,使得容器内的应用程序可以独立于宿主操作系统而运行。???????
3.Docker有什么作用
轻量级和可移植性:Docker使用容器化技术,将应用程序及其所有依赖项打包到一个轻量级的容器中。这使得容器可以在不同的环境中运行,而不受宿主操作系统和硬件的影响。容器可以在开发、测试和生产环境之间进行快速、一致和可靠的部署。
环境隔离:Docker通过使用Linux容器技术,实现了应用程序与宿主操作系统之间的隔离。这意味着每个Docker容器都具有独立的文件系统、进程空间和网络栈,相互之间不会产生干扰。这种隔离性使得开发人员可以在同一台机器上同时运行多个容器,而不必担心它们之间的冲突和依赖关系。
一致性和可重复性:Docker镜像是一个只读的模板,其中包含了应用程序及其所有的依赖项、运行时环境、库和配置文件等。通过使用Docker,开发者可以确保每个人都使用相同的镜像来构建和运行应用程序,消除了因为环境差异而导致的兼容性问题。这种一致性和可重复性使得团队成员可以更加方便地共享和协作。
快速部署和扩展:Docker提供了一系列强大的工具和功能来简化应用程序的部署和扩展过程。通过使用Docker镜像,开发者可以快速创建新的容器,并将其部署到任何支持Docker的主机上。此外,Docker还提供了容器编排工具,如Docker Compose和Kubernetes,可以自动化应用程序的扩展、负载均衡和故障恢复等操作。
版本控制和回滚:Docker镜像可以被版本控制系统管理,使得开发者可以轻松地跟踪和管理应用程序的不同版本。如果出现问题,开发者可以快速回滚到之前的版本,以避免影响生产环境。
在Docker出现之前,我们都是使用虚拟机来测试和部署项目的,但使用虚拟机也会有弊端。在同一台物理机上运行多个虚拟机时,会导致资源竞争,降低系统性能等。但是Docker就不一样了...
4.Docker三要素
?Docker的核心组件包括Docker仓库、Docker镜像和Docker容器。
- Docker仓库是集中存放镜像文件的场所。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。? ? ? ? ? ?
- Docker镜像是一个只读的模板,其中包含了应用程序及其所有依赖项、运行时环境、库和配置文件等。【Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用。】
- Docker容器则是从Docker镜像创建的运行实例,它可以被启动、停止、重启、删除等。
5.Docker和虚拟机的区别
- VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓 库,然后再安装应用;
- Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装 应用。
Docker的安装是在虚拟机上操作的,关于虚拟机的安装,我也写了一篇很详尽的博文,感兴趣可以看看
【Linux】操作系统以及虚拟机的安装与配置http://t.csdnimg.cn/ZyckP
1.检查内核版本
uname -r
2.卸载可能存在的旧版本
如果有旧版本存在的话,就将其卸载掉
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
3.安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
成功了便是这样的
4.添加docker-ce安装源
这里为了快捷,我是用的是阿里源,所以需要先配置阿里云Docker Yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新yum缓存
yum makecache fast
6.安装docker-CE
yum -y install docker-ce
1.基本操作
(1)查看服务状态
systemctl status docker
(2)启停服务
①开启服务
systemctl start docker
②停止服务
systemctl stop docker
③重启服务
systemctl restart docker
(3)开机自启
systemctl enable docker
(4)开机不自启
systemctl disable docker
2.镜像的相关操作
(1)查看是否有镜像
docker images
(2)下载镜像
①配置加速器
进入阿里云网站,然后进入到控制台
将其中配置靖江加速器的那一段代码复制下来,赋值对应版本的就行【我使用的是centos】
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://vq5w5mzb.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
将这个执行完毕之后,也可以检查一下,直接查看这个文件,里面有东西,就说明好啦
②下载镜像
后面可以指定版本号,如果没有指定的话,默认使用的是最新版本的
docker pull nginx
(3)查看宿主机上的镜像
docker images
(4)删除镜像
如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像。 正确做法:先删除依赖该镜像的所有容器, 再来删除镜像
docker rmi centos
还有一个是强制删除
docker rmi -f centos:latest
3.容器相关的操作
(1)创建容器
-it:是两个参数,
-i:interactive容器具有交互功能
-t:容器将提供伪终端
--name:指定生成的容器的名字,允许空,如果不指定会自动生成
docker create -it centos
指定成的容器的名字
docker create -it --name centos01 centos
(2)启动容器
docker start 容器ID|name|name:tag
(3)停止容器
docker stop 容器ID|name|name:tag
(4)重启容器
docker restart 容器ID|name|name:tag
(5)查看当前的容器
docker ps
或者使用这个,可以查看未运行的容器
docker ps -a
(6)删除容器
docker rm 容器ID
强制删除
docker rm -f 容器ID
(7)进入容器
用这个进入容器时,前面会显示出此容器的ID
docker exec -it 容器ID/容器NAME /bin/bash
这个不会显示容器ID
docker exec -it 容器ID/容器NAME sh
(8)退出容器
- 退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
- 如果不想继续运行:按【ctrl+d】或输入exit