Docker使用命令

Stella981
• 阅读 481

常用命令

# 从远程仓库抽取镜像 
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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
01_docker镜像命令
docker镜像命令1\.dockerimages参数:\a:列出本地所有的镜像\q:只显示镜像id\digests:显示镜像的摘要信息\notrunc:显示完整的镜像信息dockerimagesd
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
5个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这