docker-compose的安装和使用

想要详细了解docker-compose的小伙伴可以直接到官网上面看。
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
以上内容摘自官网。以下的操作都是基于ubuntu进行的。推荐小伙伴们得有一定的linux基础

安装docker-compose

使用脚本自动安装

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 #上面不行的话尝试下面的(估计是版本号没对上或者其他的原因)
 curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

添加权限

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

查看是否安装成功

docker-compose --version

docker-compose的使用

相比于docker的命令模式来配置容器参数和启动,我更加倾向于docker-compose的配置文件的方式来启动容器,因为这样我可以随时了解到我当初启动的容器具体的配置是怎样的,并且以配置文件的形式可以同时启动一组各不相同但是又能够相互配合使用的容器。而不用像之前那样每启动一个容器就要输入一次命令,下面是我常用的的一些容器配置。

安装mysql

在/usr/local目录下创建一个docker文件夹,在docker文件夹下再创建一个名为mysql的文件夹,然后创建一个docker-compose.yml文件。操作如下:

cd /usr/local
mkdir docker
cd docker
mkdir mysql
cd mysql
touch docker-compose.yml

然后往docker-compose.yml文件添加内容:

#注意,这条命令是对docker-compose.yml文件进行编辑
vi docker-compose.yml

以下为具体需要添加的内容

version: '3.0'
services:
  #这个是服务名称
  mysql:
    #这个是镜像
    image: mysql
    #这个是将要启动的容器的名称
    container_name: mysql_test
    #用来给容器root权限,不安全的,根据个人需求判断要不要用
    privileged: true
    #端口映射
    ports: 
      - 3306:3306
    #环境参数
    environment:
      #设置root密码
      MYSQL_ROOT_PASSWORD: 123456
      #时区
      TZ: Asia/Shanghai
      #设置用户名
      MYSQL_USER: root
      #设置密码
      MYSQL_PASS: 123456
    #创建容器时带上的命令
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
    #数据卷,关系到数据的持久化,如果配置了这个就得在当前目录下创建一个data文件夹
    volumes:
      - ./data:/var/lib/mysql
    #设置容器的启动方式
    restart: always

编辑完dcoker-compose.yml文件之后就可以保存并且启动容器了

#启动命令(后台启动)
dcoekr-compose up -d 
#查看运行中的容器
docker ps
#停止容器
docker-compose down
#或者
docker stop 容器id(或名称)

安装redis

在docker文件夹下创建redis文件夹,然后在redis的文件夹下创建docker-compose.yml文件。
添加以下内容

version: '3.0'
services:
  redis:
    image: redis
    container_name: redis
    volumes:
      - ./data:/data
      - ./conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./logs:/logs
    ports:
      - 6379:6379
    command: redis-server /usr/local/etc/redis/redis.conf
    restart: always

根据数据卷要求,还需要进行以下操作:
创建一个data文件夹。
创建一个logs文件夹。
创建一个conf文件夹,在该文件夹下创建一个redis.conf文件,或者自己上传一个,这个文件中的内容需要自己找到完整的配置文件进行修改,毕竟涉及到密码等信息,自己手动添加吧。
最后启动容器。

安装Nginx

创建文件夹和docker-compose.yml的步骤和上面差不多,就不水了。
在docker-compose.yml文件中添加以下内容:

version: '3.0'
services:
  nginx:
    image: nginx
    restart: always
    container_name: nginx
    environment: 
      - TZ=Asia/Shanghai
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./log:/var/log/nginx
      - ./html:/html
      - ./etc/letsencrypt:/etc/letsencrypt

其中volumes中还可以添加一些静态的文件,例如打包好的前端项目什么的
然后根据数据卷的要求完成以下操作
创建一个etc文件夹
创建一个html文件夹
创建一个log文件夹
创建一个conf文件夹,在该文件夹下创建一个nginx.conf文件,里面的配置内容需要自己添加,也可以在网上找一些现成的模板来修改。
最后启动容器。

暂时先写到这,后续有内容继续添加。