Docker
前言:
docker是什么?
docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可适用于自动化测试、打包,持续集成和发布应用程序等场景。可以将其比喻为一种“应用程序的便携式包装方式”。就像你把东西放在一个标准化的集装箱里,然后这个集装箱可以被轻松地从一边运输到另一边而不需要担心内部物品会发生变化。同样地,Docker容器是一个“虚拟盒子”,你可以把应用程序和所有它所需的东西(比如代码、库、设置等)都放进去。这意味着无论是在开发机上还是云端服务器上,只要有Docker支持环境,你都能确保应用程序会以相同的方式运行。
换句话说, Docker 就像一个魔法盒子,在其中我们能够打包并且随处移动我们想要跑起来的软件,并且不必担心软件所依赖环境带来问题,因此docker有着快速部署的好处。
详细了解的话可以看这篇文章: 知乎:容器化部署方案—docker
随记
主要是想记录常用命令以及介绍docker,
往后会在此专栏记录一些用过且觉得好用的容器。
docker常用命令
#info|version
docker info #显示docker的系统信息,包括镜像和容器的数量
docker version #显示docker的版本信息。
#帮助命令
docker 命令 --help #帮助命令
#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
#退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名 #后台启动命令
docker logs #查看日志
docker top 容器id #查看容器中进程信息ps
docker inspect 容器id #查看镜像的元数据
docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach # 进入容器正在执行的终端
docker cp 容器id:容器内路径 主机目的路径 #从容器内拷贝到主机上
容器部署Tag
栗子:
docker run -d -p 1666:1666 -v /volume1/docker/perforce/data:/data -e P4USER:p4admin --name perforce ambakshi/perforce-server
tag | 栗子 | 属性 |
---|---|---|
-p | -p 80 :80 | 端口(本地:映射) |
-e | -e P4USER:p4admin | 环境变量 |
-name | -name perforce | 容器名称 (perforce) |
-restart | -restart=always | 重启模式 (总是) |
-v | -v ../perforce/data:/data | /映射路径:/容器空间 |
ambakshi/perforce-server:latest | 镜像以及版本 | |
-d | -d | detach 后台运行容器 |
-a | -a | attach 登录后台运行的容器 |
run | --- | 创建一个新容器并运行 |
-e TZ | TZ=Asia/Shanghai | e环境变量-时区 |
Docker网络 Netwrok
Docker中的网络就像路由器构建的局域网
加入到相同网络的容器
可以使用容器名称相互访问
设置Docker网络的目的是 让网络内的容器可以相互访问,就像个局域网。
不经过特殊设置网络外的容器是不能与网络内的容器进行相互访问的。
PUID 和 PGID
LinuxServer 维护的 Docker 镜像都有 PUID 和 PGID 这两个环境变量,他们主要用来设置挂载到容器中的存储的所有权。
默认情况Docker容器是使用root身份读写和存储的,主机上其他的用户是没有权限进行操作的。 如果想要以nas上普通用户的身份去读写和存储共享文件夹,那么就在环境变量中添加 PUID(主机用户ID)和PGID(主机用户组ID),这样容器就可以对指定的用户id或者用户组id开放读写存储操作。
要注意容器是否支持PUID PGID的这项功能。
如何查看用户的ID呢?
通过SHH登陆nas
然后输入 id
或者 id user
id+日常使用的用户名称
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
群晖查看占用端口
群晖套件重装过程中提示端口被占用的解决方案
- 打开群晖控制面板--安全性
- 点击启用防火墙,然后点击应用按钮。
- 然后点击编辑规则
设置 Docker 容器日志大小(全局设置)
限制 Docker 容器的日志大小,可以进行全局设置。首先,创建或编辑 /etc/docker/daemon.json 文件。如果已经存在这个文件,可以直接编辑它。确保文件内容如下所示:
{
"log-driver": "json-file",
"log-opts": { "max-size": "500m", "max-file": "3" }
}
在上述配置中,max-size 设置了单个容器日志文件的最大大小为 500MB,而 max-file 设置了最多保留 3 个旧的日志文件。这意味着当日志文件大小达到 500MB 时,Docker 会自动切割日志文件并最多保留 3 个旧的日志文件。