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 的工作流程
- 镜像构建:
用户通过Dockerfile
定义应用程序的环境和依赖项,Docker 根据Dockerfile
构建一个镜像。 - 镜像存储:
构建好的镜像可以存储在本地,也可以推送到 Docker Hub 或其他镜像仓库。 - 容器运行:
用户从镜像创建容器实例,容器在宿主机上运行,共享宿主机的内核,但通过命名空间(Namespace)和控制组(Cgroup)实现资源隔离。 - 容器管理:
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
总结
- 确认容器是否运行,必要时启动容器。
- 使用
docker exec -it
进入容器的 Shell 环境。 - 在容器内部运行
mysql -u root -p
连接到 MySQL 服务。 - 使用 MySQL 命令操作数据库。
- 完成后退出 MySQL 和容器。
如果在任何步骤中遇到问题,请随时告诉我,我会帮助你解决!