一、 docker 基本指令
快速安装docker
sudo sh -c "$(curl -fsSL https://get.docker.com)" 或 curl -sSL https://get.docker.com/ | sh
sudo usermod -aG docker $USER
第一行用docker官方提供的script快速安装
第二行将现有的使用者加入docker群组,否则会没有权限操作docker命令。
记得注销账号重登,以获取docker操作权限。
执行sudo docker run hello-world
查看是否安装成功。
如果出现以下画面则安装成功:
常用docker基本指令
1 启动/关闭 docker服务
service docker start 或者 systemctl start docker // 启动
service docker stop 或者 systemctl stop docker // 关闭
2 创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-e <环境变量名>="<值>": 设置环境变量;
--name="
例如:
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
3 只创建而不运行容器(选项同option)
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
4 删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
例如:
强制删除容器db01、db02
docker rm -f db01 db02
5 在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
6 查看已有下载镜像(images)
docker images
7删除已下载镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
例如:
删除测试docker安装成功的hello-world:
docker rmi -f hello-world:latest
二、 使用docker安装mysql
1 下载最新mysql镜像
docker pull mysql:latest
2 运行容器
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
部分参数说明:
mysql-test:容器名
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
3 配置mysql 使用者(user)
3.1 进入容器
docker exec -it mysql-test bash
3.2 登录mysql并修改root密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
3.3 添加远程登录用户 --> '用户名'@'主机',%表任意都行
CREATE USER ''@'%' IDENTIFIED WITH mysql_native_password BY '';
GRANT ALL PRIVILEGES ON *.* TO ''@'%';
三、 备份docker中mysql的数据
使用docker安装mysql可能遇到一个问题,就是如果不做其他处理,docker容器损坏,那么里面的数据就可能丢了再也找不回,所以应当养成定时备份的好习惯。
使用以下指令,将docker容器中的mysql数据备份到宿主主机指定位置:
docker exec [CONTAINER] //usr/bin/mysqldump -u [USER] --password=[PASSWORD] --routines --triggers test_db > /home/user/test_db_backup.sql
说明:
test_db是docker中mysql的数据库名
/home/user/test_db_backup.sql 备份到宿主主机的地址和文件名
将上面指令写入宿主主机的cron定时任务中就可定时将docker中mysql数据备份到本机,避免docker损坏数据就丢失了。
以上指令全部亲测无误,有问题可告知,谢谢。