Docker 应用部署
一、部署MySQL
- 搜索mysql镜像
docker search mysql
- 拉取mysql镜像
docker pull mysql:5.6
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \ #端口映射
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
- 参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。
- 进入容器,操作mysql
docker exec –it c_mysql /bin/bash
- 使用外部机器连接容器中的mysql
二、部署Tomcat
- 搜索tomcat镜像
docker search tomcat
- 拉取tomcat镜像
docker pull tomcat
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
-
参数说明:
-
**-p 8080:8080:**将容器的8080端口映射到主机的8080端口
**-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps
-
- 使用外部机器访问tomcat
三、部署Nginx
- 搜索nginx镜像
docker search nginx
- 拉取nginx镜像
docker pull nginx
- 创建容器,设置端口映射、目录映射
# 在/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;
}
cd .. #pwd=/root/nginx
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
-
参数说明:
- -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
vim index.html
<h1>hello nginx docker</h>
- 使用外部机器访问nginx
四、部署Redis
- 搜索redis镜像
docker search redis
- 拉取redis镜像
docker pull redis:5.0
- 创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0
- 使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379
五Dockerjing镜像原理
-
进程调度子系统
-
进程通信子系统
-
内存管理子系统
-
设备管理子系统
-
文件管理子系统
-
linux文件系统由bootfs和rootfs两部分组成
- bootfs:包含bootloader(引导加载程序)和kernel(内核)
- rootfs:root文件系统,包含的就是典型Linux系统中的/dev,
/proc,/bin,/etc等标准目录和文件 - 不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu
-
-
网络通信子系统
-
作业控制子系统
Docker镜像原理
-
docker镜像是由特殊的文件系统叠加而成
-
最底层是bootfs,并使用宿主主机的bootfs
-
Docker提供平rootfs ,称为base image
-
然后再往可以叠加其他的镜像文件
-
统一文件系统技术能够将不同的层整合成一个文件系统,用户看来就只存在一个文件系统
-
一个镜像可以放在另一个镜像的上面,是上一个镜像的父镜像,最底部的是基础镜像.
docker中镜像小的原因是因为分层和复用,docker ,下载Docker镜像会吧分层下下来会变大
六镜像制作
-
容器转成镜像
docker commit 容器id 镜像名称:版本号 #原数据据卷里的文件不会被复制到新的镜像中 docker save -o 压缩文件名称 镜像名称:版本号 docker load -i 压缩文件名称 docker commit 143e66b1 itheima_tomcat:1.0 docker save -o itheima_tomcat.tar itheima_tomcat:1.0 docker load -i itheima_tomcat.tar 转换成的镜像包含除了原镜像目录挂载之外的改变.要想得到目录挂载的文件,再挂载一次
六 DockerFile概念
- Dockerfile是一个文本文件
- 包含了一条条的指令
- 每条指令构建一层 基于基础镜像,构建出一条新的镜像
- 给开发人员:为团队开发提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时构建的镜像或通过Dockerfile文件构建一个新的镜像开始工作
- 对于运维人员:再部署时,可以实现应用的无缝移植
https://hub.docker.com/