准备
- 安装docker
sudo pacman -S docker
- 启动docker
sudo systemctl start docker
- 开机启动
sudo systemctl enable docker
- 关闭
sudo systemctl stop docker
- 建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。- 建立 docker 组:
$ sudo groupadd docker
- 将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
或
$ sudo gpasswd -a [用户名] [组名]
- 退出当前终端并重新登录
- 建立 docker 组:
- 测试 Docker 是否安装正确
$ docker run hello-world
下载
下载mysql镜像
docker pull mysql:5.7
查看镜像
docker image ls
启动容器
docker run --rm -d --name mysql -p 3306:3306 -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
-rm
:容器用完就销毁,因为我们的数据都是存储在数据卷上,所以容器停止运行后可以直接把它删除就行了
-d
:让容器在后台运行
-name
:指定容器的名称
-p
:容器的3306映射到主机的3306端口
-v
:容器的/var/lib/mysql目录挂载在主机的/opt/mysql/data目录
mysql:5.7
:镜像ID或REPOSITORY:TAG
, 可通过docker image ls
查看
-m 或 --memory
::设置内存的使用限额,例如 100M, 2G。
--memory-swap
:设置 内存+swap 的使用限额。
docker run -m 200M --memory-swap=300M mysql
其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。如果设置成一样表示分配200M内存,不分配交换内存.
-e
:设置默认参数,支持参数:
MYSQL_ROOT_PASSWORD
MYSQL_DATABASE
MYSQL_USER, MYSQL_PASSWORD
MYSQL_ALLOW_EMPTY_PASSWORD
MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_ONETIME_PASSWORD
进入容器
docker exec -it mysql mysql -uroot -p
-i -t 参数
只用-i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当-i -t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符
mysql
:-it
后面的mysql表示容器名称或容器ID
mysql -uroot -p
:表示进入容器后要执行的命令,可以为sh
:表示进入容器后执行sh
进入shell
使用
- 创建帐号
命令:create USER 'username'@'host' IDENTIFIED BY 'password';
mysql> create USER 'admin'@'%' IDENTIFIED BY 'admin';
- 授权
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
mysql> GRANT ALL ON *.* TO 'admin'@'%';
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
mysql> GRANT ALL ON *.* TO 'admin'@'%' WITH GRANT OPTION;
- 刷新授权
mysql> flush privileges;