docker相关

镜像

镜像仓库使用的Docker默认的Docker Hub。

搜索仓库的镜像 docker search

默认按评分排序,offical [ok] 表示是官方镜像

$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5406 [OK]
ansible/centos7-ansible Ansible on Centos7 121 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 110 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 91 [OK]

获取镜像 docker pull

命令格式

docker pull [选项] [Docker Registry地址:[端口]]/[仓库名]:[标签]

Docker Registry 地址默认是Docker Hub地址。

仓库名是两段式名称,即 <用户名>/<软件名>。对于Docker Hub,如果不给出用户名默认是library,即官方镜像。

标签默认是lastest。

$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
6abc03819f3e: Pull complete
05731e63f211: Pull complete
0bd67c50d6be: Pull complete
Digest: sha256:f08638ec7ddc90065187e7eabdfac3c96e5ff0f6b2f1762cf31a4f49b53000a5
Status: Downloaded newer image for ubuntu:18.04

列举镜像 docker image ls

$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 7698f282e524 4 weeks ago 69.9MB
centos latest 9f38484d220f 3 months ago 202MB

删除镜像 docker image rm

$ docker image rm 9f38484d220f
Untagged: centos:latest
Untagged: centos@sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Deleted: sha256:9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1

Dockerfile

我们可以从具体的Dockerfile中学习Dockerfile的语法,例如kafka提供的Dockerfile:

FROM openjdk:8u191-jre-alpine

ARG kafka_version=2.2.0
ARG scala_version=2.12
ARG glibc_version=2.29-r0
ARG vcs_ref=unspecified
ARG build_date=unspecified LABEL org.label-schema.name="kafka" \
org.label-schema.description="Apache Kafka" \
org.label-schema.build-date="${build_date}" \
org.label-schema.vcs-url="https://github.com/wurstmeister/kafka-docker" \
org.label-schema.vcs-ref="${vcs_ref}" \
org.label-schema.version="${scala_version}_${kafka_version}" \
org.label-schema.schema-version="1.0" \
maintainer="wurstmeister" ENV KAFKA_VERSION=$kafka_version \
SCALA_VERSION=$scala_version \
KAFKA_HOME=/opt/kafka \
GLIBC_VERSION=$glibc_version ENV PATH=${PATH}:${KAFKA_HOME}/bin COPY download-kafka.sh start-kafka.sh broker-list.sh create-topics.sh versions.sh /tmp/ RUN apk add --no-cache bash curl jq docker \
&& chmod a+x /tmp/*.sh \
&& mv /tmp/start-kafka.sh /tmp/broker-list.sh /tmp/create-topics.sh /tmp/versions.sh /usr/bin \
&& sync && /tmp/download-kafka.sh \
&& tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt \
&& rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz \
&& ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka \
&& rm /tmp/* \
&& wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk \
&& apk add --no-cache --allow-untrusted glibc-${GLIBC_VERSION}.apk \
&& rm glibc-${GLIBC_VERSION}.apk COPY overrides /opt/overrides VOLUME ["/kafka"] # Use "exec" form so that it runs as PID 1 (useful for graceful shutdown)
CMD ["start-kafka.sh"]
  • FROM 指定基础镜像。
  • ARG 构建参数。和ENV效果一样,都是设置环境变量,不同的时ARG构建的变量在容器运行时是不存在的,生命周期只存在Dockerfile中。
  • RUN 指定用来运行命令行的命令。RUN命令有两种格式:1.shell格式:RUN <命令>, 如上述例子所示。2.exec 格式:RUN ["可执行文件", "参数1","参数2"]。
  • COPY 将本地文件拷贝到镜像中。还有一个ADD命令和COPY命令很相似,ADD还有自动解压缩的功能。 如ADD test.tar.gz /,将会在镜像/目录中自动解压test.tar.gz。
  • VOLUME 定义匿名卷。这里/kafka目录会自动挂载为匿名卷,任何向/kafka写入的信息都不会进入容器存储层,从而保证容器存储层的无状态。当然,运行时也可以覆盖这个挂载设置,例如:docker run -d -v /data/mydata:/kafka kafka:mytest
  • CMD 容器启动命令。和RUN命令相似,也是两种格式。另一个相似的启动命令时ENTRYPOINT。
  • LABEL 为镜像添加元数据。

使用docker build -t kafka:mytest . 就会找到当前目录的Dockerfile构建镜像。其中kafka:mytest是指定的镜像名称和标签。

$ docker build -t kafka:mytest .
Sending build context to Docker daemon 427kB
Step 1/14 : FROM openjdk:8u191-jre-alpine
---> b76bbdb2809f
Step 2/14 : ARG kafka_version=2.2.0
.......
$ docker image ls kafka
REPOSITORY TAG IMAGE ID CREATED SIZE
kafka mytest d97321670d82 17 minutes ago 421MB

docker save和docker load组合使用可解决内外网不同网络策略镜像同步问题。

机器A完成了镜像制作后导出:

docker save kafka:mytest -o mytest.tgz

机器B通过文件包导入镜像:

docker load -i mytest.tgz

容器

启动容器 docker run

$ docker run centos /bin/echo "hello world"
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
8ba884070f61: Already exists
Digest: sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Status: Downloaded newer image for centos:latest
hello world

docker run会先检查本地有没有指定的镜像,如果没有会去远端仓库拉取到本地,然后创建和运行容器。

上述示例中容器输出了hello world然后退出。

docker run -d 表明后台运行,-i 交互模式。-t 表示分配一个tty。

例如:

$  docker run -it centos /bin/bash
[root@1dee9e7578b8 /]#
[root@1dee9e7578b8 /]# uname -a
Linux 1dee9e7578b8 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

进入容器

进入正在容器的内部有两种方法,attach和exec

docker attach <containerid> ,attach命令退出后被attach的容器也会跟着退出,不适用于生产环境。

docker exec -it <containerid> , exec 命令退出后容器不会退出。

$  docker run -itd centos /bin/bash
8fad68ae2be40337a06c79b04f608c6715fe0ecc4e02717cb885cc4781b53dda $ docker exec -it 8fad68ae2be40337a06c79b04f608c6715fe0ecc4e02717cb885cc4781b53dda /bin/bash
[root@8fad68ae2be4 /]#
[root@8fad68ae2be4 /]# exit
exit
HAIWEILU-MB0:dockerfiles haiweilu$ docker ps |grep 8fad #exec退出后容器还存在
8fad68ae2be4 centos "/bin/bash" About a minute ago Up About a minute wizardly_mendeleev
$ docker attach 8fad68ae2be40337a06c79b04f608c6715fe0ecc4e02717cb885cc4781b53dda
[root@8fad68ae2be4 /]# exit
$ docker ps |grep 8fad # attach退出后容器也会退出
$

终止容器

docker container stop <containerid>

$ docker container ls |grep centos
1bb4fbda885a centos "/bin/bash" 5 minutes ago Up 5 minutes blissful_heisenberg
$ docker container stop 1bb4fbda885a
1bb4fbda885a
$ docker container ls |grep centos
$

docker应用基础的更多相关文章

  1. Docker入门基础(一)

    Docker入门基础 Linux只存在文件目录,不存在“盘”的概念 Dockers优点:方便部署环境.资源占用少(微服务) Docker的三大概念 镜像:类似虚拟机的镜像.用俗话说就是安装文件.容器: ...

  2. 小白学Docker之基础篇

    系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...

  3. Docker网络基础:快速指南

    Docker网络基础:快速指南 原文连接:http://blogxinxiucan.sh1.newtouch.com/2017/07/30/Docker网络基础:快速指南/ 了解有关扩展网络功能的默认 ...

  4. docker容器基础

    一.docker容器基础6种名称空间:UTS.MOunt.IPC.PID.User.Net (1) Linux Namespaces:namespace 系统调用参数 隔离内容 内核版本  UTS   ...

  5. Docker之基础篇

    小白学Docker之基础篇   系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1 ...

  6. 快速掌握Docker必备基础知识

    快速掌握Docker必备基础知识 Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种 ...

  7. docker+k8s基础篇五

    Docker+K8s基础篇(五) service资源介绍 A:service资源的工作特性 service的使用 A:service字段介绍 B:ClusterIP的简单使用 C:NodePort的简 ...

  8. docker+k8s基础篇四

    Docker+K8s基础篇(四) pod控制器 A:pod控制器类型 ReplicaSet控制器 A:ReplicaSet控制器介绍 B:ReplicaSet控制器的使用 Deployment控制器 ...

  9. docker+k8s基础篇三

    Docker+K8s基础篇(三) kubernetes上的资源 A:k8s上的常用资源 Pod的配置清单 A:Pod上的清单定义 B:Pod创建资源的方法 C:spec下其它字段的介绍 Pod的生命周 ...

  10. docker+k8s基础篇二

    Docker+K8s基础篇(二) docker的资源控制 A:docker的资源限制 Kubernetes的基础篇 A:DevOps的介绍 B:Kubernetes的架构概述 C:Kubernetes ...

随机推荐

  1. 华为会员开放服务(Membership Kit),助力移动应用快速建设会员生态

    会员开放服务(Membership Kit)是华为面向开发者提供的券码开放能力,开发者可以通过Membership Kit开展灵活多样的营销活动,助力开发者建设会员生态,实现用户运营与增量创收的目标. ...

  2. 动态规划(三)——线性dp

    一.概念 具有线性阶段划分的动态规划算法叫作线性动态规划(简称线性DP).若状态包含多个维度,则每个维度都是线性划分的阶段,也属于线性DP,如下图所示: 二.线性dp的三大经典例题 1.LIS问题:求 ...

  3. linux 性能自我学习 ———— 不可中断进程和僵尸进程 [四]

    前言 简单介绍一下不可中断进程和僵尸进程. 正文 先来看下进程的状态: 那么这一列的状态是什么呢? R 是Running 或 Runnable 的缩写, 表示进程在cpu 的就绪队列中,正在运行或者正 ...

  4. sql 语句系列(字符串之裂开)[八百章之第十三章]

    创建分割列表 一张表: 先查询出来的效果是这样的: mysql: select emp_copy.deptno,GROUP_CONCAT(emp_copy.emps SEPARATOR ',') fr ...

  5. 重新点亮linux 命令树————su和sudo[七]

    前言 简单整理一下su和sudo这两个命令. 正文 su 这个命令是用来切换用户的. 一般我们切换命令su,还是在原来的路径下面,但是如果想要直接回到切换用户的用户目录的话,可以使用su - user ...

  6. 手机配置IPV6

    据可靠消息说今年7月份前大部分系统都得支持ipv6,之前也没当回事,突然说要全切,还得验证ipv6的支持情况. 网上找了一堆,发现都过时了,或者行不通,琢磨了一下把华为android的搞定了(流量模式 ...

  7. 牛客网-SQL专项训练7

    ①SQL语言可以分为多个类别,那么不属于数据操纵语言DML的是(B) 解析: SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语 ...

  8. 通过 MSE 实现基于Apache APISIX的全链路灰度

    简介: 无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策.当服务版本发生变化时,这个调用链路的转发也会实时改变.相比于利用机器搭建的灰度环境,这种方案不仅可以节省大量的机器成本和 ...

  9. 顺丰科技 Hudi on Flink 实时数仓实践

    ​简介: 介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi 来优化整个 job 状态的实践细节,以及未来的一些规划. 本文作者为刘杰,介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi ...

  10. Windows 官方提供的触屏硬件延迟测量方法

    本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法 Overview of measuring Touch Down Hardware ...