Docker 安装使用过程的坑
文章目录
一、Docker 简介
1. docker 是什么
- Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。
2. docker 的特点
- 灵活:即使是最复杂的应用也可以容器化。
- 轻量:容器是进程,能利用并共享主机操作系统内核。
- 替换:可以即时部署更新和升级容器。
- 便携:可以在本地构建,部署到云并在任何地方运行。
- 扩展:您可以增加并自动分发容器副本。
- 组合: 您可以自由地组合(stack)服务
二、安装使用 docker 过程中出现的问题
1. 安装依赖时出错
① 问题
- 使用以下命令时,提示
failure: repodata/repomd.xml from mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.pro
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
② 解决办法
- 切换到
/etc/yum.repos.d
目录下,将所有 docker 相关的 repo 全部删掉
- 使用
rm
命令删除后再查看
- 重新安装依赖,安装成功
2. 拉取镜像时速度缓慢
① 问题
docker run -it ubuntu bash
- 如上拉取 ubuntu bash 镜像时容易
timeout error
,因为默认是从 Docker Hub 拉取镜像,而国内从 Docker Hub 拉取镜像有时会遇到困难,下载速度缓慢 - 因此最好更换 Docker 的国内镜像源,以下是 Docker 的国内镜像源的资源站:
② 解决方法
- 导入为镜像源,并重启 Docker 服务
[root@localhost henryhzy]# vim /etc/docker/daemon.json
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
[root@localhost henryhzy]# systemctl daemon-reload
[root@localhost henryhzy]# systemctl restart docker
- 拉取 Docker Ubuntu 镜像
- 再次运行 Docker Ubuntu 镜像
3. Docker compose 下载安装出错
① 问题
- 在下载安装 Docker compose 时,提示 “没有可用软件包”
② 解决办法
- 在 github 上 选择自己的版本,下载安装离线安装包
https://github.com/docker/compose/releases
- 将二进制文件移到用户目录下
- 添加可执行权限
- 验证版本
- 编写
stack.yml
,注意代码格式一定要缩进
version: '3.1'
services:
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: 19970805
adminer:
image: adminer
restart: always
ports:
- 8080:8080
- 通过执行 docker-compose up -d 命令,我们即可启动 db 和 adminer 两个容器
4. docker 命令每次需要加 sudo
① 问题
- 安装完 docker 后,在使用相关命令的时候会报下面这样的权限错误
- 版本号是正确的但是缺少服务端有报错信息
② 解决方法
- 需要添加 docker 用户组
sudo groupadd docker
- 将登陆用户加入到 docker 用户组中
sudo gpasswd -a $USER docker #USER处是你自己的用户名
- 更新用户组
newgrp docker
- 测试是否解决问题