🌈初探Docker
初探 Docker
常用命令
# 添加用户到 docker 用户组 |
初识
首先
Docker是啥就不解释了.初探尝试安装时出现下面好几个选择,于是搜了搜~
找到 docker 家族有几个特殊的工具
docker-Dockerfile,docker-compose,docker-machine
docker-Dockerfile
Docker Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
docker-compose
docker 与 docker-compose 区别
docker 是一个容器,你如果要是安装服务也是要单独一个一个的安装,如果你使用了 docker-compose 的话 就可以使用一个 docker-compose.yml 脚本一键安装
说来其是管理同一个 docker 下多个服务的.
docker-machine
Docker 三剑客之 docker-machine
这个是用来管理多个 docker 的.
安装启动
Windows
Docker 基于 Linux 系统实现, 所以无法直接运行在 Windows 上, 需要虚拟化支持 (wsl)
Ubuntu-Server
Ubuntu-Server装系统时就带有Docker安装选项,直接安装即可,但是会遇到下面权限问题及解决办法
加速
镜像加速
阿里的镜像服务虽然是能访问, 但是已经停止更新了…
登录阿里云并找到
容器镜像服务阿里会给一个加速地址,把地址复制到 Docker 设置里就可.
Windows

设置代理
docker-本身代理
国内网络环境拉取镜像非常慢,挂代理可以快很多. (不过一般配置了上面的镜像加速就用不着配置代理了)
docker desktop 设置里操作, localhost:7890
docker-容器使用宿主机代理
比如在 docker 里跑了虚拟机 (docker-osx, 默认是桥接网络实际用起来是没有科学的
可以选择在创建容器时 --net=host 使用主机网络, 但不如:
host.docker.internal 指向宿主机内网 IP, proxy 可以直接写为 host.docker.internal:7890
docker 管理
VScode-docker
在 Manjaro 虚拟机中启动 docker 服务,然后用 vscode-ssh 连接 manjaro
安装 docker 插件,就可以享受比较方便的可视化了(个人非常喜欢这种方式)
另外再安装
Resource Monitor这个插件可以监控远程机资源消耗(如上图最下方)
Portainer
docker 的可视化工具,可连接本地和远程,支持集群,有很多部署方式,这里选择直接在 docker 部署.
首先它需要一个
volume(数据卷),新建docker volume create portainer_data
然后拉取并运行
- 需要保证 9000 端口没被占用,不然无法运行
docker run -d --name portainer --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
浏览器打开
localhost:9000官网上的版本要比 github 的 tag 慢一些,左下角提示更新可以无视~
常用命令
命令行执行
有些文档的命令是这样, 行末的 '' 是 shell 的换行符, windows 不支持, 删掉就好
docker run -d \
-p 8088:8088 \
--name next-terminal \
--restart always ghcr.io/dushixiang/next-terminal:latest
docker run -d -p 8088:8088 --name next-terminal --restart always ghcr.io/dushixiang/next-terminal:latest
docker 自启
启动服务
sudo systemctl start docker.service
开机自动启动 docker 服务
sudo systemctl enable docker.service
重新载入配置
sudo systemctl daemon-reload
重启 docker
sudo systemctl restart docker
容器自启
# 开启 |
使用案例
多数据库管理
开发时需要好几个不同的数据库
在 win 主机上安装配置的话,必然各种 bug,大部分时间还空浪费性能
于是考虑在虚拟机上装,但是鉴于各种系统环境还不一样,每个数据库挨个配置和解决 bug 都废手
于是让数据库进入 docker
通过
docker-compose.yml一条龙管理 (免去了每个数据库安装,开通远程连接,配置账户这些麻烦)version: "3.1"
services:
# redis 无密码
redis:
image: redis:latest
restart: always
container_name: "redis-app"
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- 6379:6379
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis:/data
# mongo root-2333
mongo:
image: mongo:latest
restart: always
container_name: "mongo-app"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 2333
ports:
- 27017:27017
volumes:
- /data/mongo:/etc/mongo
# mariadb root-2333
mariadb:
image: mariadb:latest
restart: always
container_name: "mariadb-app"
ports:
# 端口映射
- 3306:3306
volumes:
# 容器与宿主机时间同步
- /etc/localtime:/etc/localtime
# 数据库目录映射
- ./config/mariadb:/var/lib/mysql
# (推荐)如果要使用自定义的MySQL配置,则可以在主机上的目录中创建备用配置文件,然后将该目录位置/etc/mysql/conf.d安装在mariadb容器内。自己所需的配置文件可以放在自己服务器./config/data/mariadb-config里面
- ./config/mariadb-config:/etc/mysql/conf.d
environment:
TIME_ZONE: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 2333进此配置目录执行
docker-compose up, ->最新文件地址<-
docker-osx
记一下我做的配置更改, 备忘
- 设置-网络-代理
- host.docker.internal:7890
- 修改 /etc/hosts
- github520
- 安装 homebrew












