什么情况适合用Docker
Docker的最大优势是保证了软件开发在不同环境中的依赖和迁移。 也就是说,如果软件开发人员只需要配置正确的依赖环境,就可以在任何拥有docker的环境中,进行快速的部署和运行,大大减少了迁移部署过程中的兼容问题、依赖问题、和运行维护问题。
因此,docker适用情况在跨平台开发,特定依赖版本开发,快速部署,持续开发,要求易于维护等大多数开发场景。 不适合的情况通常有,与机器硬件绑定的软件,无依赖或者依赖要求不高(系统自带)的简单软件,预期不会迁移的软件或者一次性的工具脚本等,另外软件体量非常庞大的软件(打包体积超10G)也不推荐进行docker模式。
Docker的版本介绍和安装
Docker分为两种,一种叫 Desktop 模式,带有图形界面(GUI),适合windows用户的习惯,可以在软件界面进行一些操作。另一种是纯命令行模式,文档中指导安装 Engine,一般在服务器中安装这种,并启动 Engine,才能使用常规的docker命令。
Desktop模式的安装很简单,从官网(Get Docker | Docker Documentation)下载安装包,并按提示安装即可。
从服务器上安装 docker engine,文档地址是 Install Docker Engine on CentOS | Docker Documentation
关于如何查看服务器的系统型号,可以用 lsb_release -a 命令。
安装命令整理如下:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
测试docker可以正常使用,以下命令不报错:
docker ps
Docker源与加速
和其他软件一样,通过配置docker源,可以加速镜像下载 通常安装完后,没有配置镜像源,通过
docker info
查看最后几行:
这种属于还没有配置源,配置方法为:
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
service docker restart
配置好的源可以被 docker info 命令查看到
安装遇到问题
正常情况,docker的安装很快,大概在1-5分钟之内。遇到在另一环境中安装,长时间安装不上且出错的情况。尝试另一个安装方法:
1.更新yum仓库
su root
yum update -y
vi /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
2.安装docker
yum install -y docker-engine
yum install -y docker-selinux
如果报错
failure: repodata/repomd.xml from dockerrepo: [Errno 256] No more mirrors to try.
https://yum.dockerproject.org/repo/main/centos/7/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: yum.dockerproject.org; Unknown error"
替换命令:
yum-config-manager --disable dockerrepo
sudo yum install docker-ce docker-ce-cli containerd.ioLoaded plugins: fastestmirror
PS:在使用现成的安装包安装的时候selinux的安装一定要在docker-engine之前。
yum list installed | grep docker
启动 docker 服务器
systemctl start docker.service
docker run hello-world
docker ps
systemctl enable docker.service
用户无法访问 docker
用户访问docker,提示无权限
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
这是非常常见的一个错误,解决办法就是把无权限的用户加入到docker组即可。
sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组
newgrp docker
docker-compose 命令不存在的问题
docker-compose 独立 docker 的管理工具,用 pip 安装即可
pip install docker-compose