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
- 编辑配置文件
# 编辑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 为外置数据文件
- 通过
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