当前位置: 首页 > article >正文

Docker基础安装与使用

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.kler.cn/a/516548.html

相关文章:

  • 亚马逊新店铺流量怎么提升?自养号测评新趋势
  • Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭
  • 【橘子ES】Kibana的分析能力Analytics简易分析
  • RabbitMQ 高级特性
  • Picsart美易照片编辑器和视频编辑器
  • 移动端VR处理器和传统显卡的不同
  • LatentSync数字人,一键批量,口型同步,MPS加速(WIN/MAC)
  • 设计模式Python版 单例模式
  • c#的tabControl控件实现自定义标签颜色
  • 【SpringBoot实现xss防御】
  • 期权帮|在股指期货中超过持仓限额怎么办?
  • 【Redis】持久化机制
  • 【JVM】垃圾收集器详解
  • 解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题
  • 4_高并发内存池项目_高并发池内存释放设计_ThreadCache/CentralCache/PageCache回收并释放内存
  • 人工智能技术在低空经济产业的应用
  • MyBatis-Plus之BaseMapper
  • 关于为什么java中nextInt()和nextLine()不能混用 | nextInt()和nextInt()之类的可以一起用
  • 设计模式Python版 简单工厂模式
  • OpenEuler学习笔记(十):用OpenEuler搭建web服务器
  • 【MCU】DFU、IAP、OTA
  • cursor重构谷粒商城05——docker容器化技术快速入门【番外篇】
  • Mac 查看 Java SDK 和 Android SDK 的路径
  • 输入网址到网页显示,发生了什么--讲述
  • linux静态库+嵌套makefile
  • 【深度学习】 自动微分