前言:
该文章特别适用于自我学习和小规模使用的个人开发者
文章保证提供保姆级操作步骤,Ctrl+C加Ctrl+V可用
但你最好了解Linux的基础知识和操作,最好懂一点Docker的语法命令
当然,你不知道我也会解释的哈哈哈哈哈哈
更新:2020-09-28[在虚拟机上全流程测试可用]
推荐使用CentOS or Ubuntu
移除系统中可能存在的Docker组件
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装yum工具
sudo yum install -y yum-utils
添加Docker官方仓库
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装Docker组件和服务
sudo yum install docker-ce docker-ce-cli containerd.io
启动Docker服务
sudo systemctl start docker
开机自启Docker服务
sudo systemctl enable docker
!!!卸载Docker
sudo yum remove docker-ce docker-ce-cli containerd.io
以下按照顺序连续执行命令即可
目录可自行更改
如有变动,请自行更改以下容器中使用的目录结构
sudo mkdir /ls
sudo chmod 777 /ls
国内镜像下载过慢,推荐在阿里云>容器服务中申请镜像加速地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1hz07lr9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
为了方便容器互联,使用Docker网桥网络模式
docker network create ls_net
这些是最基本、最常用的Docker命令及参数,你应该熟练使用
拉取最新镜像
docker pull mysql
创建MySQL的挂载目录
sudo mkdir -p /ls/mysql/{data,conf,mysql-files}
创建MySQL配置文件
touch /ls/mysql/conf/my.cnf
创建容器
注意修改[MYSQL_ROOT_PASSWORD]
docker run -p 3306:3306 --name mysql \
-v /ls/mysql/data:/var/lib/mysql \
-v /ls/mysql/conf:/etc/mysql \
-v /ls/mysql/mysql-files:/var/lib/mysql-files \
--network ls_net --network-alias mysql \
-e MYSQL_ROOT_PASSWORD=YOURPASSWORD \
-d --restart always mysql
Docker运行容器时常用参数说明
设置MySQL外部可以访问
# 连接容器bash
docker exec -it mysql bash
# -*-*-*-* mysql容器内 *-*-*-*-*
mysql -uroot -p
use mysql;
GRANT ALL ON *.* TO 'root'@'%';
# 自行修改 YOURPASSWORD
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YOURPASSWORD';
flush privileges;
# 退出mysql
exit
# 按 ctrl+P 后 按 ctrl+Q 退出容器至宿主机
# 重启mysql容器
docker restart mysql
仅介绍说明5.7挂载目录和部署镜像差异
其他操作步骤同上
拉取最新镜像
docker pull mysql:5.7
创建MySQL的挂载目录
sudo mkdir -p /ls/mysql5.7/{data,conf,log}
创建容器
docker run -p 3307:3306 --name mysql5.7 \
-v /ls/mysql5.7/log:/var/log/mysql \
-v /ls/mysql5.7/data:/var/lib/mysql \
-v /ls/mysql5.7/conf:/etc/mysql \
--network ls_net --network-alias mysql5.7 \
-e MYSQL_ROOT_PASSWORD=YOURPASSWORD \
-d --restart always mysql:5.7
拉取镜像
docker pull redis
创建Redis的挂载目录
mkdir -p /ls/redis/{data,conf}
创建并编辑Redis配置文件
vim /ls/redis/conf/redis.conf
# -*-*-*-* redis.conf *-*-*-*-*
# 开启持久化(将内存中的数据保存在磁盘上)
appendonly yes
# 设置访问密码
requirepass "YOURPASSWORD"
创建容器
docker run -p 6379:6379 --name redis --restart always \
-v /ls/redis/data:/data \
-v /ls/redis/conf/redis.conf:/etc/redis/redis.conf \
--network ls_net --network-alias reids \
-d redis redis-server /etc/redis/redis.conf
拉取镜像
docker pull store/oracle/database-enterprise:12.2.0.1
创建Oracle 12c挂载目录
sudo mkdir -p /ls/oracle/data
chown -R 54321:54321 /ls/oracle/data
创建容器
docker run -d --name oracle -p 1521:1521 \
--network ls_net --network-alias oracle \
-e DB_SID=orcl --restart always \
-v /ls/oracle/data:/ORCL store/oracle/database-enterprise:12.2.0.1
修改sys密码并创建新用户
# 若刚执行创建容器命令,需要等候几分钟待容器创建完成
docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
connect / as sysdba;
# sys密码为Oradoc_bd1
# 修改系统用户密码
ALTER USER SYSTEM IDENTIFIED BY "123456";
# 创建新用户 用户名lostsakura可以替换
CREATE USER C##lostsakura IDENTIFIED BY "YOURPASSWORD";
# 为新用户赋权
GRANT CREATE SESSION TO C##lostsakura;
GRANT CREATE TABLE TO C##lostsakura;
GRANT CREATE TABLESPACE TO C##lostsakura;
GRANT CREATE VIEW TO C##lostsakura;
拉取镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest
创建容器
docker run --name mssql --restart always -d \
-p 1433:1433 --network ls_net --network-alias mssql \
-e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YOURSTRONGPASSWORD" \
mcr.microsoft.com/mssql/server:2019-latest
拉取镜像
docker pull postgres
创建容器
# 用户名默认为 postgres
docker run -d -p 5432:5432 --name postgres \
-e POSTGRES_PASSWORD=YOURPASSWORD \
--network ls_net --network-alias postgres \
--restart always postgres
拉取镜像
docker pull mongo
创建容器
docker run --name mongo -p 27017:27017 \
--network ls_net --network-alias mongo \
-itd --restart always mongo --auth
配置用户信息
docker exec -it mongo mongo admin
# 创建admin用户
db.createUser({ user:'admin',pwd:'YOURPASSWORD',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
其他实用容器,持续更新中…