Docker
大约 3 分钟
Docker
介绍🐸
- 2019
- 一种容器化技术,更快更方便的部署
安装✋
这个安装方式貌似无法使用镜像源
- ubuntu20: snap install dockerdocker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- docker-compose
#可能需要切换到root用户下执行, v2.6.1 这个得去github找最新版
wget https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
- 备注:有的系统需要手动启动
systemctl start docker.service
systemctl enable docker.service
systemctl daemon-reload #重启
- 手动配置镜像源
- vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://almtd3fa.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn"]
}
常用命令✋
- docker
docker exec nest_mongo sh mongo.sh #执行容器内的脚本
docker exec nest_mongo /bin/bash #进入容器
docker save nginx-device:v1 > nginx.tar.gz #docker导出
docker load -i nginx.tar.gz #docker导入(-i带标签和版本)
docker build -t nest-sheet:v1 #docker构建(.必需)
docker ps #查看容器
docker rm #删除没有运行的容器,-f参数,删除正在运行的容器
- docker-compose
docker-compose up -d #运行
docker-compose down #停止删除
docker-compose start #启动容器
docker-compose stop #停止
docker-compose restart #重启
docker-compose logs -f #查看日志
- 清理
#删除所有的none镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi
#删除没有使用的镜像
docker image prune -a
配置镜像源💢
- 在/etc/docker目录下创建daemon.json文件,阿里云
- 创建文件: vim /etc/docker/daemon.json
- 配置内容
提示
{ "registry-mirrors": ["https://almtd3fa.mirror.aliyuncs.com"] }
运行镜像🗾
Mongodb🍋
- https://hub.docker.com/_/mongo?tab=description
- docker run -d -p 27017:27017 --name mongodb-dev mongo:5.0.10
- 配置账号密码
# 必须要进入admin库设置密码
use admin
db.createUser({'user':'root','pwd':'123456','roles':[{role:'root',db:'admin'}]})
Mysql🏩
- docker run -d -p 3306:3306 --name mysql-dev -e MYSQL_ROOT_PASSWORD=root mysql:5.7
- docker run -d -p 3306:3306 --name mysql-dev -e MYSQL_ROOT_PASSWORD=root mysql:8.0.29
- docker-compose
version: "3.7"
services:
mysql-dev: #服务名
restart: always #跟随docker启动
image: mysql:8.0.29 #拉取镜像
container_name: mysql-dev #容器名
ports: #端口映射 本地:容器
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root #密码
- TZ=Asia/Shanghai #时区
#volumes:
# - /data/mysql/data:/var/lib/mysql # 映射数据卷
# - ./sql:/sql #备份sql保存目录
# - ./backup.sh:backup.sh #备份脚本
提示
开启远程访问
docker exec -it mysql-dev bash
mysql -uroot -proot
#mysql8执行
GRANT ALL ON *.* TO 'root'@'%';
#一个比较通用的解决方法
USE mysql;
update user set Host="%" where User="root";
select User,authentication_string,Host from user;
flush privileges;
- 基本脚本导入sql
mysql -uroot -p$password <<EOF
CREATE DATABASE nest_common_dev;
USE nest_common_dev;
source /root/sql/nest_struct.sql;
source /root/sql/init.sql;
USE mysql;
update user set Host="%" where User="root";
select User,authentication_string,Host from user;
flush privileges;
EOF
Redis🍏
- docker-hub: https://hub.docker.com/_/redis
docker run -d --name redis-dev -p 6379:6379 redis:7.0.2 --requirepass "root" #选择版本运行 redis:5.0.6,--requirepass设置密码
docker exec -it redis-dev /bin/bash #进入redis的shell
redis-cli #进入redis
命令 AUTH root #登入
get key #获取
set key value #set
keys * #查看所有
PostgresSql😃
- root账号名: postgres
- docker run --name postgres-dev -p 5432:5432 -e POSTGRES_PASSWORD=root -d postgres:15.0
Rabbitmq🏧
- docker run -d --name rabbitmq-dev -p 15672:15672 -p 5672:5672 rabbitmq:management
RocketMq🍒
- 暂不需要
Nacos🐔
- mysql8+nacos2.x
- https://gitee.com/licheng1013/nacos-docker
Seata❤️
Ubuntu⭐
- docker pull ubuntu:22.04
Python🌈
- docker pull python:3.9.13
DrawIo🐔
- 流程图
- docker run -it --rm --name="draw-dev" -p 8080:8080 -p 8443:8443 jgraph/drawio
- http://localhost:8080/?offline=1&https=0
Go部署😎
- 镜像
- docker pull golang:1.19.0
docker-compose部署🌅
version: "3.7"
services:
go-dev: #容器名
restart: always #跟随docker启动
image: centos:centos7 #拉取镜像-千万别使用ubuntu镜像会有证书问题tmd
container_name: go-dev #容器名
ports: #端口映射 本地:容器
- "8999:8999"
volumes: #数据映射必须绝对路径 本地:容器
- ./main:/main #示例目录必须存在
- ./application.yml:/application.yml #外部配置文件
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
entrypoint: ./main #启动参数覆盖
Java部署🍋
docker-compose部署🍒
提示
主要配置文件
version: "3.7"
services:
java-dev: #容器名
restart: always #跟随docker启动
image: openjdk:17.0-oracle #拉取镜像
container_name: java-dev #容器名
ports: #端口映射 本地:容器
- "9999:9999"
volumes: #数据映射必须绝对路径 本地:容器
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- ./app:/app
# - ./file:/file
entrypoint: sh -c "cd app && java -server -Xms128m -Xmx128m -jar app.jar" # app.jar是你在当前app目录下的jar包名