# 基础理解

# 安装操作

# 1.卸载 系统默认的 残余

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

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
1
2
3
4
5
6
7
8

# 2.配置docker 仓库 yum源

# 安装 yum 工具
sudo yum install -y yum-utils

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

# 3.安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

# 不想慢 可以换 yum 加速源
1
2
3
4
5
6

# 4.启动和校验

# 启动docker
sudo systemctl start docker

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

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

# 检查版本
docker -v

# 查看镜像
docker images

# 停止docker
sudo systemctl stop docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 5.设置 docker 开机自启动

sudo systemctl enable docker

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

# 6.配置docker镜像加速

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

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

安装 Docker 软件后,您可以直接通过 docker pull 命令拉取镜像。如您未配置镜像加速源,直接拉取 DockerHub 中的镜像,通常下载速度会比较慢。 为此,我们推荐您使用腾讯云 Docker 镜像源加速镜像下载。不同操作系统的详细操作步骤略有区别,请使用对应的操作步骤进行配置。 适用于 Linux 操作系统实例:

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

vim /etc/docker/daemon.json
1

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

{
   "registry-mirrors": [
   "https://mirror.ccs.tencentyun.com"
  ]
}
1
2
3
4
5

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

sudo systemctl restart docker
1

# 基本命令

# 拉取镜像
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  • 排查错误
#使用docker cp命令复制文件到宿主机:
#如果你想查看容器内的文件,但不想进入容器,你可以使用docker cp命令将文件或目录从容器复制到宿主机。

docker cp <container-id-or-name>:/path/to/container/file /path/to/destination/on/host
# /path/to/container/file:容器内文件或目录的路径。
# /path/to/destination/on/host:宿主机上的目标路径。

#使用docker logs查看容器日志:
#如果你需要查看应用的日志输出,可以使用docker logs命令。
docker logs <container-id-or-name>

#使用docker inspect获取容器的详细信息:
#虽然docker inspect主要用于获取容器的配置和状态信息,但它也可以帮助你了解容器的存储卷和挂载点。
docker inspect <container-id-or-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 容器化 docker 安装 Mysql

# 执行命令 安装并运行 mysql

docker run -d \
 -- name mysql \
 -p 3306:3306 \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=root \
 mysql
#大概率直接报错,运行下面吧
1
2
3
4
5
6
7
# 上面实在无法执行的话执行下面
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=root \
  mysql/mysql-server
1
2
3
4
5
6
7
  • 解释
这是一个使用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实例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 解决报错 Error response from daemon

docker: Error response from daemon: pull access denied for name, repository does not exist or may require 'docker login':
1

# 注册&登录 dockerhub

  • 使用命令
docker login
# 之后输入 dockerhub 注册的用户名和密码
# 输出 Login Succeeded 即可
1
2
3

# 容器化 docker 运行nginx的过程

# 在 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>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# docker 手动运行 nignx 跑网页项目

docker run -d \
 -- name ngnix1 \
 -p 80:80 \
 nginx
1
2
3
4

# 数据卷

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

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

# 基本使用命令:

# 创建数据卷
docker volume create <name>
  
# 查看
docker volume ls <name>
  
# 查看某个数据卷详情
docker volume inspect <name>
  
# 删除
docker volume rm <name>
  
# 清空数据卷
docker volume prune
  
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 常用镜像容器数据卷目录

# nginx
/usr/share/nginx/html

# mysql 

1
2
3
4
5