docker 基本指令

安装docker

sudo sh -c "$(curl -fsSL https://get.docker.com)"  
sudo usermod -aG docker $USER

第一行用docker官方提供的script快速安装
第二行将现有的使用者加入docker群组,否则会没有权限操作docker命令。
记得注销账号重登,以获取docker操作权限。

执行sudo docker run hello-world查看是否安装成功。
如果出现以下画面则安装成功:
测试docker安装成功

常用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

使用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损坏数据就丢失了。