Docker基础安装与使用

news/2025/1/23 9:40:19/

Docker 简介

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它通过将应用程序及其依赖项打包到一个轻量级的、可移植的容器中,实现了应用程序的快速部署和跨环境一致性。

Docker 的核心概念

容器(Container):是一个轻量级的、独立的、可执行的软件包,包含运行应用程序所需的所有内容:代码、运行时、系统工具、库和设置。容器与虚拟机不同,它共享主机操作系统的内核,因此更加轻量级和高效。

镜像(Image):是一个只读模板,用于创建容器。它包含应用程序运行所需的所有文件和配置,可以从 Docker Hub(公共镜像仓库)或私有仓库中拉取,也可以通过 Dockerfile 构建。

Dockerfile: 是一个文本文件,包含一系列指令,用于定义如何构建 Docker 镜像。

仓库(Repository):是用于存储和分发 Docker 镜像的地方。Docker Hub 是最常用的公共仓库。

卷(Volume):用于持久化容器中的数据。即使容器被删除,卷中的数据仍然保留。卷可以挂载到容器的指定目录,例如数据库数据目录。

网络(Network):Docker 提供了网络功能,允许容器之间或容器与外部网络进行通信。支持多种网络模式,如桥接网络(bridge)、主机网络(host)和覆盖网络(overlay)。

Docker安装

docker支持多个操作系统环境上安装,所支持的平台参见官方文档说明:https://docs.docker.com/engine/install/

1、查看服务器内核版本

Docker要求CentOS系统的内核版本高于3.10

uname -r

2、首先卸载已安装的Docker(如果有)

2.1 确保yum包更新到最新

yum update

2.2 清除原有的docker

如果你的操作系统没有安装过Docker , 就不需要执行卸载命令。

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

4、建立Docker仓库 (映射仓库地址)

阿里docker镜像源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装Docker引擎

yum install docker-ce docker-ce-cli containerd.io

6、启动docker

#启动docker命令
systemctl start docker
#设置开机自启命令
systemctl enable docker

其他命令

sudo systemctl start docker     #运行Docker守护进程
sudo systemctl stop docker      #停止Docker守护进程
sudo systemctl restart docker   #重启Docker守护进程
sudo systemctl enable docker    #设置Docker开机自启动
sudo systemctl status docker    #查看Docker的运行状态systemctl cat docker #查看Docker启动命令

7、测试 Docker 是否安装正常

docker run hello-world

8、问题处理

日志

[root@centos72 opt]# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": read tcp 192.168.1.3:40736->52.1.184.176:443: read: connection reset by peer.
See 'docker run --help'.

原因:

问题是因为docker镜像源无法连接的问题,需要配置国内的docker源;修改/etc/docker/daemon.json文件,没有可以直接创建后,添加源

vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com","https://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://docker.m.daocloud.io","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.aliyun.com","http://mirrors.163.com/centos","https://repo.huaweicloud.com"]
}

重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

再测试docker

docker run hello-world

Docker常用命令

#查看docker版本命令
docker version
#查看docker配置信息
docker info#查看所有创建的容器
docker ps -a
#删除所有已停止的容器
docker container prune
#强制删除指定容器(不删除绑定的卷)
docker rm -f NAME_XXX
#删除指定容器并删除绑定的卷
docker rm -v NAME_XXX
#启动指定名称容器
docker start NAME_XXX
#停止指定名称容器,并在kill掉之前停止5s
docker stop -t 5 NAME_XXX
#重启指定名称容器
docker restart NAME_XXX
#删除所有已停止的容器、未使用的网络、悬空的镜像和构建缓存(如未使用的卷、网络和镜像)
docker system prune
# 加 -a 参数可以删除所有未使用的镜像(不仅仅是悬空的镜像)
docker system prune -a#镜像
#显示已拉取镜像
docker images
# 查找中央仓库镜像
docker search nginx
#查看指定镜像已拉取清单
docker image list nginx
#查看镜像的详细信息,包括支持的架构和标签
docker manifest inspect nginx
#拉取最新镜像
docker pull nginx:latest#创建并运行容器
docker run nginx
#创建并运行容器,并指定容器内存、cpu等使用量和端口映射、卷目录映射
docker run --name=portainer -d \-c 2 -m 512m --memory-swap=1G \-p 9000:9000 \-v /var/run/docker.sock:/var/run/docker.sock \-v /opt/docker/sysdata/portainer_data:/data \-e APP_ENV="production" \--restart unless-stopped \portainer/portainer-ce:latest \#进入指定容器内部系统
docker exec -it nginx /bin/bash
#查看容器详细信息
docker inspect nginx
#查看容器运行日志
docker logs nginx
#查看容器资源使用状态
docker stats nginx
#查看容器内进程
docker top nginx
#查看容器端口映射
docker port nginx
#查看容器文件系统变更
docker diff nginx
#查看容器元数据(网络配置、持载点、环境变量等)
docker container inspect nginx

查看官网仓库各镜像与版本

https://hub.docker.com/

参考:

https://blog.csdn.net/weixin_50367873/article/details/137927099

https://docs.docker.com/engine/install/centos/


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

相关文章

嵌入式Linux驱动--并发与竞争

一.并发与竞争 定义:并发是指多个程序同时访问一个共享资源。当这种情况发生时,由于同时访问而产生的就是竞争问题。例子:例如A和B要打电话,但公共电话只有一部。因此,谁先打电话就形成了竞争。然而,电话…

Unity中在UI上画线

在UI中画一条曲线 我封装了一个组件,可以实现基本的画线需求. 效果 按住鼠标左键随手一画. 用起来也很简单,将组件挂到空物体上就行了,红色的背景是Panel. 你可以将该组件理解为一个Image,只不过形状更灵活一些罢了,所以它要放在下面的层级(不然可能会被挡住). 代码 可以…

ios文件管理,沙盒机制以及如何操作“文件”APP,把文件共享到文件app

首先,系统是一个整体,那每个app是相互独立的,系统为每个app分配了一定的存储空间,也就是我们说的沙盒,每个app有自己独立的沙盒,文件存储在沙盒中,正常情况下app相互之间数据是不可以共享以及访…

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件&#xff0c;到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目&#xff0c;从项目的main示例拷贝过来。 CameraOnvif.h #pragma once#include <QObject> #include &l…

Node.js 能做什么

一、服务器端开发 1. 构建 Web 服务器 使用内置的 http 模块或流行的框架&#xff08;如 Express、Koa 等&#xff09;创建 Web 服务器&#xff0c;处理 HTTP 请求和响应。可以处理各种类型的请求&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并返回相应的 HTML、JS…

《2024年度网络安全漏洞威胁态势研究报告》

2024年&#xff0c;全球网络安全领域继续面对日益严峻的挑战。在数字化转型的大背景下&#xff0c;漏洞利用成为网络攻击的重中之重。根据统计&#xff0c;全球新增漏洞数量再创新高&#xff0c;漏洞的复杂性加剧&#xff0c;修复周期也在不断缩短。然而&#xff0c;攻击者的手…

C++17 新特性解析:Lambda 捕获 this

C17 引入了许多改进和新特性&#xff0c;其中之一是对 lambda 表达式的增强。在这篇文章中&#xff0c;我们将深入探讨 lambda 表达式中的一个特别有用的新特性&#xff1a;通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性&#xff0c;还极大地简化了某些场景下…

R6学习打卡

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 LSTM-糖尿病预测 数据导入初始化模型定义损失训练模型模型评估个人总结 import torch.nn as nn import torch.nn.functional as F import torchvision,torchim…