docker 查看具体从哪个脚本启动服务
使用 systemctl status docker
查看 load 哪一行,就可以知道到底是从哪个脚本启动服务了。
使用 systemctl status docker
查看 load 哪一行,就可以知道到底是从哪个脚本启动服务了。
今天先参照 https://www.jianshu.com/p/ddf7c0153644 这个里面的说明写了相应的配置文件,结果一启动容器就报错了。
Creating docker-test_mysql_1 ...
Creating docker-test_mysql_1 ... error
ERROR: for docker-test_mysql_1 Cannot start service mysql: driver failed programming external connectivity on endpoint docker-test_mysql_1 (22e74af6dece7dd4cae19aa8809099c6fde961e19f6b43178bb34a595e1c5a02): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: for mysql Cannot start service mysql: driver failed programming external connectivity on endpoint docker-test_mysql_1 (22e74af6dece7dd4cae19aa8809099c6fde961e19f6b43178bb34a595e1c5a02): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.
参考 https://www.cnblogs.com/loovelj/p/7823093.html 这个里面的做法,首先查看是否本机的 mysql 占用了端口。
netstat -tunlp | grep 3306
确定是本机的 mysql,就停止服务。
service mysql stop
然后通过 ps -ef|grep mysqld 可以发现 mysql 已经停止了。然后重新使用 docker-compose up -d 启动容器,这下就不报错了。
使用 docker ps 来查看容易的状态属性,id 和 names 这两个值都可以用来指定容器。
docker exec -it docker-test_mysql_1 bash
docker exec -it f24473a1626a bash
上面这两条命令分别用 name 和 id 来指定容器执行 bash 命令,效果是一样的。这样就进入了容器的命令行。
停止 docker
docker-compose stop
删除 docker
docker rm docker-test_mysql_1
docker 中使用 mysql 的时候,init 文件夹下面的 sql, sh, sql.gz 这些文件会被遍历,然后执行,但是执行顺序没有办法保证,所以想要按照一定顺序执行,只能通过 sh 脚本来编写处理过程, 具体参考:https://blog.csdn.net/boling_cavalry/article/details/71055159
在 init 脚本中 mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF 注意 -p 后面不要有空格,否则可能不能以 root 登录 mysql; 不要忘了给 init 脚本所有人可执行权限,因为只有 db 对应的文件夹是 mysql的,其他的文件夹都是 1000:1000,可能导致执行权限问题。
在 init 脚本中,mysql 命令里面创建用户的时候,密码必须有单引号,因为用了单引号,变量外面就必须有大括号,才能保证正确。
create user '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASS}';
在mysql 中使用 root 登录的时候,通过命令 select * from mysql.user 来查看有哪些用户。
GRANT ALL PRIVILEGES ON 数据库名.表名 TO '$user1'@'%' IDENTIFIED BY '$password1' REQUIRE X509;
GRANT SELECT,INSERT,ALTER,UPDATE,DELETE ON iot_ny.* TO 'Iothui'@'localhost';
可以用这些命令给用户赋权。
搜索可以用哪些镜像,可以去 https://hub.docker.com/ 上搜索。
参考: https://blog.csdn.net/weixin_33670713/article/details/93029183 https://stackoverflow.com/questions/33470753/create-mysql-database-and-user-in-bash-script https://blog.csdn.net/wangmx1993328/article/details/81805371 https://blog.csdn.net/boling_cavalry/article/details/71120725 https://stackoverflow.com/questions/20033648/how-to-run-mysql-command-on-bash https://superuser.com/questions/288621/create-mysql-database-with-one-line-in-bash https://www.cnblogs.com/fuhai0815/p/9548213.html https://blog.csdn.net/m0_38143867/article/details/94046889 https://github.com/zq2599/docker_disconf/blob/master/docker-compose.yml https://www.cnblogs.com/whych/p/9446032.html https://blog.csdn.net/u011913691/article/details/90665639 https://github.com/SingletonPattern/compose-demo/blob/master/compose-demo/docker-compose.yml https://www.cnblogs.com/ray-mmss/p/12249204.html https://blog.csdn.net/weixin_41043145/article/details/92834784 https://www.cnblogs.com/badaoliumangqizhi/archive/2019/09/16/11530695.html https://www.jianshu.com/p/658911a8cff3 https://www.jianshu.com/p/ddf7c0153644
没有安装过 docker 的 ubuntu 安装 docker的步骤:
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
如果选择官方的源:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
如果选择阿里的源:
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
sudo apt-key fingerprint 0EBFCD88
添加官方仓库:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
添加阿里仓库:
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
apt-cache madison docker-ce
从上面输出的版本中找到你需要的版本:
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
如果这里报错,可以尝试这个命令,我用这个命令进行安装就没有问题:
sudo apt-get -y install docker-ce=[VERSION]
sudo docker run hello-world
sudo gpasswd -a 用户名 docker
sudo service docker restart
newgrp - docker
安装 docker-compose,先去 https://github.com/docker/compose/releases 找到你需要的版本,然后替换下面的 1.24.1 这个版本号,我用的是 1.27.3 :
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
参考: https://docs.docker.com/engine/install/ubuntu/ https://www.cnblogs.com/walker-lin/p/11214127.html https://www.runoob.com/docker/docker-compose.html https://blog.csdn.net/liqi_q/article/details/83030737 https://www.cnblogs.com/grow1016/p/11533645.html