跳至主要內容

Docker

LiCheng大约 3 分钟

Docker

介绍🐸

  • 2019
  • 一种容器化技术,更快更方便的部署

安装✋

  • 这个安装方式貌似无法使用镜像源 - ubuntu20: snap install docker

  • docker

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🍋

# 必须要进入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 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🐔

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包名