1. 在docker容器中vi指令找不到
- 在使用docker容器时,有时候里边没有安装vi,敲vi命令时提示说:vi: command not found,这个时候就需要安装vi,可是当你敲apt-get install vi命令时,提示:
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- E: Unable to locate package vi
- 这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
- 等更新完毕以后再敲命令:apt-get install vi命令即可.
2.docker容器启动后没有ifconfig和ping
apt-get update
apt install net-tools # ifconfig
apt install iputils-ping # ping
3. 安装mysql容器时,修改mysql密码SET PASSWORD=PASSWORD('[修改的密码]');一直不成功,status查看mysql为8.0.11版本,查看user表也没password字段,搜了下发现修改密码方式已有变。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
管理员root的host是localhost,代表仅限localhost登录访问。如果要允许开放其他ip登录,则需要添加新的host。如果要允许所有ip访问,可以直接修改成“%”
创建用户:
CREATE USER 'xxh'@'%' IDENTIFIED WITH mysql_native_password BY 'xxh123!@#';
#(需要注意:mysql8.0加密方式修改了)
#检查用户
select user, host, plugin, authentication_string from user\G;
授权远程数据库
#授权所有权限
GRANT ALL PRIVILEGES ON *.* TO 'xxh'@'%';
#授权基本的查询修改权限,按需求设置
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'xxh'@'%';
查看用户权限
show grants for 'xxh'@'%';
4.docker部署mysql
docker run
-d 标识是让 docker 容器在后台运行。
-p 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上。
--name 定义一个容器的名字,如果在执行docker run时没有指定Name,那么deamon会自动生成一个随机数字符串当做UUID。
-e 设置环境变量,或者覆盖已存在的环境变量。
例如:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -dmysql/mysql-server:latest
含义:容器的名字为mysql,将容器的3306端口映射到本机的3306端口,mysql数据库的密码为password ,运行的镜像为mysql/mysql-server:latest
5. 端口映射配置
iptable转发端口
将容器的8000端口映射到docker主机的8001端口iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000