1.什么是Docker
docker是一个用来装应用的容器,就像杯子可以装水,书包可以放书,可以把hello word放在docker中,可以把tomcat jdk或者任何想得到的程序放在docker中
docker官方释义:容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
2.比较容器和虚拟机
容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件。容器更便携、更高效。
二、打包基础
1.镜像
镜像:Docker 镜像(Image)就是一个模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
2.容器
容器:Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
3.仓库
仓库:仓库(Repository)是集中存放镜像文件的场所,类似于Maven,github,Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
4.dockerfile
FROM centos:7
EXPOSE 8080
ADD apache-tomcat-8.5.81.tar.gz /usr/local/tomcat
ADD jre-8u202-linux-x64.tar.gz /usr/local/java
COPY mysql/ /usr/local/mysql
RUN rpm -ivh /usr/local/mysql/mysql-community-common-8.0.30-1.el7.x86_64.rpm --force --nodeps && \
rpm -ivh /usr/local/mysql/mysql-community-libs-8.0.30-1.el7.x86_64.rpm --force --nodeps && \
rpm -ivh /usr/local/mysql/mysql-community-client-8.0.30-1.el7.x86_64.rpm --force --nodeps && \
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone && \
rm -rf /usr/local/mysql
ENV LC_ALL zh_CN.UTF-8
ENV JAVA_HOME /usr/local/java/jre1.8.0_202
ENV PATH ${PATH}:${JAVA_HOME}/bin
CMD ["/usr/local/tomcat/apache-tomcat-8.5.81/bin/catalina.sh", "run"]
5.常用命令
docker run --privileged -it -d --name dzgw_1 -p 8098:8080 -e spring.profiles.localService="http://10.11.12.51:8098/sino-web"
docker_dzgw:1.8
run : 创建并启动容器,等价于docker create + docker start
--privileged : 容器获取宿主机root权限
-i : 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用
-t : 分配一个伪tty,一般与 -i 连用
-d : 在后台运行容器,并且打印容器id
--name : 设置容器名称
-p : 端口映射,[宿主机端口]:[容器端口]
-v : 将宿主机目录与容器进行挂载
-e : 设置环境变量
docker export : 容器导出为镜像 docker export [打包名] [容器id]
docker save : 镜像打包 docker save -o docker_dzgw.tar docker_dzgw:v1
docker load : 镜像导入 docker load -i /root/docker_dzgw.tar
docker ps : 查看正在运行的容器
docker ps -a : 查看历史运行的容器
docker start : 容器启动 docker start [容器id]
docker stop : 容器停止 docker stop [容器id]
docker restart : 容器重启 docker restart [容器id]
docker rm : 容器删除 docker rm [容器id] 注:删除容器前需停止容器
docker rmi : 镜像删除 docker rmi [镜像id] 注:删除镜像前必须删除容器
docker logs : 输出容器运行日志 docker logs -f -t --tail=100 [容器id]
-f : 实时日志
-t : 显示时间
--tail : 显示行数
docker exec : 开启容器交互终端 docker exec -it c829fd553915 /bin/bash
docker cp : 宿主机与容器之间文件复制 docker cp [容器id]:[容器内路径] [宿主机路径]
docker inpsect : 详细信息
docker build : 通过dockerfile创建镜像 docker build -t docker_dzgw:1.2 .
三、idea配置本地打包
1.插件安装docker
2.配置docker
vim /usr/lib/systemd/system/docker.service
tcp需要添加连接权限,ExecStart结尾处添加 -H tcp://0.0.0.0:2375
示例: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

3.启动成功
四、可视化工具Portainer
1.安装Portainer
docker pull portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer-test portainer/portainer