[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
弄好后回过神都已经半个多小时了, 就因为一点点小问题...