My own personal website.
[Docker创建容器时] 致一个因参数值放错位置而浪费近半个多小时时间的自己
03-09-2020 / 2 min read

(流水账警告💣)早上,打算把学校毕设的进度往前推一点,由于几天前作死调了下docker 的存储空间,虽然后来取消了操作但还是把所有镜像和容器存储统统删掉了,上面还有个数据库也被一并删了,我也没做过备份(可见备份是多么重要啊..),难受。
没办法今早就开始重建数据库。创建时用portainer 创了好几次都说参数错误,最后在命令行下创建成功了,但是端口没有暴露到主机上,删除容器重建,加了参数-P 来随机指定端口并绑定到主机,
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb:latest -P
创建成功后使用docker container list -a 查看:

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                     PORTS                                            NAMES
35a848541d62        mariadb:latest                     "docker-entrypoint.s…"   4 seconds ago       Exited (1) 2 seconds ago                                                    mariadb

创建完成后又退出了...
使用portainer 查看容器日志,提示unknown -P 然后就退出了
纳闷,删掉后重新创建,仍旧提示未知参数。难道mariadb不支持-P 参数来绑定吗...
再次创建又退出后才突然恍然大悟,放在最后一个参数位置的地方是启动时的命令,而-P 绑定随机端口的参数不能放在后面。。
于是重新使用docker run --name mariadb -P -e MYSQL_ROOT_PASSWORD=password -d mariadb:latest创建

60fe5c294db0        mariadb:latest                     "docker-entrypoint.s…"   3 seconds ago       Up 2 seconds              0.0.0.0:32768->3306/tcp                          mariadb

主机32768映射到了内部3306端口上...
发现这样不行,连接时端口不指定就会很麻烦
又重新创建
docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mariadb:latest
才终于算是成功了

0112816d9717        mariadb:latest                     "docker-entrypoint.s…"   6 seconds ago       Up 5 seconds              0.0.0.0:3306->3306/tcp                           mariadb

弄好后回过神都已经半个多小时了, 就因为一点点小问题...