docker容器的数据卷

1配置数据卷

bash 复制代码
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创建容器,

设置端口映射、目录映射

bash 复制代码
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

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

使用外部机器访问tomcat。

bash 复制代码
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
bash 复制代码
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创建容器,设置端口映射、目录映射

bash 复制代码
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
bash 复制代码
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;
}
bash 复制代码
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

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

2构建镜像

bash 复制代码
[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文件并编辑

bash 复制代码
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

bash 复制代码
# 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文件

bash 复制代码
# 基础镜像使用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 文件

bash 复制代码
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

相关推荐
_.Switch6 分钟前
Python 自动化运维持续优化与性能调优
运维·开发语言·python·缓存·自动化·运维开发
南猿北者11 分钟前
Docker Volume
运维·docker·容器
网络研究院2 小时前
Am I Isolated:一款安全态势基准测试工具
容器·工具·基准测试·安全态势
涔溪3 小时前
Docker简介
spring cloud·docker·eureka
内核程序员kevin4 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
kayotin4 小时前
Wordpress博客配置2024
linux·mysql·docker
Ztiddler5 小时前
【Linux Shell命令-不定期更新】
linux·运维·服务器·ssh
小小不董5 小时前
Oracle OCP认证考试考点详解082系列16
linux·运维·服务器·数据库·oracle·dba
IPdodo全球网络5 小时前
如何利用静态住宅IP优化Facebook商城的网络稳定性与运营效率
运维·服务器
颜淡慕潇6 小时前
【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
后端·云原生·容器·kubernetes·问题解决