为什么要使用docker
docker是一种容器化部署环境,在我们平常部署应用时,通常会考虑到线上环境是否有冲突等问题,这些所有的应用都处于一个环境中,而docker容器则是独立的一个环境。它完全隔离了应用部署之间环境冲突问题。我们需要考虑在独立的环境中,运行自己的项目是否存在存储容量过大,文件存储是否安全等问题。下面我们画张图来充分理解docker存储:
接下来我们需要看MySQL,redis,gitlab这些应用里面的文件是特别重要的,我们使用docker启动时,怎么去进行应用备份存储呢?接下来我们开始使用docker吧:
1.安装docker环境:
1:卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2:安装yum-utils
sudo yum install -y yum-utils
3:添加yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4:更新索引
sudo yum makecache fast
5:安装docker-ce
sudo yum install -y docker-ce
6:启动docker
systemctl start docker
7:查看docker版本
docker version
8:拉取docker镜像:docker run hello-world
9:查看镜像:docker images
10:启动镜像:docker run hello-word
11:查看容器:docker ps -a
差不多整个docker环境安装就完毕了,更多命令大家可以自行百度了。
什么是镜像,什么是容器,怎么做数据实时备份,端口访问
镜像相当于一个系统环境,里面有redis环境,mysql环境,gitlab的环境等等,但是它们都是纯净的没用任何数据的。
容器基于镜像进行运行的,里面是redis环境运行,然后生成有个容器,容器里面主要是运行这个redis环境,并且存储redis所生成的数据,在存储的时候,它只是存储在容器里面,如果运维人员失误操作导致容器被删除,那里面的数据直接删除了是特别灾难性的,同时删除容器只需要一个命令,将数据只存储在容器中是特别危险的,那么在我们运行容器的时候命令应该这样敲:
docker run -d -p 8089:80 -v /etc/data/error.log:/etc:data/error.log 554d20f20365
docker run -d -p linux外部端口:容器内部端口 -v /linux目录:/docker容器内部目录 镜像id
第一段命令
-p linux外部端口:容器内部端口,这个是指外部端口暴露,因为docker容器内部的端口,你是不好访问的,这个时候我们使用linux端口去映射到docker容器内部端口即可访问容器服务。
第二段命令
-v /linux目录:/docker容器内部目录:这段命令是指docker挂载:进行docker内部目录与linux目录进行实时存储,当docker容器被误删时,使用上面容器启动命令,可以将linux目录备份的容器数据进行恢复。这样我们docker环境就更加安全了。
如何构建我们自己的docker镜像
在docker镜像中,我们可以通过docker pull mysql形式去拉取远程的镜像,同时我们也会有自己的镜像,比如jar文件。这个时候我们就需要使用dockerfile进行镜像构建了:
FROM java:8
COPY hello-boot-1.0-SNAPSHOT.jar /hello-boot.jar
CMD ["--service.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/hello-boot.jar"]
form使用jdk8
copy将linux中的jar,复制到docker镜像中
cmd配置端口
expose 暴露8080端口
ENTRYPOINT在启动容器时执行 java jar /hello-boot.jar命令
下面开始构建:
如何通过docker命令启动该jar包即可:
docker run -d -p 8089:8080 ad417eada2f3
同时在启动容器时可以能会出现各种容器启动失败的问题,大家可以进入容器内部进行调试:
进入容器:
docker exec -it 容器id /bin/bash
查看容器日志:
docker logs -f -t --tail=10 容器id