docker基础操作及部署springboot项目流程

一、安装docker及基础命令

1.centos系统安装https://www.runoob.com/docker/ubuntu-docker-install.html

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.启动docker服务

systemctl start docker

3.查看docker服务是否启动成功

docker info

4.设置开机自启

systemctl enable docker

5.重启服务

systemctl restart docker

二、docker阿里云加速

1.注册阿里云账户,搜索容器镜像服务,找到镜像加速器

sudo mkdir -p /etc/docker

2.修改daemon.json

{
  "registry-mirrors": ["https://21pdv2qz.mirror.aliyuncs.com"]
}

3.重启docker服务,查看配置是否生效

systemctl restart docker
docker info

三、下载镜像

1.mysql

docker pull mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql
docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql  mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql5.7.32,设置数据卷
docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7.32 -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql  mysql:5.7.32

2.redis

docker pull redis:5
//启动redis服务,拷贝配置文件
docker run --name redis-test -p 6379:6379 -d redis:5
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动redis服务,后台运行,指定端口,指定容器名称为redis,设置数据卷
docker run -d -p 6379:6379 --name redis -v redisconf:/etc/redis/redis.conf -v redisdata:/data redis:5 redis-server /etc/redis/redis.conf 
docker run -d -p 6379:6379 --name redis -v /www/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /www/docker/redis/data:/data redis:5 redis-server /etc/redis/redis.conf

3.nginx

docker pull nginx
//启动nginx服务,拷贝配置文件
docker run --name nginx-test -p 80:80 -d nginx
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动nginx服务,后台运行,指定端口,指定容器名称为nginx ,设置数据卷
docker run -d -p 9000:80  --name nginx -v /www/docker/nginx/dist:/usr/share/nginx/html -v /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/docker/nginx/logs:/var/log/nginx nginx

四、Dockerfile

官方说明:https://docs.docker.com/engine/reference/builder/

保留字 作用
FROM 当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 构建镜像时需要运行的指令
EXPOSE 当前容器对外暴露出的端口号
WORKDIR 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY 类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT 指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
FROM openjdk:8
WORKDIR /demo
ADD demo.jar /demo
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["demo.jar"]

五、compose使用

1.安装

sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#测试安装是否成功
docker-compose --version

2.docker-compose.yml
创建hello网桥

docker network create -d bridge hello

Dockerfile文件

FROM openjdk:8-jre
WORKDIR /api
EXPOSE 8080
CMD ["java", "-jar", "-Dserver.port=8080", "/api/dome.jar"]

compose示例

version: "3"

services:
  apiserver:
    build:
      context: ./dockerFiles/images/jdk
    container_name: 'apiserver'
    restart: 'always'
    ports:
      - "8080:8080"
    environment:
      TZ: "Asia/Shanghai"
    volumes:
      - ./jar/opt:/api/opt    #注意挂载时的日志路径和上传文件路径
      - ./jar:/api
    networks:      
      - hello
    depends_on:   # 容器依赖
      - redis
      - mysql
  mysql:
    image: mysql:5.7.32
    container_name: mysql
    restart: 'always'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  # 设置utf8字符集
    ports:
      - "3306:3306"
    volumes:
      - mysqldata3:/var/lib/mysql
      - mysqlconf3:/etc/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - TZ=Asia/Shanghai
    command: --lower-case-table-names=1 #表示表名不区分大小写
    networks:
      - hello
  redis:
    image: redis:5.0.10
    container_name: redis
    restart: 'always'
    ports:
      - "6379:6379"
    environment:
      TZ: "Asia/Shanghai"
    volumes:
      - redisdata:/data
    networks:
      - hello
    command: "redis-server --appendonly yes" #run 镜像之后用来覆盖容器内容默认命令
  nginx:
    image: nginx:1.18.0
    container_name: nginx
    restart: 'always'
    ports:
      - 9998:80
      - 3000:3000
    volumes:
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf          # 配置文件
      #- ./nginx/cert/:/etc/cert/                    # ssl证书
      #- ./nginx/html/:/usr/share/nginx/html          # 默认显示的index网页
      - ./nginx/html/:/usr/share/nginx/weather
      - ./nginx/logs/:/var/log/nginx/                # 日志文件
    environment:
      TZ: "Asia/Shanghai"
    networks:
      - hello
    depends_on:   # 容器依赖
      - apiserver
volumes:  #声明上面服务所使用的自动创建的卷名
  mysqldata3:
  mysqlconf3:
  redisdata:
networks: #定义服务用到桥
  hello: #定义上面的服务用到的网桥名称 默认创建就是 bridge
    external:
      true   #使用外部指定网桥  注意:网桥必须存在

你可能感兴趣的:(docker,spring,boot,容器)