Skip to content

docker-compose操作容器

docker-compose:是一个用于定义和运行多容器 Docker 的应用程序工具,可以帮助我们可以轻松、高效的管理容器

一、安装docker-compose

1.1-1.3是安装docker-compose 1.x版本的,如果要安装2.x,通过1.3离线安装,看1.4安装compose-switch。详情请看https://github.com/docker/compose#where-to-get-docker-compose

二、使用python2安装

  • yum install -y epel-release:如果安装报错,则修改以下配置

    vi /etc/yum.repos.d/epel.repo

注释掉metalink ,取消注释 baseurl

如果提示:

    Complete output from command python setup.py egg_info:
    Couldn't find index page for 'cffi' (maybe misspelled?)
    No local packages or download links found for cffi>=1.1

更新类库:

pip install cffi
  • 卸载:pip uninstall docker-compose

检查安装是否完成

docker-compose --version

三、使用二进制安装

下载文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授权

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

创建链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

检查安装是否完成

docker-compose --version

卸载

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

四、离线安装

访问https://github.com/docker/compose/releases,下载 docker-compose-Linux-x86_64,我是复制链接地址,在迅雷中下载的,下载后,将docker-compose-Linux-x86_64重命名为docker-compose

将文件上传到服务器,重复1.2上的操作,省去下载部分

五、安装compose-switch

为了从旧版 docker-compose 1.xx 平滑过渡,安装compose-switch以将docker-compose ...命令转换为 Compose V2 的docker compose .... . 还要检查 V2 的--compatibility标志。详情请看https://github.com/docker/compose-switch

六、自动安装脚本

curl -fL https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh

七、手动安装

  1. 下载 compose-switch 二进制文件

    curl -fL https://github.com/docker/compose-switch/releases/download/v1.0.1/docker-compose-linux-amd64 -o /usr/local/bin/compose-switch
  2. 使 compose-switch 可执行

    chmod +x /usr/local/bin/compose-switch
  3. 在已经安装docker-compose的基础上,即已经将二进制文件安装为/usr/local/bin/docker-compose

    mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-v1
  4. 为docker-compose命令定义一个“替代”组

    update-alternatives --install /usr/local/bin/ docker -compose docker -compose < PATH_TO_DOCKER_COMPOSE_V 1> 1
    update-alternatives --install /usr/local/bin/ docker -compose docker -compose /usr/local/垃圾箱/组合开关 99

八、操作容器

编写最简单的配置:

vi docker-compose.yml
version: '3'
services:
  redis:
    image: redis:6.0.12

操作命令,执行命令的时候一定要与配置在同一目录:

  • 后台启动容器:docker-compose up -d

  • 查看容器运行情况:docker-compose ps

  • 停止并删除容器:docker-compose down

  • 停止并删除容器并删除volume:docker-compose down --volumes

  • 停止启动容器:docker-compose stop;docker-compose start

  • docker-compose exec的使用,进入容器内部:docker-compose exec redis bash

九、多个容器管理

version: '3'
services:
  nginx:
    image: mycentos:nginx
    network_mode: "host"
    volumes:
    - /home:/usr/local/nginx/html
    - /var/logs/nginx/logs:/usr/local/nginx/logs
    command: /usr/local/nginx/sbin/nginx -g "daemon off;"
  redis:
    image: mycentos:redis
    ports:
    - "6380:6379"

快速搭建workpress个人博客

官网:https://docs.docker.com/compose/wordpress/

version: "3.9"

services:
  db:
    image: mysql:5.7
    #通过卷标获取路径
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    #docker启动-e的参数,配置环境变量
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
  #当db启动完成以后才执行当前的容器
    depends_on:
    #这里还有link的功能,即当前容器可以通过db访问到上面的容器
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    #端口映射
    ports:
      - "8000:80"
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
#卷标
volumes:
  db_data: {}
  wordpress_data: {}

查看当前所有卷

docker volume ls
#查看卷的详细信息
docker volume inspect 卷的名称

十、阿里云镜像仓库搭建

阿里云镜像仓库申请地址: https://cr.console.aliyun.com/cn-shanghai/instances/repositories 步骤: 登录阿里云Docker Registry

sudo docker login --username=穿靴子的狸花猫 192.168.1.21

将镜像推送到Registry

 sudo docker login --username=穿靴子的狸花猫 192.168.1.21
sudo docker tag [ImageId] 192.168.1.21/xdclassimages/mysql:[镜像版本号]
sudo docker push 192.168.1.21/xdclassimages/mysql:[镜像版本号]

从Registry中拉取镜像

sudo docker pull 192.168.1.21/xdclassimages/mysql:[镜像版本号]

十一、企业搭建私人镜像仓库

前置条件:需要安装docker、docker-compose、openssl以及python2.7以上

如果没有安装openssl:yum -y install openssl

  1. Harbor离线版安装下载地址:https://github.com/goharbor/harbor/releases

  2. 上传并且解压安装包

  3. 修改配置文件:harbor.yml

修改主机名(注意空格):hostname: 192.168.0.151

修改密码(注意空格):harbor_admin_password: Harbor12345

  1. 执行脚本:sh prepare :会生成docker-compose.yml文件

  2. 执行安装命令:sh install.sh

  3. 执行命令:docker-compose ps 查看是否已经启动

  4. 访问Harbor,默认用户名admin

Docker配置使用自建仓库,默认docker只允许访问https仓库,如果要访问http仓库需要自己配置

配置允许访问http仓库,添加以下配置:vi /etc/docker/daemon.json

{
    "insecure-registries":["http://192.168.0.151"]
}

重启docker服务

systemctl restart docker.service

docker login后有一个登录凭证(可删除,下次需要密码):

/root/.docker/config.json (建议从安全角度出发,每次登录后进行删除)

十二、本地镜像导出和载入

俩种办法:

  • 保存镜像

  • 保存容器

十三、保存镜像:

#通过镜像名称或者id  输出到指定路径,-o或者>表示输出的意思
docker save 镜像名称/镜像id -o/> /home/mysql.tar
#scp复制文件到另外的服务器
scp /home/mysql.tar  username@ip:/home/mysql.tar

载入镜像:

#载入指定的镜像,-i或者<表示载入的意思
docker load -i/< mysql.tar

十四、保存容器:

#根据容器id或者名称导出容器
docker export 974b919e1fdd -o /home/mysql-export.tar

载入容器:

docker import mysql-export.tar