前言
一般来说,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-driver
、log-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>
# 清除悬空镜像
docker image prune
#忽略相关告警确认信息,并清除所有未使用的镜像和悬空镜像
docker image prune -a -f
输出日志
观察某个container最后20条日志:
docker logs <app> --tail=20 -f
观察某个docker-compose应用最后20条日志
docker-compose logs --tail=20 -f
Container数量
计算目前正在运行的container数量(来自Derek):
echo "Docker Running $(expr $(docker ps --all --format "table {{.Names}} {{.Status}} " -f status=running | wc -l) - 1)"
小结
虽然我们添加了一个非root用户在docker的用户组,但是docker实际运行的时候,还是可能会用一些root权限。只不过这个root权限和宿主的root相比,权限是经过阉割的。所以应该还是安全的。
之后就开始玩Docker吧!
扩展阅读
- Docker-从入门到实践:比较系统的教程,写得不错,有兴趣可以看看。
- 如何删除Docker容器,镜像,卷和网络 | myfreax
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍