Linux 安装 Docker 并启动一个web项目

一、docker概念

Docker 是一个开源的应用容器引擎
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到 Linux 机器上。
容器是完全使用沙箱机制,相互隔离容器性能开销极低。

二、安装docker

本文基于CentOS7 安装Docker。官网:https://www.docker.com

2.1 检查安装的平台

Docker要求CentOS系统的内核版本高于3.10

uname -r #通过 uname -r 命令查看你当前的内核版本

2.2 yum包更新到最新

sudo yum update

2.3 建立仓库

## 安装Docker所需要的一些工具包
sudo yum install -y yum-utils
 
## 建立Docker仓库 (映射仓库地址)
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

2.4 安装Docker引擎

sudo yum install docker-ce docker-ce-cli containerd.io

2.5 启动Docker

sudo systemctl start docker

2.6 测试 Docker 是否安装正常

sudo docker run hello-world

在这里插入图片描述

2.7 设置仓库加速地址

默认情况下,从docker hub(https://hub.docker.com/)上下载docker镜像太慢。一般都会配置镜像加速器:
中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
vi /etc/docker/daemon.json

{
 "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

2.8 启动Redis容器

docker run -di --name=my_redis1 -p 63779:6379 redis

在这里插入图片描述

三、 Dockerfile

可以通过Dockerfile制作镜像,在linux中启动变成容器运行
比如:将springboot生成的jar包通过Dockerfile制作成镜像 在inux中启动运行
​ springboot:jar包—》Dockerfile—》镜像—》容器(springboot项目的运行环境)

3.1 Docker 镜像原理

在这里插入图片描述

3.2 Dockerfile概念及作用

在这里插入图片描述

3.3 使用dockerfile制作一个镜像,并启动

我们将自己打包好的jar上传到服务器(demo-0.0.1-SNAPSHOT.jar),制作dockerfile
ps: demo-0.0.1-SNAPSHOT.jar是spring boot编写的 端口为9999的web项目
在这里插入图片描述

Dockerfile 内容:

#1.定义父镜像(定义当前工程依赖的环境):
FROM java:8
#2.定义作者信息(可以省略不写):
MAINTAINER  jsj
#3.将jar包添加到容器(将jar包存入镜像中): 
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
#4.指定这个容器对外暴露的端口号(就是我们这个应用的端口)
EXPOSE 9999
#5.定义容器启动执行的命令: 当通过此镜像启动容器的时候,执行的命令
ENTRYPOINT ["java","-jar","/demo.jar"]

通过dockerfile构建镜像

docker build -t my_demo_image:v1.1 -f ./my_demo_dockerfile .

my_demo_image:v1.1为镜像名,-f :指定要使用的Dockerfile路径,“.”表示当前目录
在这里插入图片描述

#创建启动容器
docker run -id --name=自定义名称 -p 端口  镜像名称

启动容器

#创建启动容器
docker run -id --name=自定义名称 -p 端口  镜像名称

例如:docker run -id -it --name=my_docker_v1.1 -p 9994:9999 my_demo_image:v1.1
在这里插入图片描述
最后,我们查看一下是否启动成功:

docker ps

在这里插入图片描述
启动成功!

注意:

按理说现在应该已经可以在我们的宿主机访问了,我们使用curl工具来测试一下:
在这里插入图片描述

我这里返回的是“/demo” 这个接口返回的数据,这个返回没有问题的(因为我修改过了)

我们执行curl 127.0.0.1:9994/demo 可能会遇到这个错误:
(56) Recv failure: Connection reset by peer

请求不通,我检查了容器内部项目是否启动、宿主机端口是否暴露、防火墙是否关闭等各种问题,翻了很多帖子,找到了解决方案,需要重建docker0网桥,下面把方案贴出来:

# 停止docker
systemctl stop docker
# 安装bridge-utils
yum install -y bridge-utils 
# 关闭docker0网桥
ip link set dev docker0 down
# 删除docker0网桥
brctl delbr docker0
# 添加docker0网桥
brctl addbr docker0
# 添加网桥信息
ip addr add 172.16.10.1/24 dev docker0
# 启动docker0网桥
ip link set dev docker0 up
# 查看网桥是否正常
ip addr
# 启动docker
systemctl restart docker

重建docker0网桥再将容器重启(“docker start 容器名称”),就可以访问我们的项目了。

四、 Docker 命令

4.1 docker相关的命令

#重启
systemctl restart docker
#查看docker信息
docker info

#启动docker服务:
systemctl start docker 
#停止docker服务:
systemctl stop docker 
#重启docker服务:
systemctl restart docker
#查看docker服务状态:
systemctl status docker 
#设置开机启动docker服务:
systemctl enable docker

4.2 镜像相关的命令

#1 查看镜像: 查看本地所有的镜像
docker images

#2 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称

#3 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号
#如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
docker pull 镜像名称:版本号  /  docker pull 镜像名称(默认的版本号是latest)
		docker pull mysql:5.7  /  docker pull mysql
		
#4 删除镜像: 删除本地镜像(删除指定本地镜像)
docker rmi 镜像id

4.3 容器相关命令

#查看容器
docker ps # 查看正在运行的容器
docker ps -a #查看所有容器,包括未运行的容器

#创建并启动容器  
docker run -id --name=自定义容器名称 -p 映射端口:镜像端口 镜像名称 
run:启动
-id/-di:  创建容器
--name:  为创建的容器起别名
-p: 端口映射


#停止容器
docker stop 容器名称
#启动容器
docker start 容器名称
#删除容器
docker rm 容器名称
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值