Docker学习 二

参考:

https://www.cnblogs.com/me115/p/5539047.html

https://docker_practice.gitee.io/image/pull.html

说明:

      Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用 systemd去启动后台服务,容器内没有后台服务的概念。像systemctl 命令,service命令等都是以后台守护进程形式启动,运行。Docker不是这样。

一. Docker 指令介绍

1. COPY

COPY package.json /usr/src/app/
COPY hom* /mydir/
COPY hom?.txt /mydir/

<目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR指令来指定)。目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。

2. ADD

同COPY功能类型,多了一种自动解压缩的功能。

ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /

3. ENV 设置环境变量

  • ENV <key> <value>
  • ENV <key1>=<value1> <key2>=<value2>... 
ENV VERSION=1.0 DEBUG=on \
    NAME="Happy Feet"

\ 换行     含有空格的值用双引号括起来

而且后面行可以用前面定义的环境变量 $VERSION 这样

4. EXPOSE 

EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。

5. WORKDIR

使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

6. HEALTHCHECK

在没有 HEALTHCHECK 指令前,Docker 引擎只可以通过容器内主进程是否退出来判断容器是否状态异常。很多情况下这没问题,但是如果程序进入死锁状态,或者死循环状态,应用进程并不退出,但是该容器已经无法提供服务了。在 1.12 以前,Docker 不会检测到容器的这种状态,从而不会重新调度,导致可能会有部分容器已经无法提供服务了却还在接受用户请求。

而自 1.12 之后,Docker 提供了 HEALTHCHECK 指令,通过该指令指定一行命令,用这行命令来判断容器主进程的服务状态是否还正常,从而比较真实的反应容器实际状态。

FROM nginx
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
HEALTHCHECK --interval=5s --timeout=3s \
  CMD curl -fs http://localhost/ || exit 1

二、常用指令

Docker启动,关闭 命令

启动        systemctl start docker
守护进程重启   sudo systemctl daemon-reload
重启docker服务   systemctl restart  docker
重启docker服务  sudo service docker restart
关闭docker   service docker stop   
关闭docker  systemctl stop docker

镜像相关命令

在仓库中查找某镜像:docker search 镜像名
拉取镜像:docker pull 镜像名
启动某个镜像:docker run -p 宿主端口:映射端口 -d image_name:tag 自定义镜像名
删除镜像: docker rmi 镜像id
docker image rm 镜像id/镜像名称              
docker image rm $(docker image ls -q redis)  -- 删除所有仓库名为 redis 的镜像
删除容器: docker rm 容器id

创建一个数据卷

docker volume create my-vol
查看所有的 数据卷
docker volume ls

清理无用的镜像,容器或者数据卷

$ docker images/container/volume prune
 

查看日志

docker logs -f 容器ID/容器名
docker container logs [container ID or NAMES]
docker system df 查看镜像、容器、数据卷所占用的空间。
由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 <none> 的镜像。这类无标签镜像也
被称为 虚悬镜像(dangling image) 

docker部署springboot项目

1.先把文件和dockfile文件拷贝过去
2.docker build -t 项目名(自定义镜像名) .
3.docker run -d -p 9000:9000 项目名 
-d 后台运行
-p 9000:9000 将docker容器的9000端口映射到服务器上的9000端口

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值