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. 云计算openstack共享组件(3)——消息队列rabbitmq

    队列(MQ)概念: MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链 ...

  2. 二十八、layui的日历组件使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. spring boot 表单验证

    1 设置某个字段的取值范围 1.1 取值范围验证:@Min,@Max ① 实例类的属性添加注解@Min ② Controller中传入参数使用@Valid注解 1.2 不能为空验证:@NotNull ...

  4. mysql 导入出csv

    load data infile '/var/lib/mysql-files/ip_address.csv' into table ip_address fields terminated by ', ...

  5. Visual Studio 2019 (VS2019)正式版安装 Ankh SVN和VisualSVN插件

    VS2019 正式版最近刚刚推出来,目前 Ankhsvn 还不支持,它最高只支持 VS2017,全网搜索了一下,也没有找到.在 Stackoverflow 上看了一下,找到这篇问答: 自己按照这种方法 ...

  6. poj-2516(最小费用流)

    题意:有n个商店,每个商店有k种货物,每个货物需要a[n][k]个,有m个仓库,每个仓库也有k种货物,每个货物有b[m][k]个,然后k个矩阵,每个矩阵都是n*m的,第i行第j列表示从仓库j到商店i每 ...

  7. LoadRunner开发ftp协议接口之上传文件脚本

    Action() { //建立一个ftp对象 FTP ftp1=0; //建立FTP连接并登录 ftp_logon_ex(&ftp1,"ftpLogon", "U ...

  8. WinForm文件说明

    以上位置,双击即可. 界面可以通过拖动控件,也可以通过背后的界面代码去布局. 如果删除了事件代码,界面可能报错,因为界面代码中有未删除的残余(波浪线提示处代码,直接删除即可). 对于多个窗体,Prog ...

  9. 时间函数(1):time,ctime,gmtime,localtime

    asctime(将时间和日期以字符串格式表示) #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 ...

  10. prometheus 标签使用

    标签的配置使用 考虑到要明智地使用标签,我们需要给事物重新命名.在一个集中的.复杂的监视环境中,我们有时无法控制正在监视的所有资源以及它们公开的监视数据.重新标记允许在自己的环境中控制.管理和潜在地标 ...