赞
踩
在传统的软件开发和部署过程中,经常会遇到诸如“开发环境和生产环境不一致”、“依赖环境冲突”、“部署困难”等问题。为了解决这些问题,容器化技术应运而生。Docker 作为最受欢迎的容器平台之一,已经在业界得到广泛应用。它不仅简化了软件的开发、交付和运维流程,还提高了系统的可移植性、可扩展性和安全性。
Docker 是一个开源的容器平台,旨在帮助开发人员轻松地打包、交付和运行应用程序。通过 Docker,开发人员可以将应用程序及其所有依赖项(如代码、运行时环境、库、配置文件等)打包到一个称为 Docker 镜像的独立可执行软件包中。这些 Docker 镜像可以在任何装有 Docker 引擎的环境中运行,无需进行额外的配置。
镜像(Image):容器的基础,是一个只读模板,包含了运行容器所需的所有文件和配置信息。可以将镜像看作是容器的源代码,通过它可以创建多个容器实例。
容器(Container):从镜像创建的可运行实例。每个容器都是相互隔离的、独立运行的环境,包含了应用程序及其运行时环境。
仓库(Repository):用于存储和组织镜像的集合。可以将镜像推送到仓库中,也可以从仓库中拉取镜像到本地。
环境一致性:Docker 可以确保在不同的环境中运行相同的应用程序,消除了“开发环境和生产环境不一致”的问题。
快速部署:Docker 镜像可以快速部署,无需进行复杂的配置和安装过程,大大提高了应用程序的交付速度。
资源隔离:每个 Docker 容器都运行在独立的环境中,相互之间互不干扰,有效地实现了资源隔离和应用程序间的解耦。
可扩展性:Docker 容器可以根据需要进行水平或垂直扩展,轻松应对不同规模和负载的需求。
持续集成和持续交付(CI/CD):Docker 与 CI/CD 流程无缝集成,使得自动化部署和交付成为可能,加快了软件开发周期。
首先如果系统中已经存在旧的Docker,则先卸载:
- yum remove docker \
- docker-client \
- docker-client-latest \
- docker-common \
- docker-latest \
- docker-latest-logrotate \
- docker-logrotate \
- docker-engine
首先要安装一个yum工具:
yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
这里以阿里云镜像加速为例。
首先访问阿里云网站:
注册一个账号。
在首页的产品中,找到阿里云的容器镜像服务:
首次可能需要选择立刻开通,然后进入控制台。
找到镜像工具下的镜像加速器:
页面向下滚动,即可找到配置的文档说明:
# 创建目录
mkdir -p /etc/docker
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF
# 重新加载配置
systemctl daemon-reload
# 重启Docker
systemctl restart docker
Docker会下载(拉取)运行应用程序所需的一切:代码、运行时环境、系统工具、库 等,镜像是一个可移植的软件打包方式,使应用程序可以在任何装有 Docker 引擎的环境中运行,而不需要额外的配置。比如配置文件什么都有。
守护进程主要作用是在系统中提供某种服务或功能,并在系统启动时自动启动,持续运行以处理特定的任务或事件。Docker底层就有这样的机制,存在这一个守护线程,持续监视着服务的变化。当进行了Docker run命令,守护线程就会查看本地仓库是否含有这个镜像,没有就会到镜像仓库去下载。
-p 宿主机端口:容器端口
为什么要进行端口映射:容器是对外隔离的,对内开放,所以需要宿主机和容器的端口进行映射,这样就可以通过使用宿主机当中介进行访问了。
镜像名称规范: 例如上述:mysql
docker run:创建并启动一个容器。
docker stop:停止一个正在运行的容器。
docker start:启动一个已经停止的容器。
docker restart:重启一个正在运行的容器。
docker rm:删除一个已经停止的容器。
docker ps:列出当前正在运行的容器。
docker images:列出本地所有的镜像。
docker pull:从 Docker 镜像仓库中拉取一个镜像。
docker push:将一个镜像推送到 Docker 镜像仓库。
docker exec:在一个正在运行的容器中执行命令。
docker logs:查看容器的日志输出。
docker build:根据 Dockerfile 构建一个自定义镜像。
数据卷是 Docker 中用于持久化存储数据的机制,它可以将宿主机文件系统中的目录或文件映射到容器内部。这样,容器可以通过数据卷访问宿主机上的文件,也可以与其他容器共享数据。
Docker 数据卷是 Docker 容器中的一种持久化数据存储方式,允许容器与宿主机或其他容器之间共享和持久化数据。数据卷可以在容器之间共享数据,同时还可以保留容器中的数据,即使容器被删除或重新创建,数据仍然会保留。
容器内的文件通过数据卷宿主机的文件进行间接的映射。
使用 -v
参数:在运行容器时,可以使用 -v
参数来创建一个数据卷。
例如:docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
其中 html 为数据卷的名称,/usr/share/nginx/html 容器内数据卷的目录。
也可以挂载到指定本地目录。
当创建容器时,如果挂载了数据卷且数据卷不存在,会动创建数据卷。
挂载后就会进行双向绑定,然后宿主机会有各种高级操作的命令,就可以对文件内容进行修改。
虽然docker中,每个容器都有独立的运行环境,但是docker只有系统运行所必须的依赖环境,目的是为了容器的轻量级,所以不会含有vi命令编辑文件,但我们又想编辑容器中的配置文件,或者运行文件,这时候就需要使用数据卷,来将docker容器中的文件与宿主机的文件进行双向绑定,但宿主机的文件进行修改,docker容器中的文件也会进行自动修改。
docker run
、docker ps
、docker stop
等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。