1.Docker是什么?
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、OpenStack 集群和其他的基础应用平台。
2.Docker解决了哪些问题?
可以解决在本地运行没问题,但移植到服务器上就出问题的情况;可以解决在服务器上一个应用占用大量内存和cpu资源时或宕机,不影响其他部署在该服务器上的应用,每个应用都相对独立;可以解决大量部署时复杂的操作,只需要几条命令即可完成应用的部署,可以随时随地部署到多个服务器上.
3.Docker的三个核心部分:镜像(build) 仓库(ship) 容器(run)
4.Docker的安装,参见官网,写的不要太详细https://docs.docker.com/install/linux/docker-ce/centos/#prerequisites
5.Docker常用的几个命令:
① docker pull [OPTIONS] NAME[:TAG] 用于从docker远程仓库拉取镜像,OPTIONS为可选的参数,有很多,具体可以百度,NAME为要拉取的镜像的名称,比如NGINX,TAG为可选的参数,可以指定版本号,如果不添默认为最新版,latest.
②docker images [OPTIONS] [REPOSITORY[:TAG]] 用来查看本机已经有哪些镜像
③docker run [OPTIONS] IMAGE [:TAG] [COMMAND] [ARG...] IMAGE表示镜像的名字 command表示执行什么命令 ARG为该命令依赖的参数
docker 流程
6.docker的远程仓库地址:
国外官网:https://hub.docker.com/
国内网易蜂巢镜像:https://c.163.com 直接访问不了的,需要先在https://www.163yun.com/注册登录并创建仓库后才可以访问.
7.在docker中运行NGINX:
docker pull hub.c.163.com/library/nginx:latest 先从远程仓库拉下来 然后通过docker images 查看是否已经拉下来了 如果拉下来了
可以运行它,有两种方式,一种前台运行,一种后台运行,推荐第二种方式. 前台运行:docker run hub.c.163.com/library/nginx
后台运行 docker run -d hub.c.163.com/library/nginx 运行是否成功可以通过docker ps查看.忘了命令可以用docker --help查看
docker ps可以查看docker运行的进程 docker stop +id可以退出docker中运行的对应进程.
8.制作自己的镜像:
以我们写的微信小程序为例
第一步:将小程序打成jar包通过SecureCRT ALT+P上传至root目录下
第二步:创建Dockerfile并编写里面内容. vim Dockerfile
FROM java:8
VOLUME /tmp
ADD ordering-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
编写完成后保存.
java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:
VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
ADD spring-boot-docker-0.1.0.jar app.jar 将应用jar包复制到/app.jar
ENTRYPOINT表示容器运行后默认执行的命令
第三步:在当前目录下构建镜像 docker build -t springboot-app . 其中 -t参数是为了给构建的镜像取名,后面跟的springboot-app为构建的镜像名称,注意 .不能少,代表当前目录,否则系统找不到刚刚创建的Dockerfile,从而无法完成构建.
构建完成后通过 docker ps命令查看docker容器中是否已经存在springboot-app
第四步:运行docker docker run -d -p 8888:8888 springboot-app (关于端口,前面的8888是我项目里yml中配置的端口号,后面的是指定映射到docker的哪个端口,可以随意指定,只要不与其他端口冲突即可).
第五步:打开浏览器 输入linux的Ip:8888进行测试. 如果可以访问到数据,证明已成功完成docker部署.
第六步:搭建好docker仓库 ,https://hub.docker.com/,将docker容器中的该项目上传到远程仓库中.
第七步:docker login 输入账号密码登录,docker push image(需要上传的容器项目名) 回车后 项目成功上传至docker仓库.
※重大的坑: 构建镜像的项目名称必须与仓库的项目名称一致,否则push不成功.
第八步:在其它Linux系统上部署该项目时,只需要安装docker,如果已经安装了docker,则只需要把项目拉下来运行既可.
第九步:拉项目 docker pull +仓库地址
第十步:运行拉下来的项目 docker run -d image(容器中的项目名) 运行后可以在docker ps 中查看运行状况
第十一步:在浏览器中输入linux的ip+端口号访问项目 有数据即部署成功.
如果想要删除对应的本地镜像,可用用docker rmi +id进行删除.