专栏首页龙首琴剑庐Docker使用命令

Docker使用命令

常用命令

# 从远程仓库抽取镜像 
docker pull 镜像名<:tags>

# 查看本地镜像
docker images

# 创建容器,启动应用
# 使用 -d 后台运行
# 与宿主机端口映射 ,使用选项 -p 宿主机端口:容器端口 如 : docker run -p 8000:8080 tomcat
docker run <-d> 镜像名<:tags> 

# 查看正在运行中的镜像
docker ps 

# 删除容器
docker rm <-f> 容器id 

# 删除镜像
docker rmi <-f> 镜像名:<tags>

在容器中执行命令

# exec 在对应容器中执行命令
# -it 采用交互方式执行命令
docker exec [-it] 容器id 命令
# 实例:docker exec -it 0738ed2fe68b /bin/bash
# 查看容器的IP等环境信息
docker inspect 容器ID

Dockerfile 镜像描述文件

Dockerfile是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile中的指令按步自动生成镜像

docker build -t 机构/镜像名<:tags> Dockerfile目录 

Dockerfile 基础命令

  • FROM - 基于基准镜像
#制作基准镜像(基于centos:lastest)
FROM centos 
#不依赖任何基准镜像base image
FROM scratch 
# 基于 采用openjdk8 + tomcat 9.0.22 的镜像
FROM tomcat: 9.0.22-jdk8-openjdk

尽量使用官方提供的Base Image

  • LABEL & MAINTAINER - 说明信息
MAINTAINER SvenAugustus
LABEL version = "1.0"
LABEL description = "XXX"
  • WORKDIR - 设置工作目录
WORKDIR /usr/local
#自动创建
WORKDIR /usr/local/newdir 

尽量使用绝对路径

  • ADD & COPY - 复制文件
#复制到/root
ADD hello /root
#添加根目录并解压
ADD test.tar.gz / 

ADD 除了复制,还具备添加远程文件功能

  • ENV- 设置环境常量
ENV JAVA_HOME /usr/local/openjdk8
RUN ${JAVA_HOME}/bin/java -jar test.jar

尽量使用环境常量,可提高程序维护性

  • EXPOSE - 暴露容器端口
# 将容器内部端口暴露给物理机
EXPOSE 8080
docker run -p 8000:8080 tomcat

Dockerfile执行指令

  • RUN & CMD & ENTRYPOINT
    • RUN : 在Build构建时执行命令
    • ENTRYPOINT : 容器启动时执行的命令
    • CMD : 容器启动后执行默认的命令或参数
  • RUN-构建时运行 RUN yum install -y vim #Shell 命令格式
# 示例:
RUN ["yum","install","-y","vim"] #Exec命令格式
  • ENTRYPOINT启动命令 ENTRYPOINT(入口点)用于在容器启动时执行命令 Dockerfile中只有最后一个ENTRYPOINT会被执行
# 示例:
ENTRYPOINT ["ps"] #推荐使用Exec格式
  • CMD默认命令 CMD用于设置默认执行的命令,如果docker run 携带了参数,那么 CMD 设置的参数命令就会被忽略 如Dockerfile中出现多个CMD,则只有最后一个被执行 如容器启动时附加指令,则CMD被忽略
# 示例:
CMD ["ps" , "-ef"] #推荐使用Exec格式

by Sven Augustus https://my.oschina.net/langxSpirit

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dockerfile构建镜像及相关命令

    Dockerfile是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile中的指令按步自动生成镜像

    斯武丶风晴
  • Java泛型一览笔录

    1、什么是泛型? 泛型(Generics )是把类型参数化,运用于类、接口、方法中,可以通过执行泛型类型调用 分配一个类型,将用分配的具体类型替换泛型类型。然后...

    斯武丶风晴
  • 快速构建 Spring Boot 镜像

    by Sven Augustus https://my.oschina.net/langxSpirit

    斯武丶风晴
  • linux时钟同步

    二狗不要跑
  • SpringMVC工作原理流程(一)

    Servlet的继承结构一共有五个类,GenericServelt,HttpServlet,这两个类的介绍:传送门,剩下三个类HttpServletBean,F...

    秋白
  • 许嵩粉丝地域分布热力图,看看你的爱豆受到哪些地方的人喜欢

    这次我们想绘制一个歌手许嵩的粉丝地域分布的热力图。我们通过对网易云音乐网站爬虫,获取了所有粉丝的信息,包括所在地区。然后将这些地区按照关注人数通过热力图的形式,...

    HuangWeiAI
  • 关于Inchat启动SSL加密,本地浏览器无法连接问题

    经过测试,在正常clone项目后,如果你想要采用inchat各个版本的ssl加密,如果没有特殊配置,均会出现以上的情况,且连接不上的现象。

    Java猫说
  • 【JMeter系列-7】Linux下执行测试

    JMeter不仅能十分便捷地进行接口测试,同时它也是一款优秀的压测工具。但使用JMeter在自己的电脑(下称本机)上运行压测脚本时,一般会有两个瓶颈:

    云深i不知处
  • python3之深浅copy对比

    对于浅copy来说,第一层创建的是新的内存地址。而从第二层开始,指向的是同一个内存地址,所有,对于第二层以及更深的层数来说,保持一致性。

    py3study
  • 只知道ajax?你已经out了

    随着前端技术的发展,请求服务器数据的方法早已不局限于ajax、jQuery的ajax方法。各种js库已如雨后春笋一般,蓬勃发展,本文主要想介绍其中的axios和...

    前端林子

扫码关注云+社区

领取腾讯云代金券