Docker镜像+Docker compose

1.docker+docker compose

1.1 概念

明确几个概念,希望大家对 docker / docker compose / k8s / .. 有个清晰认知:
​
1. docker 面向服务交付,解决了服务打包的问题,在容器化流行之前, 研发交付的是代码(动态语言,比如PHP)或者build后生成的文件(Java),针对运行环境的管理多交给运维;容器化之后,研发交付的是镜像,基本来说就是可以在绝大部分环境直接运行的一个产物,镜像中除了打包了程序,还打包了程序运行的所有依赖,包括系统需要安装什么包,这样就极大减轻了运行环境变化引入的各类奇葩问题。镜像类似一个程序的压缩包,而容器是镜像启动以后的名称,以进程形态存在于运行环境中。
2.  最简单启动容器的方式是 docker run ... ,但 docker run 在部署的时候有一些不足,比如配置项多了看着比较乱,也不方便滚动更新。如果一个服务需要依赖多个容器,docker run 就得执行好几遍。所以生产环境中,多是采用 docker compose 进行服务容器部署,它解决了单机多容器编排的问题,白话就是在一个机器上一次性起很多个容器
3.  如果单机无法承载怎么办,这就引出了多机多容器编排的问题,现在最主流的方案是 K8S,这个暂时不对你们做要求。但如果谁感兴趣,可以再问我。

1.2 docker 下载安装

  • 再推荐一款 https://github.com/ossc-db/pg_bulkload,不过这个需要编译安装,你们后期在学习 Docker 镜像构建的时候可以学习一下
1.1.1 下载安装
  1. 卸载旧版本

$ sudo apt-get remove docker \
               docker-engine \
               docker.io \
               containerd \
               runc
​
​
​
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo apt-get autoremove -y --purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
  1. 使用APT开始安装

$ sudo apt-get update
​
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加源APT GPG秘钥

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
​
​
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加docker源

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
​
​
# 官方源
# $ echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 开始安装Docker

    1. 查看可用版本

      $ sudo apt-get update
      $ apt-cache madison docker-ce
      $ apt-cache madison docker-ce-cli
    2. 安装指定版本

      $ sudo apt-get install docker-ce=5:27.0.3-1~ubuntu.20.04~focal  docker-ce-cli=5:27.0.3-1~ubuntu.20.04~focal  containerd.io
    3. 直接安装最新版本

      sudo apt-get install docker-ce docker-ce-cli containerd.io
  2. 查看安装情况

    sudo docker -v
    docker info

1.1.2 镜像拉取
::怎么解决镜像拉取问题?
https://blog.csdn.net/zsljfok/article/details/131164336
::镜像拉取
https://docker.awsl9527.cn
https://dockerhub.icu/
::镜像加速器
推荐阅读一下 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6,这算是全网写的比较全面的一份文档,讲镜像加速器的。
​
拉取镜像可以走两条路,一条是通过 Mirror,一条是通过代理。你可以在昨天那张科学上网图的基础上把通过代理拉取镜像的网络请求流程图画清楚。
因为结合了代理所以网络链路会更复杂一点,但是有助于你了解完整的请求链路

从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼
https://blog.csdn.net/weixin_50160384/article/details/139861337?spm=1001.2014.3001.5506

  • 步骤

  1. 查看镜像源(手动创建)

     cat /etc/docker/daemon.json
  2. 修改镜像源

    sudo vi /etc/docker/daemon.json
    ​
    {
    "registry-mirrors": ["https://docker.awsl9527.cn","https://dockerhub.icu"],
    "default-address-pools":
    [
    {"base":"10.10.0.0/16","size":24}
    ],
    "insecure-registries": ["registry.inventec"]
    }
    ​
  3. 修改完镜像源需要重启docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
1.1.3 下载安装docker compose
1.方法
  1. GitHub 官方下载安装(推荐,速度慢但不会出错)

wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
  1. 移动下载软件到/usr/local/bin/docker-compose覆盖旧版本:

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
  1. 赋予执行权限

chmod +x /usr/local/bin/docker-compose
  1. 测试安装是否成功

docker-compose --version

2.案例
案例要求:同时部署mysql、redis、nginx、nacos等组件容器。
​
1.创建文件夹:mkdir -p /usr/local/mycompose
2.进入文件夹:cd /usr/local/mycompose
3.创建 docker-compose.yml文件:vi docker-compose.yml
​
version: '3'
services:
  redis1:
    image: redis
    ports:
      - "6379:6379"
    container_name: "redis1"
    networks: 
      - dev
  mysql1:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: "ut.123456"
    ports: 
      - "3306:3306"
    container_name: "mysql1"
    networks: 
      - dev
  nginx1:
    image: nginx
    ports: 
      - "8080:80"
    container_name: "nginx1"
    networks: 
      - dev
  nacos1:
    image: nacos/nacos-server
    ports: 
      - "8848:8848"
    container_name: "nacos1"
    networks: 
      - dev
networks:
  dev:
    driver: bridge
  pro:
    driver: bridge
​

.后台启动配置中创建的容器:docker-compose up -d

1.3 docker命令

启动        systemctl start docker
守护进程重启   sudo systemctl daemon-reload
重启docker服务   systemctl restart  docker
重启docker服务  sudo service docker restart
关闭docker   service docker stop  
关闭docker  systemctl stop docker
1
​

1.4 每配置项

  • 另外 /etc/docker/daemon.json 里面配置的 default-address-pools 你也研究一下这个啥作用,这个其实很关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值