目录
1. Docker简介
2. 环境
3. 下载安装Docker
4. 启动Docker
5. 验证安装是否成功
6. 常用docker命令
7. 镜像演示
8. 构建镜像并发布自己的项目(演示)
1. Docker简介
Docker安装所需要CentOS7以上才可以安装
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker包括三个基本概念:
- 仓库(Repository):就说运行java web项目,首先需要有运行环境,而这个容器就是我们的运行环境
- 镜像(Image):我把镜像理解为我们的操作系统,这个操作系统(镜像)运行起来后才会有我们程序运行的环境(容器)
- 容器(Container):这个仓库也就是我们下载操作系统(镜像)的地方,里面有各式各样的操作系统(镜像),redis,tomcat的镜像等
注:Docker Hub是Docker公司提供的一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
2. 环境
64位CentOS Linux release 7.2.1511 (Core)
3. 下载安装Docker
1) 把yum包更新到最新(网上说yum包更新到最新,提升对docker的下载速度)
[root@localhost ~]# yum update
2) 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
3) 设置yum源
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4) 查看所有仓库中所有docker版本,并选择特定版本安装
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
5) 安装Docker,命令:yum install docker-ce-版本号,我选的是18.03.1.ce,如下
[root@localhost ~]# yum install docker-ce-18.03.1.ce
4. 启动Docker
命令:systemctl start docker,然后加入开机启动,如下:
# sudo systemctl start docker
# sudo systemctl enable docker
5. 验证安装是否成功
有client和service两部分表示docker安装启动都成功了
# docker version
6. 常用docker命令
docker pull 镜像地址
docker ps
docker ps -a
docker start/stop id/name
docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -ti id /bin/bash 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
如果报错,sudo docker exec -it 容器名 /bin/sh ,即可成功进入容器
docker images
docker rm id/name
docker rmi id/name
docker run --name test -ti ubuntu /bin/bash
docker build -t soar/centos:7.1
docker run -d -p 2222:22 --name test soar/centos:7.1
其中:-d:镜像在后台运行 -p指定本机与容器内部交互的端口 -P是随机开放一个端口与容器内部ID映射
7. 镜像演示
1) 拉取镜像
# docker pull registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
2) 查看所有镜像
# docker images
3) 运行镜像
# docker run -d -p 80:8080 registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
4) 查看tomcat是否成功启动
浏览器查看: 172.20.32.239
5) 查看正在运行的容器
6) 进入到容器内部
docker exec -it 容器ID bash (下面是我的容器ID 每个容器ID是不一样的 使用docker ps 查看一下)
# docker exec -it 34db8b314395 bash
退出容器:输入exit
7) 文件传输
如果获取容器内tomcat的日志文件,怎么做呢?
容器 -----> 本机
获取镜像ID全称
# docker inspect 34db8b314395 | grep Id
docker cp ID全称:容器文件路径 本地路径
docker cp 34db8b3143959526d59b8792de2018a7bc05c0a409d2b322076359cf67a751a8:/usr/tomcat/logs/catalina.out /usr/local/Docker/catalina.out
本机 -----> 容器
docker cp 本地文件路径 ID全称:容器路径
docker cp /usr/local/Docker/catalina.out 34db8b3143959526d59b8792de2018a7bc05c0a409d2b322076359cf67a751a8:/usr/tomcat/logs/catalina.out
8) 停止容器
docker stop 容器ID
# docker stop 34db8b314395
此时Tomcat网站已经无法访问。
9) 删除容器
docker rm 容器id
注意: 镜像启动后会产生容器,如果不先删除容器,镜像是无法删除的
10) 删除镜像
docker rmi 镜像id
8. 构建镜像并发布自己的项目(演示)
1) 在/usr/local下创建Docker文件夹(随便的一个空的文件夹)
# cd /usr/local
# mkdir Docker
# cd Docker
2) 上传准备好的war包到/usr/local/Docker目录下
3) 创建Dockerfile文件
# touch Dockerfile
4) 编辑Dockerfile文件
# vim Dockerfile
添加如下内容
#该镜像的父镜像为tomcat镜像,这样我们就有了tomcat的环境
from registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
#复制当前文件夹下的war包到镜像中tomcat的webapps目录
COPY TestDocker.war /usr/tomcat/webapps
#去除容器内部中文乱码问题
ENV LANG C.UTF-8
5) 构建镜像(还是在Docker文件夹 也就是/usr/local/Docker目录)
docker build -t 镜像名称(镜像名称必须为小写):镜像版本 .
注意:后面的点要加上, 这个代表Dockerfile的所在目录
# docker build -t docker-test:latest .
使用docker images 查看一下构建的镜像
# docker images
运行镜像:
# docker run -d -p 80:8080 docker-test
浏览器输入查看: http://172.20.32.239/TestDocker/Docker/hello
应用场景:
最近总是频繁的在新服务器发布项目, 每次发布都需要布置项目所需要的环境特别麻烦,而且还有一台机器需要两个环境的状况
例如:发布java web 项目而言,需要下载安装jdk 和tomcat ,安装Docker后只需要几个命令就轻松搞定,还有两个环境的问题,我们有一台服务器需要发布两个java web项目 而有一个项目必须使用jdk1.7 而另一个必须用jdk1.8,这个使用Docker都可以轻松解决。
针对以上提到的,每个项目都需要有自己的运行环境,我们可以为每个项目都配置一个属于自己的镜像。
编写不易,如果有帮助到您,喜欢点赞!