docker容器的数据卷

1配置数据卷

docker run --name=n01 -d --restart=always -p 80:80 -v /qy172/data/nginx/html:/usr/share/nginx/html nginx

2Docker应用部署

1搜索mysql镜像

docker search mysql

2拉取mysql镜像

docker pull mysql:5.6

3创建容器,

设置端口映射、目录映射

docker run -d --name=m01  -p 3306:3306 -v /ykq/mysql/log:/var/log/mysql \
-v /ykq/mysql/data:/var/lib/mysql -v /ykq/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.2.0

  • 参数说明:

  • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。

    • -v /ykq/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录

    • -v /ykq/mysql/log:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录

    • -v /ykq/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录

    • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

4Docker部署tomcat--ssm--部署tomcat

搜索tomcat镜像

docker pull tomcat

创建容器,设置端口映射、目录映射

# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat

docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD/wabapps:/usr/local/tomcat/webapps \
tomcat 

使用外部机器访问tomcat。

xxxxxxxxxx docker run -dit --name tomcat --restart=always \-p 8080:8080 \-e TZ=Asia/Shanghai \-v /usr/local/app/tomcat/webapps:/usr/local/tomcat/webapps \tomcat:8.5

docker run -dit --name tomcat --restart=always \
-p 8080:8080 \
-e TZ=Asia/Shanghai \
-v /usr/local/app/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5

5Docker部署nginx

1搜索nginx镜像

docker search nginx

2拉取nginx镜像

docker pull nginx

3创建容器,设置端口映射、目录映射

# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
worker_connections  1024;
}


http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;

include /etc/nginx/conf.d/*.conf;
}

docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

 

6Redis部署

1搜索redis镜像

docker search redis

2拉取redis镜像

docker pull redis:5.0

3创建容器,设置端口映射

/qy172/data/redis/redis.conf

 docker run -id --name=c_redis -p 6379:6379 redis:5.0

4使用外部机器连接redis

不一定非得说这个redis桌面软件

7自定义镜像

上面讲解的内容需要的镜像 都是从远程仓库拉取,我们能否把自己写的工程也变成一个镜像[运维工作者就可以从远程仓库拉取自己镜像]。可以的。 需要自定义镜像

8Dockerfile关键字

9-1Dockerfile案例

1编辑dockerfile文件

[root@hecs-33111 docker-files]# vim centos_dockerfile

FROM centos:7
MAINTAINER ykq <2300316070@qq.com>
RUN yum install -y vim
WORKDIR /usr
CMD ["/bin/bash"]

 2构建镜像

[root@hecs-33111 docker-files]# docker build -f centos_dockerfile -t aaa_centos:1 .

-f:表示dockerfile文件
-t: 镜像名称版本号 
.: 必须加上

 

3创建容器

docker run -it --name=aaa_centos aaa_centosdocker:1 /bin/bash

9-2案例2

  1准备好springboot jar包并传至宿主机的根目录

2创建docker-files目录,并把jar包移动进去

3创建dockerfile文件并编辑

FROM java:8
MAINTAINER ykq <2300316070@qq.com>
ADD demo-qy158-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar

 4根据dockerfile制作镜像

docker build -f ./springboot_dockerfile -t app .

注意: 这个点不能省略

5启动并做端口映射

docker run -id -p 9000:8080 app

8Docker服务编排

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

1安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

 

2卸载Docker Compose 【根据需要选择】

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

9使用docker compose编排springboot+redis+mysql项目

1docker compose步骤

  1. 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件

  2. 使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。

  3. 最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线

2创建docker-compose目录

1 打包springboot工程

2编写dockerfile文件

# 基础镜像使用java
FROM openjdk:8
# 作者
MAINTAINER ykq
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为ykq_docker.jar
ADD redis-springboot-cache-0.0.1-SNAPSHOT.jar ykq_docker.jar
# 运行jar包
RUN bash -c 'touch /ykq_docker.jar'
ENTRYPOINT ["java","-jar","/ykq_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 8080

 3编写 docker-compose.yml 文件

version: "3"
services:
  micro_service:
    container_name: ms01
    build:
      context: ./project
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - /app/microService:/data
    networks:
      - aaa_net
    depends_on:
      - myredis
      - mymysql
  myredis:
    image: redis:6.0.20
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf  # 必须在宿主机中存在my.cnf文件
      - /app/redis/data:/data
    networks:
      - aaa_net
    command: redis-server /etc/redis/redis.conf
  mymysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'qy168'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf # 必须在宿主机中存在my.cnf文件
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - aaa_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
  aaa_net:

 4在~/docker-compose 目录下 使用docker-compose 启动容器

docker-compose up

相关推荐

  1. Docker容器数据

    2024-03-11 06:40:02       26 阅读
  2. Docker 容器数据

    2024-03-11 06:40:02       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 06:40:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 06:40:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 06:40:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 06:40:02       18 阅读

热门阅读

  1. Vue-router

    2024-03-11 06:40:02       20 阅读
  2. Mac提示Could not set environment: 150如何进入恢复模式

    2024-03-11 06:40:02       20 阅读
  3. Qt无边框窗口可拖动

    2024-03-11 06:40:02       19 阅读
  4. Unity InputField宽度自适应内容

    2024-03-11 06:40:02       22 阅读
  5. 002 Object类

    2024-03-11 06:40:02       18 阅读
  6. 大唐杯学习笔记:Day10

    2024-03-11 06:40:02       20 阅读
  7. Rust个人学习之包&模块

    2024-03-11 06:40:02       19 阅读
  8. MybatisPlus自动生成代码

    2024-03-11 06:40:02       21 阅读
  9. Git Cherry-Pick命令详解:轻松选取与移植提交

    2024-03-11 06:40:02       22 阅读
  10. Android Intent 传递数据过大问题

    2024-03-11 06:40:02       22 阅读
  11. [论文笔记] Transformer-XL

    2024-03-11 06:40:02       22 阅读
  12. HTTP常见报错响应码

    2024-03-11 06:40:02       22 阅读