最近这段时间一直在玩Docker,真香。结合虚拟机一起用,大大提升效率。而且也能尽可能的榨干硬件的内存。虚拟机被分配的内存是独占的,实际并不能被虚拟机100%用完,也不可能非常精准的分配内存,造成了内存的消耗,一个16G的小内存机器,装不了几个虚拟机就完球了。Docker就不一样了,单个Docker应用需要多少内存就使用多少内存,内存灵活了,大大节约了内存。举个例子:AdGuard这个应用,如果在Ubuntu系统中独立安装,至少分配给虚拟机1G,而在Docker中,它只需要35M内存就能玩了。
安装
在全新的Ubuntu系统中使用安装命令如下,也算是一键傻瓜式操作了,等待安装完成即可。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
如果不想使用命令行,那就使用portainer来进行图形化操作吧。
Docker使用
Docker的大概逻辑(非专业解释,希望能便于理解的描述):
一个应用需要存放文件,所以它会有卷(Volume);绝对大多数服务是BS架构,所以就要端口映射(port);
获取镜像
如果我们本地没有 AdGuard 镜像,我们可以使用 docker pull 命令来载入 AdGuard 镜像:
docker pull adguard
设置卷
也就是存放文件的位置,docker提供卷模式(Volume),或者直接存放在主机上,我喜欢直接映射到本机的某个文件夹中,这样比较容易读写文件。在docker命令用
-p
例如:
docker run -p 8081:8080 adminer
冒号前面是主机映射的端口号,只要不冲突可以任意写。冒号后的是容器的端口,不同的应用不同的端口号。上面的命令行的意思是:把容器adminer的端口8080映射到主机的8081端口上。那么我们就可以用主机的端口8081访问到容器了。
运行镜像
docker run -it adguard
如果本机上没有镜像也可以直接使用该命令,会自动拉取镜像后运行。
参数说明:
- -i: 交互式操作。
- -t: 终端。
- adguard: adguard镜像。
查看运行
使用 docker ps 来查看我们正在运行的容器
启动或停止一个容器
通过ps命令来查看 container ID后,
#启动容器 docker start <container_name_or_id> #停止使用 docker stop <container_name_or_id> #重启docker restart <container_name_or_id>
查看应用IP地址
这个命令查看容器的所有的内容,包括IP地址
docker inspect <container_name_or_id>
或
或
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_name_or_id>
退出Docker终端
直接输入 exit
root@dockerserver:/# exit