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

bash 复制代码
uname -r

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

2.1 确保yum包更新到最新

bash 复制代码
yum update

2.2 清除原有的docker

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

bash 复制代码
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

3、安装依赖包

bash 复制代码
yum install -y yum-utils

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

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

bash 复制代码
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装Docker引擎

bash 复制代码
yum install docker-ce docker-ce-cli containerd.io

6、启动docker

bash 复制代码
#启动docker命令
systemctl start docker
#设置开机自启命令
systemctl enable docker

其他命令

bash 复制代码
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 是否安装正常

bash 复制代码
docker run hello-world

8、问题处理

日志

bash 复制代码
[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文件,没有可以直接创建后,添加源

bash 复制代码
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"
  ]
}

重启服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

再测试docker

bash 复制代码
docker run hello-world

Docker常用命令

bash 复制代码
#查看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/

相关推荐
乙己4072 小时前
计算机网络——网络层
运维·服务器·计算机网络
飞行的俊哥2 小时前
Linux 内核学习 3b - 和copilot 讨论pci设备的物理地址在内核空间和用户空间映射到虚拟地址的区别
linux·驱动开发·copilot
huosenbulusi4 小时前
helm推送到harbor私有库--http: server gave HTTP response to HTTPS client
云原生·容器·k8s
hunter2062064 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
不会飞的小龙人5 小时前
Docker Compose创建镜像服务
linux·运维·docker·容器·镜像
张3蜂5 小时前
docker Ubuntu实战
数据库·ubuntu·docker
白粥行6 小时前
linux-ubuntu学习笔记碎记
linux·ubuntu
jerry-896 小时前
通过配置核查,CentOS操作系统当前无多余的、过期的账户;但CentOS操作系统存在共享账户r***t
linux
小歆8847 小时前
100%全国产化时钟服务器、全国产化校时服务器、全国产化授时服务器
运维·服务器