Docker系列 配置Docker全局环境

发布于 2022-07-02  47 次阅读


前言

一般来说,Docker是开箱即用的。不过,如果你是在国内用docker,并且你想用非root用户使用docker,就需要进行一些设置了。

这里把安装的代码也搞一份过来,以免大家不断地翻页。

安装Docker

首先看看自己的VPS有没有安装好Docker了:

which docker # /usr/bin/docker

国内VPS的Ubuntu用户可以根据菜鸟教程来安装。

我们可以先创建一个文件夹(可能没什么用,哈哈)

mkdir -p ~/docker/@install/ && cd ~/docker/@install/

如果你已经安装了docker,就不要运行下面的命令!如果你没有安装docker,可以运行:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

国外VPS的用户也可以参考官方安装方法,就是用不同的镜像嘛。

等安装完后,看一下docker:

which docker # /usr/bin/docker

安装docker-compose

我们下面安装一下docker-compose,这个是一个布署docker服务的神器。你可以在这里查看docker-compose的最新发行版。选一个最新的版本下载即可。比如我写此博文的时候,是v2.4.1。运行以下命令

sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

国内的VPS可以用:

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

然后进行一些设置:

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

最后,看一下docker-compose的版本:

docker-compose --version # docker-compose version 1.28.6, build 5db8d86f

Docker全局设置

换镜像源

我参考了这个博文:docker 修改使用国内镜像源

如果你需要修改镜像源的话,可以按下面的方法修改。

修改/etc/docker/daemon.json文件,如果没有先建一个即可:

sudo vim /etc/docker/daemon.json

比如,改成:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"100m", "max-file":"3"}
}

registry-mirrors设置了一个国内的镜像;log-driverlog-opts主要是管理Docker日志保存的方式和大小限制。见下面的日志管理

然后,reload下docker:

sudo systemctl daemon-reload
sudo systemctl restart docker 

检查一下配置是否生效:

sudo docker info|less

检索一下应用:

sudo docker search nginx

可以正常、快速地检索说明生效了。

有不少镜像源可以选:

  • 阿里云:https://registry.cn-hangzhou.aliyuncs.com
  • docker中国:https://registry.docker-cn.com
  • 网易:http://hub-mirror.c.163.com
  • 腾讯云:https://mirror.ccs.tencentyun.com

自己也可以搜索一下哪些可以用。

日志管理

参考sleele的《限制Docker容器日志大小+清理日志脚本》。

首先,新建一个clean_docker_log.sh文件:

vim ~/clean_docker_log.sh

填入以下内容:

#!/bin/sh 

echo "======== start clean docker containers logs ========" 

logs=$(find /var/lib/docker/containers/ -name *-json.log)  

for log in $logs  
        do 
                echo "clean logs : $log" 
                cat /dev/null > $log  
        done 

echo "======== end clean docker containers logs ========" 

其实这个脚本的逻辑特别简单,就是清理/var/lib/docker/containers/-json.log格式的文件。我们给予其可执行权限:

sudo chmod +x ~/clean_docker_log.sh

然后平时运行:

~/clean_docker_log.sh

就可以即时清理docker容器的日志。当然,你也可以创建软链接到环境路径,或者是cron定时任务。自己试试看,我就不示范了!

添加非root用户

原理很简单,就是将某个用户添加到docker用户组里即可

比如,我有一个test_user用户。我可以这样:

sudo groupadd docker # 一般已经是内置的
sudo usermod -aG docker test_user

重启一下docker:

sudo systemctl restart docker

重新登陆当前用户:

su test_user

查看一下id:

id

输出类似于,用户组已经有docker:

... groups=... 998(docker)

就成功啦!

常用Docker命令

列出所有安装的镜像:

docker image list

删除镜像

docker rmi <IMAGE ID>

小结

虽然我们添加了一个非root用户在docker的用户组,但是docker实际运行的时候,还是可能会用一些root权限。只不过这个root权限和宿主的root相比,权限是经过阉割的。所以应该还是安全的。

之后就开始玩Docker吧!