Docker Compose 安装、卸载、MySQL实例

Compose 支持 Linux、macOS、Windows 10 三大平台。

Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。

前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。

Docker for MacDocker for Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用。

一、Linux 系统两种安装方式

1、二进制包安装

在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

例如,在 Linux 64 位系统上直接下载对应的二进制包。

# 下载安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

安装一个不同版本的Docker Compose替换1.24.1就行。

2、PIP 安装

注: x86_64 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 ARM (例如,树莓派),再使用 pip 安装。

这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装。

执行安装命令:

$ sudo pip install -U docker-compose

可以看到类似如下输出,说明安装成功。

Collecting docker-compose
  Downloading docker-compose-1.24.1.tar.gz (149kB): 149kB downloaded
...
Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress

二、bash 补全命令

$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

三、容器中执行

Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。

$ sudo chmod +x /usr/local/bin/docker-compose

实际上,查看下载的 run.sh 脚本内容,如下

set -e

VERSION="1.8.0"
IMAGE="docker/compose:$VERSION"


# Setup options for connecting to docker host
if [ -z "$DOCKER_HOST" ]; then
    DOCKER_HOST="/var/run/docker.sock"
fi
if [ -S "$DOCKER_HOST" ]; then
    DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
else
    DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
fi


# Setup volume mounts for compose config and context
if [ "$(pwd)" != '/' ]; then
    VOLUMES="-v $(pwd):$(pwd)"
fi
if [ -n "$COMPOSE_FILE" ]; then
    compose_dir=$(dirname $COMPOSE_FILE)
fi
# TODO: also check --file argument
if [ -n "$compose_dir" ]; then
    VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
fi
if [ -n "$HOME" ]; then
    VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
fi

# Only allocate tty if we detect one
if [ -t 1 ]; then
    DOCKER_RUN_OPTIONS="-t"
fi
if [ -t 0 ]; then
    DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
fi

exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"

可以看到,它其实是下载了 docker/compose 镜像并运行。

四、测试

$ docker-compose --version

五、卸载

如果是二进制包方式安装的,删除二进制文件即可。

$ sudo rm /usr/local/bin/docker-compose

如果是通过 pip 安装的,则执行如下命令即可删除。

$ sudo pip uninstall docker-compose

Docker Compose官方文档

六、实战MySQL

docker-compose语法只能在有docker-compose.yml配置文件的文件夹内运行

1、创建MySQL安装路径

docker应用建议安装路径:/usr/local/docker/mysql

# /usr/local 本地管理员软件安装目录
$ cd /usr/local/
# 创建docker应用目录
$ mkdir docker
$ cd docker/
$ pwd
/usr/local/docker
$ mkdir mysql
$ cd mysql/
# 编写docker-compose.yml配置[配置文件名称固定不变]
$ vi docker-compose.yml

2、编写docker-compose.yml配置文件

MySQL5

version: '3.1'
services:
  mysql:
    # 开机启动
    restart: always
    # 镜像版本号
    image: mysql:5.7.22
    # 容器重命名
    container_name: mysql
    # 端口映射
    ports:
      - 3306:3306
    environment:
      # 指定时区的时间:上海
      TZ: Asia/Shanghai
      # 设置root用户密码
      MYSQL_ROOT_PASSWORD: 123456
    # 配置数据库默认参数
    command:
      # 默认密码
      --default-authentication-plugin=mysql_native_password
      # 字符编码
      --character-set-server=utf8mb4
      # 排序字符集
      --collation-server=utf8mb4_general_ci
      # SQL模式,详细参考:https://blog.csdn.net/Zereao/article/details/89178438
      --explicit_defaults_for_timestamp=true
      # 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
      --lower_case_table_names=1
      # 设置以字节发送给服务器的最大数据包大小. (默认: 1MB)
      --max_allowed_packet=128M
      # 支持的sql语法
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    # 配置数据存放路径
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

MySQL8

version: '3.1'
services:
  db:
    image: mysql
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      - ./data:/var/lib/mysql
  # 可视化Mysql数据库管理文件系统
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

3、创建启动MySQL容器

# 创建启动MySQL容器
$ docker-compose up
# 守护进程创建启动MySQL容器
$ docker-compose up -d
# 查看运行中的容器
$ docker ps
# 查看已下载的镜像
$ docker images

4、查控MySQL容器日志

# 查看MySQL容器日志
$ docker-compose logs mysql
# 监听查看MySQL容器日志
$ docker-compose logs -100f mysql

5、停止MySQL容器

# 停止MySQL容器
$ docker-compose stop

6、启动MySQL容器

# 不会加载新的docker-compose相关文件的新的改动
$ docker-compose restart

7、删除MySQL容器

# 删除MySQL容器
$ docker-compose down

8、进入MySQL容器

# 进入容器,使用容器ID或名称都进入容器
$ docker exec -it mysql /bin/bash
# 登陆mysql数据库
$ mysql -uroot -p123456
# 创建数据库用户
mysql> CREATE USER 'tangsm'@'%' IDENTIFIED BY '123456';
# 给用户授予所有权限
mysql> GRANT All privileges ON *.* TO 'tangsm'@'%';
# 显示mysql所有数据库
mysql> show database;
# 切换数据库
mysql> use mysql;
# 查询表数据
mysql> SELECT t.user, t.select_priv FROM USER t;
+------------------+-------------+
| user             | select_priv |
+------------------+-------------+
| root             | Y           |
| tangsm           | Y           |
| mysql.infoschema | Y           |
| mysql.session    | N           |
| mysql.sys        | N           |
| root             | Y           |
+------------------+-------------+
6 rows in set (0.00 sec)
# 退出数据库
mysql> exit;
# 退出容器
$ exit;

七、参考

李卫民-Docker Compose:https://www.funtl.com/zh/docker-compose/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值