Ubuntu 使用Docker

Ubuntu 使用Docker

安装Docker和docker-compose

(1) 卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

(2) 安装Docker

# 1)安装 docker 脚本
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 2) 手动安装
sudo apt update
# 	安装依赖
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 	导入源仓库的 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#ubuntu 22.04 key管理方式过期
# mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/

# 	添加 Docker APT 软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

# 	安装 Docker 最新版本
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose
安装Mysql 5.7
  1. 编辑配置文件
# 编辑DOcker MySQL配置文件
vim docker-compose.yml
version: '2.2'
services:
  mysql:
    restart: always
    image: mysql:5.7
    container_name: mysql
    ports:
      - 3306:3306
    expose:
      - 3306
    volumes:
      - /home/docker/mysql/data:/var/lib/mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: d@bI=gC8mH

其中: /home/docker/mysql/data 为外置数据文件

  1. 通过docker-compose.yml创建并运行Mysql容器
# 更改 docker-compose.yml 文件后需要重新载入
docker-compose up -d

容器之间的通信

一、通过 --link 互联,适用于容器网络属于docker0
1. 使用普通的 docker 创建容器
  • 启动MySQL容器

    docker run -p 3366:3306 \
    --name mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /myData/mysql/data:/var/lib/mysql \
    -d mysql
    
  • 启动 nacos 容器(使用 --link 连接其他属于docker0网络的容器

    docker run --name nacos8849 -p 8849:8848 \
    -e JVM_XMS=128m \
    -e JVM_XMX=256m \
    -e MODE=standalone \
    -e PREFER_HOST_MODE=hostname \
    -v /myData/nacos8849/logs:/home/nacos/logs \
    -v /myData/nacos8849/conf/application.properties:/home/nacos/conf/application.properties \
    --privileged=true \
    --link mysql \
    -d nacos/nacos-server:1.4.1
    
  • 进入容器可以通过容器名称 ping 通

    # 进入容器 nacos8849
    docker exec -it nacos8849 /bin/bash
    # ping MySQL容器(名称为 mysql )
    ping -c4 mysql
    
2. 使用 docker-compose 创建容器
  • docker-compose.yml

    version: '2.2'
    services:
      sharelatex:
        restart: always
        image: sharelatex/sharelatex
        container_name: sharelatex
        depends_on:
          mongo:
            condition: service_healthy
          redis:
            condition: service_started
        ports:
          # 端口号映射
          # 外机端口:容器内部端口
          - 9000:80
        expose:
          - 9000
        links:
          - mongo
          - redis
    
      # redis和mongo只能和sharelatex一起创建
      redis:
        restart: always
        image: redis:5
        container_name: redis
        ports:
          - 6379:6379
        expose:
          - 6379
        volumes:
          # redis缓存dump文件存放处
          - /home/docker/redis/data:/data
    
      mongo:
        restart: always
        image: mongo:4.0
        container_name: mongo
        ports:
          - 27017:27017
        expose:
          - 27017
        volumes:
          # mongo数据存放处(账号密码等)
          - /home/docker/mongo/data:/data/db
    

二、通过自定义网络互联(推荐)

  • 创建共享网络
docker network create --driver bridge --subnet 172.88.0.0/24 --gateway 172.88.0.1 mybridge
1. 使用普通的 docker 创建容器
  • 使用参数 --net 指定网络连接的网络

    # 创建mysql容器
    docker run -p 3367:3306 \
    --name mysql02 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /myData/mysql02/data:/var/lib/mysql \
    --net mybridge \
    -d mysql
     
    #创建nacos容器
    docker run --name nacos8850 -p 8850:8848 \
    -e JVM_XMS=128m \
    -e JVM_XMX=512m \
    -e MODE=standalone \
    -e PREFER_HOST_MODE=hostname \
    -v /myData/nacos8850/logs:/home/nacos/logs \
    -v /myData/nacos8850/conf/application.properties:/home/nacos/conf/application.properties \
    --net mybridge \
    --privileged=true \
    -d nacos/nacos-server:1.4.1
    
2. 使用 docker-compose 创建容器
  • docker-compose.yml

    version: '2.2'
    services:
      redis:
        restart: always
        image: redis:5
        container_name: redis
        ports:
          - 6379:6379
        expose:
          - 6379
        volumes:
          # redis缓存dump文件存放处
          - /home/docker/redis/data:/data
    
    networks:
      default:
        external:
          name: mybridge
    

三、 将其他已创建的 容器重新连接到指定的网络

# 断开 MySQL(不指定网络默认为创建并连接到一个 容器名称_default 的新网络)
docker network disconnect mysql_default mysql
# 连接新网络
docker network connect mybridge mysql
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憶夣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值