通过 uname -r 命令查看你当前的内核版本
uname -r
使用 root 权限登录 Centos。确保 yum 包更新到最新
yum -y update
卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
安装docker
sudo yum install -y docker-ce
启动并加入开机启动
systemctl start docker
systemctl enable docker
验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
配置阿里云镜像加速
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://***.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
输入:docker info (配置成功)
查看所有容器
docker ps -a
查看正在运行的容器
docker ps
查询所有镜像
docker images
查询容器日志
sudo docker logs f02631f986f3(容器ID)
停止容器
docker stop f02631f986f3(容器ID)
删除容器
docker rm 容器ID
删除镜像
docker rmi 镜像ID
制作java项目镜像
docker build -t demo(项目名):1.0 .
运行项目
docker run -d -p 9999(对外端口):9999(项目端口) demo(项目名):1.0
访问:虚拟机ip:9999(对外端口)/demo(项目名)/
Dockerfile文件样例
#创建一个文件夹将Dockerfile文件和项目jar包放在一起
#注:Dockerfile文件没有后缀.txt
# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER david "[email protected]"
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为****.jar
ADD demo.jar demo.jar
# 设置暴露的端口号
#EXPOSE 9999
# 运行jar包
ENTRYPOINT ["java","-jar","/demo.jar"]
pull时报错
Error response from daemon: Get "https://index.docker.io/v1/search?q=rabbitmq%3A3.9.12-management&n=25": dial tcp: lookup index.docker.io on 192.168.79.2:53: server misbehaving
解决方案:
如果加速镜像配置好,一般就是
vi /etc/resolv.conf
#把里面的内容清除,并改为:
nameserver 8.8.8.8
nameserver 8.8.8.4
#重启网络服务
systemctl restart network
机器网络配置出了问题,解决方案:
先拉取nginx镜像
docker pull nginx
返回到root目录下使用命令在源主机上新建文件夹
mkdir -p nginx/{conf,html,log}
启动临时nginx
docker run -d --name nginx_test nginx
拷贝需要挂载的文件
docker cp nginx_test:/etc/nginx/conf.d /root/nginx/conf
docker cp nginx_test:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
docker cp nginx_test:/usr/share/nginx/html/index.html /root/nginx/html/index.html
删除临时nginx
docker rm -f nginx_test
创建挂载的nginx
docker run -d -p 80:80 --name nginx \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/html/index.html:/usr/share/nginx/html/index.html \
-v /root/nginx/log:/var/log/nginx \
nginx
验证:
修改配置文件 cd到/root/nginx/conf/目录下ch
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
server {
listen 8080;
server_name localhost;
client_max_body_size 1024M;
#charset koi8-r;
#access_log logs/host.access.log main;
location /demo/ {
proxy_pass http://demo_9999/demo/;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 90;
proxy_send_timeout 90;
}
location ~ ^/nginx-status/ {
stub_status on; #Nginx ״̬ݠ࠘Ƥ׃
access_log off;
}
}
upstream demo_9999 {
#ip使用Docker的ip
server 172.17.0.1:9999 weight=10;
}
}
保存后重启Nginx
#关闭Nginx容器
docker stop nginx 或者 docker stop 容器ID
#删除Nginx容器
docker rm nginx
#启动
docker run -d -p 8080:8080 --name nginx -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html/index.html:/usr/share/nginx/html/index.html -v /root/nginx/log:/var/log/nginx nginx
访问验证