1、安装Docker
使用xshell连接到自己的服务器。
前提:检查内核环境:得在3.10及以上。centos版本在7及以上。
[root@iZ8vb409m8717t5boglt61Z ~]# uname -r
3.10.0-862.14.4.el7.x86_64
[root@iZ8vb409m8717t5boglt61Z ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
正式安装
1、卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、需要的安装包
sudo yum install -y yum-utils
3、设置镜像的仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的,很慢。
#安装国内的阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker
#更新软件包索引
yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
5、启动docker
sudo systemctl start docker
6、使用docker version查看是否安装成功
docker version
7、测试hello-world
docker run hello-world
8、查看镜像
docker images
[root@iZ8vb409m8717t5boglt61Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
拓展:卸载docker
#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#删除资源 /var/lib/docker是docker的默认工作路径
sudo rm -rf /var/lib/docker
2、配置阿里云镜像加速器
#1
sudo mkdir -p /etc/docker
#2
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7j3fyo2t.mirror.aliyuncs.com"]
}
EOF
#3
sudo systemctl daemon-reload
#4
sudo systemctl restart docker
3、服务器配置
主要是三个方面的配置。
- 防火墙
- 添加端口
- 安全组
1、开启防火墙
#查看防火墙状态
firewall-cmd --state
#开启防火墙
systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
not running
[root@iZ8vb409m8717t5boglt61Z ~]# systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
running
2、添加对外的端口
#添加80端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
#添加8080端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
#添加3306端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
#添加端口之后,要重新加载防火墙
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --reload
success
#查看开放的端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --list-ports
6379/tcp 80/tcp 8080/tcp 3306/tcp
3、安全组配置
4、安装mysql
去docker hub搜索mysql。文档上有详细的说明。
#1、搜索镜像
docker search mysql
#2、下载,默认是最新版
#也可以指定版本号 docker pull mysql:版本号
docker pull mysql
#3、查看下载的镜像
docker images
#4、创建mysql容器置并设置root的密码为123456
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456
#5、查看容器
docker ps
#6、进入容器docker exec -it 容器号 /bin/bash
docker exec -it bab0353e153c /bin/bash
[root@iZ8vb409m8717t5boglt61Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bab0353e153c mysql:latest "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mymysql
[root@iZ8vb409m8717t5boglt61Z ~]# docker exec -it bab0353e153c /bin/sh
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version(); #查看mysql的版本号
+-----------+
| version() |
+-----------+
| 8.0.20 |
+-----------+
1 row in set (0.00 sec)
使用工具连接mysql
如果连接不上mysql,可以参考博客。
接下来就是执行sql文件。
5、打包SpringBoot项目
1、将你数据库url中localhost改为你服务器的ip,并修改docker上安装的mysql密码。
接下来打包,右击右侧的maven,如下图:
再三检查,不要写错。
2、等待build 成功。如下图:
成功之后,会发现target里面多了如下jar。
6、编写Dockerfile文件
#在home下创建docker文件夹
mkdir /home/docker
你可以在idea项目中写,也可以在服务器上写,都可以。
Dockerfile的文件内容如下:
#创建Dockerfile文件并打开
vim Dockerfile
#添加的内容如下:
FROM java:8
ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/blog.jar"]
解释:
#注意,docker命令全部大写,这是规定。
#From 关键字表示,jar包依赖的环境。java:8 相当于jdk1.8
FROM java:8
#ADD命令
#demo-blog-0.0.1-SNAPSHOT.jar:这是你上传jar包的名称。
#/blog.jar:这是自定义的名称。但是注意要有之前的/
ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
#EXPOSE 项目暴露的端口号
EXPOSE 8080
#/blog.jar此处的名称要和ADD命令后面的一样。
ENTRYPOINT ["java","-jar","/blog.jar"]
传输到服务器上。
7、运行
进入到/home/docker下,可以看到上传的文件,一个jar,一个Dockerfile。
[root@iZ8vb409m8717t5boglt61Z ~]# cd /home/docker
[root@iZ8vb409m8717t5boglt61Z docker]# ls
demo-blog-0.0.1-SNAPSHOT.jar DockerFile
执行
[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .
#说明:
# blog 代表要打包成的镜像名称。按照自己实际情况写。
#:1.0 代表版本号,可以不写则默认为latest
# . 代表为当前目录。这就是为什么一直在步骤一文件夹中进行操作,并且Dockerfile在此文件夹中的原因。
#若之前Dockerfile不在步骤一的文件夹中 则需要指定到对应的地址。
如下就执行成功了。
[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .
Sending build context to Docker daemon 33.24MB
Step 1/4 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/4 : ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
---> 4e9a3ac9e03e
Step 3/4 : EXPOSE 8080
---> Running in 0897a57a4d85
Removing intermediate container 0897a57a4d85
---> 67dceec547a7
Step 4/4 : ENTRYPOINT ["java","-jar","/blog.jar"]
---> Running in ed80fc3d7499
Removing intermediate container ed80fc3d7499
---> 19e4ce0e729b
Successfully built 19e4ce0e729b
Successfully tagged blog:1.0
查看镜像:
[root@iZ8vb409m8717t5boglt61Z docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
blog 1.0 19e4ce0e729b 3 minutes ago 676MB
mysql latest 30f937e841c8 2 days ago 541MB
hello-world latest bf756fb1ae65 4 months ago 13.3kB
java 8 d23bdf5b1b1b 3 years ago 643MB
运行镜像
#这里我开放的是80端口,所以要通过80去映射项目中的8080
[root@iZ8vb409m8717t5boglt61Z docker]# docker run --name blog -d -p 80:8080 blog:1.0
最后就可以用你的公网ip访问了。
http://自己服务器的公网ip/:80
如果在运行过程中,有错误啥的,可以用下面这个命令查看一下日志。
docker logs 容器id
用自己的服务器地址不安全,后续可以申请个域名,绑定域名,用域名去访问。
下面是我的个人博客系统。放几张图吧。
有需要源码的可以去这里取。还有很多不足之处。后面再多多学习。
留言板界面。
分类界面。
标签界面。
归档界面。