【Docker】Docker基础教程

🦖我是Sam9029,一个前端
🐱‍🐉🐱‍🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求收藏,求评论,求一个大大的赞!👍

基础理解

安装操作

1.卸载 系统默认的 残余

若有旧版本的docker,推荐先卸载掉

shell 复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.配置docker 仓库 yum源

shell 复制代码
# 安装 yum 工具
sudo yum install -y yum-utils

# 安装成功 配置docker yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装docker

shell 复制代码
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 过程超慢 等了近一个小时
# 看的最后 输出 Complete! 就是成功

# 不想慢 可以换 yum 加速源

4.启动和校验

shell 复制代码
# 启动docker
sudo systemctl start docker

# 使用 docker 输入命令
sudo docker run hello-world

#执行docker ps命令,如果不报错,说明安装启动成功
docker ps

# 检查版本
docker -v

# 查看镜像
docker images

# 停止docker
sudo systemctl stop docker

5.设置 docker 开机自启动

shell 复制代码
sudo systemctl enable docker

# Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# 输出上诉命令即为成功!

6.配置docker镜像加速

  • 类似 npm 源,
  • 这里和yum源加速不是一个东西,yum源加速是下载 docker 本身
  • 这里加速的 docker 本身软件 下载镜像时的加速

使用腾讯云 Docker 镜像源加速镜像下载

安装 Docker 软件后,您可以直接通过 docker pull 命令拉取镜像。如您未配置镜像加速源,直接拉取 DockerHub 中的镜像,通常下载速度会比较慢。

为此,我们推荐您使用腾讯云 Docker 镜像源加速镜像下载。不同操作系统的详细操作步骤略有区别,请使用对应的操作步骤进行配置。

适用于 Linux 操作系统实例:

1.1 执行以下命令,打开 /etc/docker/daemon.json 配置文件。

shell 复制代码
vim /etc/docker/daemon.json

1.2 按 i 切换至编辑模式,添加以下内容,并保存。

shell 复制代码
{
   "registry-mirrors": [
   "https://mirror.ccs.tencentyun.com"
  ]
}

1.3 执行以下命令,重启 Docker 即可。示例命令以 CentOS 7 为例。

shell 复制代码
sudo systemctl restart docker

基本命令

shell 复制代码
# 拉取镜像
docker pull <name>

# 查看镜像
docker images

# 删除镜像
docker rmi <name>

# 运行镜像
docker run [OPTIONS] IMAGE [COMMAND]
# [OPTIONS] 前置配置
# [COMMAND] 指令
# eg
docker run -d \
 -- name mysql \
 -p 3306:3306 \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=root \
 mysql/mysql-server

# -v 数据卷挂载 语法【 -v 宿主机:容器内 】宿主机的目录必须以 ./ 或 / 开头
docker run -d \
 -- name nginx \
 -p 80:80 \
 -v /path/path:/path/path
 nginx


# 查看容器
docker ps

#查看所有容器(包括已停止的容器)
docker ps -a 
# 状态为 "Exited",则表示容器已停止

# 启动容器&重新启动容器
docker start <容器ID或名称>
docker stop <容器ID或名称>

# 容器中执行命令
docker exec <容器名称或ID> ls #查看容器内文件
# eg 
# -it 表示 交互式终端 模式
docker exec -it <id&name> sh 
#退出时 输入 exit 并按回车键

# 移除容器 -- 移除前需要 停止容器
docker rm <容器ID或名称>

# 强制移除容器 (无论容器状态),强制删除正在运行的容器可能会导致数据丢失或应用程序错误,请确保不需要该容器后再删除
docker rm -f <容器ID或名称>

# 查看容器运行日志
docker logs <容器ID或名称> 

# 查看镜像软件的版本

# 查看配置信息
docker info

容器化 docker 安装 Mysql

执行命令 安装并运行 mysql

shell 复制代码
docker run -d \
 -- name mysql \
 -p 3306:3306 \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=root \
 mysql
#大概率直接报错,运行下面吧
shell 复制代码
# 上面实在无法执行的话执行下面
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql/mysql-server
  • 解释

    这是一个使用Docker运行MySQL的命令。下面是对命令中各个参数的解释:

    1. docker run:这是Docker命令,用于运行一个Docker容器。 -d 是让容器在后台运行

    2. --name mysql:为Docker容器指定一个名称,这里设置为mysql

    3. -p 3306:3306:将主机的3306端口映射到容器的3306端口。这意味着你可以在主机上通过3306端口访问MySQL服务。

    4. -e TZ=Asia/Shanghai:设置容器的时区为Asia/Shanghai。这将影响容器内应用程序的时间和日期处理。

    5. -e MYSQL_ROOT_PASSWORD=root:设置MySQL的root用户的密码为root。这将允许你使用此密码登录MySQL。

    6. mysql:这是要运行的Docker镜像名称。Docker将从Docker Hub下载名为mysql的镜像,并根据上述参数运行一个MySQL容器。

    总之,这个命令将下载并运行一个名为mysql的Docker容器,映射主机的3306端口到容器的3306端口,设置时区为Asia/Shanghai,并将root用户的密码设置为root。在容器运行后,你可以使用mysql命令行客户端或其他MySQL客户端工具连接到这个MySQL实例。

解决报错 Error response from daemon

shell 复制代码
docker: Error response from daemon: pull access denied for name, repository does not exist or may require 'docker login':

注册&登录 dockerhub

  • 使用命令
shell 复制代码
docker login
# 之后输入 dockerhub 注册的用户名和密码
# 输出 Login Succeeded 即可

# 容器化 docker 安装 nginx的过程

shell 复制代码
# 在 docker hub 中搜索 nginx 镜像
# 拉取 nginx 镜像
# 查看本地镜像
# 创建并运行nginx容器
# 查看容器
# 停止容器
# 启动容器
# 进入容器执行命令
# 删除容器

# 记得使用 docker login 检查登录 
docker pull nginx
docker images
docker run -d \
 -- name ngnix \
 -p 80:80 \
 nginx
docker ls #  docker ls -a
docker stop <id>
docker start <id>
docker exec <id> ls #exit 退出
docker rm <id>

数据卷

数据卷volume是一个虚拟目录,是容器内目录宿主机目录之间的影射桥梁

目标:便于操作容器内文件

基本使用命令:

shell 复制代码
# 创建数据卷
docker volume create <name>
  
# 查看
docker volume ls <name>
  
# 查看某个数据卷详情
docker volume inspect <name>
  
# 删除
docker volume rm <name>
  
# 清空数据卷
docker volume prune
  
  

常用镜像容器数据卷目录

shell 复制代码
# nginx
/usr/share/nginx/html

# mysql 

🦖我是Sam9029,一个前端

文章若有错误,敬请指正🙏

🐱‍🐉🐱‍🐉恭喜你,都看到这了,求收藏,求评论,求一个大大的赞👍!不过分吧

Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主

相关推荐
GHL2842710905 分钟前
无法连接服务端socket
linux·服务器·网络
kylezhao20197 分钟前
S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
运维·服务器
阿华hhh21 分钟前
项目(购物商城)
linux·服务器·c语言·c++
摸鱼仙人~28 分钟前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
爬山算法1 小时前
Hibernate(30)Hibernate的Named Query是什么?
服务器·前端·hibernate
AC赳赳老秦1 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
菜鸟思维1 小时前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
学Linux的语莫1 小时前
linux的root目录缓存清理
linux·运维·服务器
oMcLin1 小时前
如何在 SUSE Linux Enterprise Server 15 上部署并优化 K3s 集群,提升轻量级容器化应用的资源利用率?
linux·运维·服务器
怣疯knight1 小时前
Docker Desktop 4.55.0版本安装成功教程
windows·docker