docker是一个跨平台,可迁移的应用虚拟化,容器化服务平台
Docker口号1:Build,Ship and Run (构建,发送和运行)
Docker口号2: Build once,Run anywhere (构建一次,到处能用)
docker仓库
官方有dockeHub仓库,
也可以使用阿里、网易、华为的docker公共仓库,
也可以自己搭建一个Habor仓库(私有docke仓库,这个东西类似于你们公司的maven私服)
docker镜像
包含docker官方提供的,和第三方提供的app镜像,以及你自己build构建的镜像;
docker镜像拉取后,会占用宿主机磁盘空间,所以不用的镜像要及时清理掉.
docker容器
根据已拉取的/已存在的docker镜像创建的app容器实例;
容器的运行,相当于vmware虚拟机的运行;
容器有自己的ip,在宿主机可以访问到;
容器内的app的port端口,可以通过配置映射到宿主机port;
docker容器第一次启动后,即开始占用宿主机磁盘空间,停止容器后,依然会占用宿主机磁盘空间,
所以确定永久不用的容器要及时清理掉.
docker命令
docker默认没有提供可视化控制界面,而是提供了很多docker命令来操作docker;
(linux平台也可以使用第三方开发的docker可视化管理界面,如Potainer,
win10+平台可以直接安装桌面版s本的docker-desktop)
查看所有镜像
docker images
构建一个镜像(不同语言/不同项目 构建镜像的方式类似,这里以xxx.jar制作docker镜像为例)
核心命令(最后的.不能忘记)
docker build -t 镜像名:版本号 .
1.新建一个目录,如 /usr/local/docker/app
2.在这个目录里放入提前准备的xxx.jar和Dockerfile文件
3.执行命令docker build -t app:1.0.1 .
Dockerfile文件的编写
常用内容主要有:
FROM openjdk:8-jre (基础镜像配置)
MAINTAINER thinkpet (镜像制作人)
ADD licc.jar app.jar (镜像内部动作,这里意思是添加一个licc.jar 并命名为app.jar)
EXPOSE 8913 (配置镜像需要暴露的port端口)
ENTRYPOINT ["java","-jar","app.jar"] (镜像内部应用的启动命令)
这里讲的Dockerfile文件的编写较为基础,更复杂的写法请自行百度
最后构建完成后,可以在docker镜像列表里查看到刚刚构建的镜像信息(tag,id ,size)
另存现有的镜像为tar文件
docker save 镜像id > /xxx/xxx.tar
按id删除现有的某个镜像
docker image rm de940896316d
安装(加载) 离线下载的镜像
docker load < /xxx/xxxx.tar
docker镜像打标记
docker tag 镜像id 名称:版本号
根据镜像创建并启动一个容器实例
格式 docker run 可选运行参数 镜像名:镜像版本号
(-d 后台运行)
(--restart docker重启后自启动容器)
(--name 定义容器实例名)
(-p 配置端口映射 宿主机port:容器内应用的port)
docker run -d --restart=always --name demo -p 8913:8913 app:1.0.3
创建1个新容器但不启动它
docker create 可选参数 镜像名:镜像版本号
docker create --restart=always --name demo3 -p 8910:8913 app:1.0.3
查看目前所有的docker容器
docker ps -a
查看正在运行中的docker容器
docker ps
实时查看某个docker容器的运行日志
docker logs -f 容器id
停止某个正在运行的容器
docker stop 容器id
恢复某个停止的容器
docker start 容器id
删除不需要的容器(删除前必须先停止这个容器)
docker rm 容器id
进入到某个容器内部的bash命令行
docker exec -it 容器id /bin/bash
显示docker服务器信息,镜像数,容器数
docker info
查看docker服务器的版本号
docker -v
查看docker服务器的详细版本信息
docker version