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

Docker基础(安装和命令)

语雀笔记(尚硅谷速通):尚硅谷 · 语雀

官网1:docker
官网2: docker中文网

一.Docker基础与安装

1.基本概念

Docker 是一个开源的平台,它允许你将应用程序及其依赖项打包到容器中。这些容器可以在任何安装了 Docker 的环境中快速、可靠地运行。简单来说,Docker 让你的应用在不同的电脑上都能“一键运行”,不用担心环境配置的问题。如下所示,一件部署,十分强大!!!

2.Docker如何工作

Docker 是一种开源的容器化技术,它通过容器来隔离和运行应用程序及其依赖项。

2.1. 容器化技术

  • Docker 使用容器(Container)来打包应用程序及其依赖项(如代码、运行时、系统工具、库等),确保应用程序在任何环境中都能一致运行。
  • 容器是轻量级的、可移植的,与虚拟机不同,容器共享宿主机的操作系统内核,而不是每个容器都运行一个完整的操作系统。

2.2. Docker 的核心组件

  • Docker 镜像(Image)
    镜像是一个只读的模板,包含了运行应用程序所需的所有内容(代码、依赖项、配置等)。镜像可以被用来创建容器。
  • Docker 容器(Container)
    容器是镜像的运行实例。容器是隔离的、独立的运行环境,多个容器可以同时在一台宿主机上运行。
  • Docker 守护进程(Docker Engine)
    守护进程负责管理容器的生命周期,包括创建、启动、停止和删除容器。

2.3. Docker 的工作流程

  1. 镜像构建
    用户通过 Dockerfile 定义应用程序的环境和依赖项,Docker 根据 Dockerfile 构建一个镜像。
  2. 镜像存储
    构建好的镜像可以存储在本地,也可以推送到 Docker Hub 或其他镜像仓库。
  3. 容器运行
    用户从镜像创建容器实例,容器在宿主机上运行,共享宿主机的内核,但通过命名空间(Namespace)和控制组(Cgroup)实现资源隔离。
  4. 容器管理
    Docker 提供命令行工具(Docker CLI)来管理容器,包括启动、停止、删除容器等。

2.4. Docker 的优势

  • 轻量化:容器比虚拟机更轻量,启动速度快,资源占用少。
  • 一致性:应用程序在开发、测试和生产环境中行为一致。
  • 可移植性:容器可以在任何支持 Docker 的环境中运行,无需修改。

2.5. Docker 与虚拟机的区别

  • 虚拟机(VM)运行完整的操作系统,而 Docker 容器共享宿主机的内核,因此容器更高效、更轻量。
  • 容器的启动时间通常以秒为单位,而虚拟机可能需要几分钟。

总结来说,Docker 通过容器化技术实现了应用程序的高效打包、分发和运行,同时保证了环境的一致性和资源的高效利用。

3.Docker安装

3.1前置条件

csdn博客参考:使用Linux操作系统安装

安装教程

  • 重新安装Linux系统,不需要界面化
  • 配置网络!!!!用户安装并配置SSH服务[允许root用户登录]
  • 密码:abc1978255929
  • 远程连接:192.168.121.130

  • 【远程工具】- MobaXterm 的下载与连接,重点:免费

3.2安装Docker

配置Linux为本地源 并安装Docker

备份原配置文件

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

可以下载阿里云的yum 源配置文件

curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo/Centos-7.repo

清楚缓存 生成新的缓存

yum clean all

yum makecache

等待执行完成后。更新系统包为最新的。得等待一会

sudo yum update -y

安装依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置Docker源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装CE版本的Docker (会失败 “TCP connection reset by peer”多执行几次,或者隔一会执行一次)

sudo yum install -y docker-ce

启动并设置开机自启

sudo systemctl start docker

sudo systemctl enable docker

查看是否启动

systemctl status docker

报错修正:

cd /etc/yum.repos.d
# 备份原有的源
cp CentOS-Base.repo CentOS-Base.repo.back
#下载国内源的 YUM 配置文件 (本文采用阿里源,需要其他可自行百度)
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 如果没有wget 可以使用curl命令
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理 YUM 缓存
sudo yum clean all
sudo yum makecache
# 验证新源是否可用 会看到都是阿里的源
sudo yum repolist

3.3安装命令

失败了,就老老实实地使用自己的阿里云服务器了,使用远程连接,Docker在上面部署练习了。

# 移除旧版本docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin#启动docker(每次手动)
sudo systemctl start docker
# 查看docker正在运行中的运用
docker ps# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com","https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二.Docker命令

#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448#运行一个新容器
docker run nginx
#停止容器
docker stop keen_blackwell
#启动容器
docker start 592
#重启容器
docker restart 592
#查看容器资源占用情况
docker stats 592
#查看容器日志
docker logs 592
#删除指定容器
docker rm 592
#强制删除指定容器
docker rm -f 592
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar # 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0

三.连接MySQL

好的!以下是完整的步骤,帮助你进入 Docker 容器并使用 mysql 命令连接到 MySQL 服务。

步骤 1:确认容器是否运行

首先,确保你的 MySQL 容器 gmalldocker_mysql 已经启动并运行。运行以下命令:

docker ps

如果容器未运行,可以查看所有容器(包括已停止的容器):

docker ps -a

如果容器未启动,可以启动它:

docker start gmalldocker_mysql

步骤 2:进入容器的 Shell 环境

使用以下命令进入容器的 Shell 环境:

docker exec -it gmalldocker_mysql /bin/bash
参数说明:
  • -i:交互模式。
  • -t:分配一个伪终端。
  • /bin/bash:进入容器的 Bash Shell。

如果容器使用的是 ash 或其他 Shell,可以尝试:

docker exec -it gmalldocker_mysql /bin/sh

步骤 3:在容器内部连接 MySQL

进入容器后,你可以使用 mysql 命令连接到 MySQL 服务。运行以下命令:

mysql -u root -p
#展示一下数据库
show databases;
参数说明:
  • -u root:以 root 用户身份登录。
  • -p:提示输入密码。

输入你在启动容器时设置的密码(例如 root)。

步骤 4:验证 MySQL 连接

如果连接成功,你会看到 MySQL 提示符:

mysql>

你可以运行一些简单的命令来验证,例如:

SHOW DATABASES;

步骤 5:退出 MySQL 和容器

完成操作后,可以退出 MySQL:

EXIT;

然后退出容器的 Shell:

exit

总结

  1. 确认容器是否运行,必要时启动容器。
  2. 使用 docker exec -it 进入容器的 Shell 环境。
  3. 在容器内部运行 mysql -u root -p 连接到 MySQL 服务。
  4. 使用 MySQL 命令操作数据库。
  5. 完成后退出 MySQL 和容器。

如果在任何步骤中遇到问题,请随时告诉我,我会帮助你解决!

http://www.xdnf.cn/news/2954.html

相关文章:

  • 第三节:用户和用户组管理
  • 测试——BUG篇
  • python类中的 __contains__方法是什么?
  • unity Orbbec Femto Bolt接入unity流程记录 AzureKinectExamples 插件 使用记录
  • oracle 批量查询每张表的数据量
  • RoPE 相对位置编码 VS 传统位置编码
  • neo4j vs python
  • Canal使用
  • 巧记英语四级单词 Unit7-上【晓艳老师版】
  • 【应用密码学】实验三 流密码(ZUC)
  • 智能电子白板的设计与实现:从硬件选型到软件编程
  • 【ArcGIS微课1000例】0143:什么是ovkml,如何转换为kml与shp?
  • 使用 OpenCV 实现图像中心旋转
  • SpringBoot获取用户信息常见问题(密码屏蔽、驼峰命名和下划线命名的自动转换)
  • Spring Cloud 项目中优雅地传递用户信息:基于 Gateway + ThreadLocal 的用户上下文方案
  • 破解工业协议孤岛:迈威MaxGate系列工业智能网关覆盖全场景需求
  • docker-vllm运行大模型
  • KUKA机器人快速启动设置
  • python:sklearn 主成分分析(PCA)
  • 本地大模型编程实战(28)查询图数据库NEO4J(1)
  • 四.割草机技术总结--4.基站发送给流动站的差分数据传输标准RTCM
  • ShenNiusModularity项目源码学习(25:ShenNius.Admin.Mvc项目分析-10)
  • pytest-前后置及fixture运用
  • GrapesJS 终极定制组件设计方案:扁平化对象属性编辑、多区域拖拽、多层嵌套与组件扩展实战
  • CentosLinux系统crontab发现执行删除命令失效解决方法
  • C语言(5)—函数
  • 计算机毕业设计--基于深度学习(U-Net与多尺度ViT)的车牌模糊图像修复算法设计与实现(含Github代码+Web端在线体验界面)
  • 大模型在肾癌诊疗全流程中的应用研究报告
  • transformer-实现单层Decoder 层
  • iOS签名的包支持推送功能吗?