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 