docker可以分为三部分:docker镜像   docker仓库  docker容器

docker镜像:一个image可以包含一个镜像,也可以理解为一个系统模板,里面安装了相关应用,也可以是纯净版的系统

docker仓库:docker registries ,也叫docker仓库, 分为共有库和私有库俩种,上传下载images是通过dcoker仓库来实现的,公有库叫docker hub,也可以在局域网部署一个私有的docker仓库

docker容器:容器是从image中创建的,可以执行启动、开始、停止、删除等操作,可以理解为image创建的一个虚拟机

开始正题:

docker安装:centos 7   ------------yum -y install docker-io

查看docker目前有哪些镜像:

docker images

查看docker库中有哪些images

docker search  “images-name”  例如: docker search centos7

我们看到下图出现很多参数,其中包括image的名字、描述、stars(受欢迎程度) 是否为官方创建  是否为自动创建等

Docker Official Images指docker标准库, 由docker 官方建立. 用户建立的image则会有userid的prefix.

automated builds 则是通过代码版本管理网站结合docker hub提供的接口生成的, 例如github, bitbucket, 
你需要注册docker hub, 然后使用github或bitbucket的在账户链接到docker hub, 然后就可以选择在github或bitbucket里面的项目自动build docker image, 这样的话只要代码版本管理网站的项目有更新, 就会触发自动创建image.

拉取镜像

docker pull docker.io/ansible/centos7-ansible    #下载完镜像后可以使用docker images查看是否下载成功

启动容器并进入到容器中

docker run -it {镜像id} /bin/bash    #也可以添加-d参数后台运行

假如容器在后台运行,这个时候就需要进入到该容器进行操作

1. docker attach 容器id

不常用:但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

2.容器中安装sshd进行远程

不常用:为了保证安全性,不建议开启SSHD服务

3.使用nsenter进行远程(默认已经安装,如果没有可以手动安装)

docker inspect -f '{{.State.Pid}}' 容器ID

nsenter --target 容器PID --mount --uts --ipc --net --pid

例如:

4.使用 exec进入docker容器

docker exec -it 容器id  /bin/bash

===============================================================================================================================================

创建新镜像:在容器中部署好应用,有时会迁移到其它docker环境中,所以我们需要将当前容器中的应用创建为新的镜像上传到docker仓库中,方便下载使用

(1) docker commit来生成新镜像

参数详解:

  • -a :提交的镜像作者;

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;

  • -p :在commit时,将容器暂停。

举例说明:
docker commit -a "guohaidong" -m "vsftpd" f8315ebb750b vsftpd:v1

使用Dockerfile创建新镜像

指令说明

指令的一般格式为INSTRUNCTION arguments,指令包括FROM、MAINTAINER、RUN等。具体指令及说明如下:

指令 说明
FROM 指定所创建镜像的基础镜像
MAINTAINER 指定维护者信息
RUN 运行命令
CMD 指定启动容器时默认执行的命令
LABEL 指定生成镜像的元数据标签信息
EXPOSE 声明镜像内服务所监听的端口
ENV 指定环境变量
ADD 赋值指定的<src>路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下
COPY 赋值本地主机的<scr>路径下的内容到容器中的<dest>路径下;一般情况下推荐使用COPY而不是ADD
ENTRYPOINT 指定镜像的默认入口
VOLUME 创建数据挂载点
USER 指定运行容器时的用户名或UID
WORKDIR 配置工作目录
ARG 指定镜像内使用的参数(例如版本号信息等)
ONBUILD 配置当前所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作的命令
STOPSIGNAL 容器退出的信号
HEALTHCHECK 如何进行健康检查
SHELL 指定使用SHELL时的默认SHELL类型

Dockerfile文件格式

最简单的案例:

在linux系统中的某个路径新建一个文件为Dockerfile文件

vim Dockerfile

FROM docker.io/centos
MAINTAINER Guo Haidong <493630393@qq.com>
RUN yum -y install mariadb

然后使用docker build -t contos/mariadb:v1 -f /data/docker/Dockerfile .      #来生成新的镜像# “.”默认是指Dockerfile是在当前路径,也可以使用-f参数来指定Dockerfile路径

-t 指定镜像名称和tag

-f 指定Dcokerfile文件的path

#*******搭建私有docker仓库,上传镜像到仓库,后面介绍

删除镜像

docker rmi  镜像id

删除镜像前必须删除容器

docker rm -f 容器id

查看容器id方法:

docker ps

===================================

终端运行一个nginx容器,如果没有nginx镜像会自动从docker仓库中pull下来

docker run --name nginx -it nginx /bin/bash

===========================================================

查看容器的pid

docker inspect -f '{{.State.Pid}}' 容器ID

使用nsenter配合容器PID来进入到容器里

nsenter --target 容器PID --mount --uts --ipc --net --pid

============================================================================

命令总结:

镜像管理

docker search  搜索镜像

docker pull  获取镜像

docker images  查看镜像

docker rmi   删除镜像

docker commit命令或者编写dockerfile文件  生成新镜像

容器管理

docker run --name -h hostname   启动容器

docker stop|start|restart 容器id        停止|启动|重启    容器

docker run --restart=always --name hostname -d 容器id或者容器名称  自动重启容器(当容器由于某种错误导致容器停止就会触发restart信号)

docker ps -l               查看最后一个退出容器

docker ps -n number        显示最后几个容器

docker top  容器id或者容器名称         查看当前运行的进程

docker logs -f  容器id或者容器名称     实时查看当前容器日志输出

docker attach | 容器SSH |使用nsenter |使用exec   进入容器     #这里推荐使用后俩种,

*****docker inspect 容器名称或者容器id    显示容器的详细信息

*****docker inspect --format '{{.Config.Hostname}}'   容器名称或者容器id

docker简单介绍----镜像和容器管理的更多相关文章

  1. Docker简单介绍

    Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...

  2. Docker系列(一):Docker简单介绍

    Docker简介: 多语言和框架:支持多语言和框架以及语言框架的扩展机制 多服务:开放的核心服务以及服务的扩展机制 多云和多IaaS技术:支持多种IaaS技术和多云的部署,包括公有云和私有云 Dock ...

  3. Docker 镜像与容器管理

    镜像与容器简介 Docker的大部分操作都围绕着它的三大核心概念:镜像.容器.仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术尤为重要,在docker中,我们重点关注的就是镜像和容器了 ...

  4. Docker镜像和容器管理(二)

    Docker安装 Docker镜像管理 https://hub.docker.com/ 是公共的一个Docker镜像仓库,类似GitHub一样,上面有非常多的开源项目镜像. 可以直接在命令行搜索镜像 ...

  5. docker(2)安装centos7镜像与容器管理

    1.镜像加速器 创建/etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn ...

  6. Docker——理解好镜像和容器的关系

    关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料.  镜像也是 docker 的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态.前面我们介绍了 ...

  7. 一个简单易用的容器管理平台-Humpback

    什么是Humpback? 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker). 在 Docker-百度百科 中,对 Docker 已经解释得很清 ...

  8. docker 简单介绍及基础命令运用

    一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...

  9. Docker&K8S&持续集成与容器管理--系列教程

    前言 网络虚拟化 一 Docker简介 Docker介绍  → B站视频链接 Docker架构  → B站视频链接 二 Docker安装 Ubuntu Docker 安装 CentOS Docker ...

随机推荐

  1. 自己动手,打造轻量级VSCode/C#环境代替LinqPad

    .Net 的项目都挺重的,一直想找一个轻量级的 CSharp 环境,能像Python那样,选一个文件就能跑的.之前用的是 LinqPad,但它的缺点也很明显: (1)     不付费,自动完成不能用( ...

  2. 【Swift】iOS开发笔记(二)

    前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯 ...

  3. CodeForces 280B Maximum Xor Se

    题目链接:http://codeforces.com/contest/280/problem/B 题目大意: 给定一个由n个数组成的一个序列,s[l..r] (1 ≤ l < r ≤ n)代表原 ...

  4. static与final区别

    1. final   final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被继承 final成员变量表示常量,只能被赋值一次,赋值后不能 ...

  5. python 元祖字典集合

    一.元祖 1.用途:记录多个值,当多个值没有改变的需求,元祖不能修改,但元祖里的数据的数据可以修改. 2.定义方式:在()内用逗号分隔开多个任意值. 思考:如果定义一个只有一个一个值的元祖. # t ...

  6. Vs2010项目升级到Vs2015时的一些修改

    之前的C++/cli项目, Civil 3D版本为2014, 现在需要升级到2018版, 在升级的过程中遇到了一些问题: 为了备忘, 记录如下: Vcproj文件中进行了一些修改, 为了跟多版本项目的 ...

  7. Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线

    排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战.今天借这篇文章,跟大家分析一例这样的问题.排查过程中,需要理解一些自己完全陌生的组件,比如systemd和dbus. ...

  8. 金融量化分析【day112】:均值回归策略

    一.均值回归策略 1.什么是回归策略 二.归一标准化 import numpy as np a = np.random.uniform(100,5000,1000) b = np.random.uni ...

  9. Java进程线程笔记

    什么是并行和并发? 并发和并行是即相似又有区别:(微观) 并行:指两个或多个事件在同一时刻发生: 强调的是时间点. 并发:指两个或多个事件在同一时间段内发生: 强调的是时间段. 进程和线程的区别? 进 ...

  10. windows下创建启动脚本bat

    最主要是运用bat命令. call执行命令 比如 启动solr的服务,以前要进去solr的目录,然后bin/solr start    这样很麻烦.可以写个脚本放到桌面. call %CATALINA ...