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步骤
-
编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
-
使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。
-
最后,执行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