Docker基础

一、虚拟机和容器的区别

    虚拟机:可以在一种操作系统里面运行另一种操作系统,一套虚拟的操作系统,占用资源多、启动慢。

    容器:对进程进行隔离,对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

二、docker容器

  概念:Docker 是一个容器工具,提供虚拟环境,属于 Linux 容器的一种封装,提供简单易用的容器使用接口。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

  用途:提供一次性的环境;提供弹性的云服务;组建微服务架构。

三、docker安装

   查看安装版本:

$ docker version     或者 $ docker info
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组
$ sudo usermod -aG docker $USER
Docker 是服务器--客户端(C/S)架构。命令行运行docker命令的时候,需要本机有 Docker 服务,启动服务:
# service 命令的用法
$ sudo service docker start   
 或者
# systemctl 命令的用法
$ sudo systemctl start docker
四、image镜像文件
Docker 把应用程序及其依赖,打包在 image 文件(二进制文件)里面。只有通过这个文件,才能生成 Docker 容器。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
五、容器container文件
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。
六、仓库repository
用来保存镜像
七、Dockerfile

  如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。文件放在项目根目录。

  Dockerfile 文件示例:

# 基础镜像
FROM openjdk:8-jdk-alpine
# 作者信息
MAINTAINER "zzz"
# 添加一个存储空间
VOLUME /home/tmp
# 暴露7088端口
EXPOSE 7001
# 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=xyz-data-hhh.jar
# 往容器中添加jar包
ADD ${JAR_FILE} xyz-data-hhh.jar
# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/home/urandom","-Duser.timezone=GMT+08", "-jar","/xyz-data-hhh.jar"]
八、运行范例

根据dockerfile先打镜像,然后运行
docker build -t xyz-data-hhh -f Dockerfile-xyz-hhh . && docker run -d -v /etc/localtime:/etc/localtime --network=host -v /usr/local/bestway/logs/xyz-data-hhh:/logs/xyz-data-hhh -v /usr/lib/libtaos.so:/usr/lib/libtaos.so xyz-data-hhh -e --spring.cloud.nacos.discovery.server-addr=192.21.0.255:8848 --log-opt max-size=1024m

 九、常用指令

     docker  ps  -a    #查看所有的容器

     docker  build  -t  xyz  -f  Dockerfile-xyz .  #以指定文件构建镜像,-t指定镜像名字,-f指定Dockerfile文件

     docker run -d  #后台运行容器,并返回容器id

     docker stop 容器ID     #停止容器

     docker rm -f 容器ID  #删除容器

 
十、docker logs --tail  300 -f  demo  查看启动日志
在构建容器时即docker run的时候,通过-v将容器中的文件夹挂载到宿主机中,就可以在宿主机中查看到服务输出的日志,前提是知道日志文件的输出路径。上面构建容器的时候有示例,
例如: -v /server/logs/demo:/mnt/logs/demo 就是将容器中的/mnt/logs/demo目录挂载到宿主机的/server/logs/demo目录,里面的日志文件就会映射到宿主机







posted @ 2021-06-09 18:17  zhangtianhong511  阅读(39)  评论(0)    收藏  举报