SueWakeup
个人主页:SueWakeup
系列专栏:为祖国的科技进步添砖Java
个性签名:保留赤子之心也许是种幸运吧
目录
[1. 什么是 Docker ?](#1. 什么是 Docker ?)
[2. Docker 安装](#2. Docker 安装)
[3. Docker 镜像](#3. Docker 镜像)
[4. Docker 容器](#4. Docker 容器)
[4.1 运行容器](#4.1 运行容器)
[4.2 查看正在运行的容器](#4.2 查看正在运行的容器)
[4.3 停止容器运行](#4.3 停止容器运行)
[4.4 启动容器](#4.4 启动容器)
[4.5 删除容器(只能删除停止运行的容器)](#4.5 删除容器(只能删除停止运行的容器))
[5. 案例:Docker 安装 MySql](#5. 案例:Docker 安装 MySql)
[5.1 下载镜像](#5.1 下载镜像)
[5.2 创建环境目录](#5.2 创建环境目录)
[5.3 主 mysql 容器运行](#5.3 主 mysql 容器运行)
[5.4 配置 mysql 权限账户](#5.4 配置 mysql 权限账户)
[5.5 登录主服务器 mysql](#5.5 登录主服务器 mysql)
[5.6 修改密码和设置从服务器登录用户](#5.6 修改密码和设置从服务器登录用户)
[6. 案例:Docker 安装 Mongo](#6. 案例:Docker 安装 Mongo)
[6.1 下载镜像](#6.1 下载镜像)
[6.2 运行 mongo](#6.2 运行 mongo)
[6.3 进入 mongo 容器](#6.3 进入 mongo 容器)
注:手机端浏览本文章可能会出现 "目录"无法有效展示的情况,请谅解,点击侧栏目录进行跳转
1. 什么是 Docker ?
Docker 是基于 Go语言实现的开源项目,用于开发、运行和管理应用程序,利用容器化技术,能够将应用程序及其依赖项打包到一个可移植的容器中,从而实现跨平台部署
主要目标: "Build,Ship and Run Any App,Anywhere",通过对应的组件的封装、分发、部署、运行等生命周期管理,让用户 APP 及运行环境能够做到 "一次封装,到处运行"
2. Docker 安装
- 启动:systemctl start docker
- 查看状态:ststemctl status docker
- 测试:docker run hello-world
- 查看 docker 版本信息:docker version
3. Docker 镜像
- 获取镜像网站:https://hub.daocloud.io/
- 获取镜像:docker pull 镜像名称
- 查看本地所有镜像:docker images
- 删除本地镜像:docker rmi 镜像标识
4. Docker 容器
4.1 运行容器
Go
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识
参数解释:
-d:代表后台执行
-p:将当前 Linux 的端口和容器的端口号进行映射
--name:容器的名字
4.2 查看正在运行的容器
Go
docker ps -qa
参数解释:
-a:所有的容器(包括没有运行的容器)
-q:只查看标识
4.3 停止容器运行
Go
docker stop 容器标识
4.4 启动容器
Go
docker start 容器标识
4.5 删除容器(只能删除停止运行的容器)
Go
docker rm 容器标识
docker rm -f 容器标识(强制删除容器,即使正在运行)
5. 案例:Docker 安装 MySql
5.1 下载镜像
Go
docker pull daocloud.io/libary.mysql:8.0.16
5.2 创建环境目录
Go
cd /usr/local/
mkdir mysql
cd mysql
mkdir master-data
5.3 主 mysql 容器运行
Go
docker run --name mysql-master --privileged=true -v /usr/local/mysql/masterdata:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d
daocloud.io/library/mysql:8.0.16 --character-set-server=utf8 --server-id=1 --
lower_case_table_names=1
参数:
--privileged:指定当前容器是否真正的具有 root 权限
-p:表示宿主机上的某个端口映射到 docker 容器内的某个端口
-d:参数制定了当前容器是在后台运行
--server-id:设置服务器的编号,主从复制的每一个服务的编号都不能相同
5.4 配置 mysql 权限账户
Go
docker exec -it mysql-master /bin/bash
5.5 登录主服务器 mysql
Go
mysql -uroot --p
5.6 修改密码和设置从服务器登录用户
Go
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE USER 'slave_one'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave_one'@'%';
CREATE USER 'slave_two'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave_two'@'%';
flush privileges;
6. 案例:Docker 安装 Mongo
6.1 下载镜像
Go
docker pull mongo:5.0.3
6.2 运行 mongo
Go
docker run -itd --name mongoserver -p 27017:27017 mongo:5.0.3
6.3 进入 mongo 容器
Go
docker exec -it mongoserver mongosh