Docker 是一个开源的商业产品,有两个版本,
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用
演示环境:VMware下的centos7.5系统,centos使用的是root账号
一、安装docker
Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
1.通过 uname -r 命令查看你当前的内核版本
uname -r
2.使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3.卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6.可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7.安装docker
sudo yum install -y docker-ce
8.启动并加入开机启动
systemctl start docker
systemctl enable docker
9.验证安装是否成功,有client和service两部分表示docker安装启动都成功了
docker version
二、docker阿里云镜像加速
点击跳转阿里云镜像加速地址
https://cr.console.aliyun.com/cn-hangzhou/mirrors
需要登录自己的阿里云账户,然后根据阿里云的操作文档设置即可
三、docker下载nginx镜像与tomcat镜像
这里统统使用pull方式获取镜像
1.查找 Docker Hub 上的 nginx 镜像
docker search nginx
2.我们拉去官方的镜像
docker pull nginx
3.拉去官方tomcat的镜像
docker pull tomcat
4.分别等待下载完成后我们可以在本地镜像列表里面看到
docker images
docker run -p 8080:8080 --name tomcat0 -d tomcat
这个run命令语法如下,看需要配置,我这里只需要配置端口,名称,名称后面会用的到。
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
2.命令查看容器是否运行
查看正在运行的容器
docker ps
查看全部的容器
docker ps -a
然后打开浏览器,输入http://ip:8080验证是否能正常访问
如下图:
五、启动并配置nginx
1、启动命令
docker run -p 80:80 --name mynginx --link tomcat0:t0 -d nginx
这里使用的是docker run命令,命令格式上面已经展示了,这里多配置了 --link属性,就是要与tomcat关联。
2.我们可以使用命令查看正在运行的容器
docker ps
查看全部的容器
docker ps -a
user nginx;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream tomcat_server {
server t0:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat_server;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
其中t0是我们刚才创建容器指定的
4.复制配置文件进入nginx容器内部替换到内部的
docker cp nginx.conf mynginx:/etc/nginx
5.进入容器内部
docker exec -it mynginx /bin/bash
docker exec 命令说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
6.找到容器内/etc/init.d下的nginx
校验nginx配置文件是否有错误
nginx -t
配置文件修改重装命令
nginx -s reload
重启nginx服务
service nginx restart
停止或关闭nginx
nginx -s quit
在容器内部验证导入的配置文件有没有问题,有问题就修改,没有问题就重启容器
7.重启容器或启动容器
docker restart mynginx
docker start mynginx
8.查看容器是否启动成功
docker ps -a