docker简单介绍----镜像和容器管理
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.

拉取镜像
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简单介绍----镜像和容器管理的更多相关文章
- Docker简单介绍
Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...
- Docker系列(一):Docker简单介绍
Docker简介: 多语言和框架:支持多语言和框架以及语言框架的扩展机制 多服务:开放的核心服务以及服务的扩展机制 多云和多IaaS技术:支持多种IaaS技术和多云的部署,包括公有云和私有云 Dock ...
- Docker 镜像与容器管理
镜像与容器简介 Docker的大部分操作都围绕着它的三大核心概念:镜像.容器.仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术尤为重要,在docker中,我们重点关注的就是镜像和容器了 ...
- Docker镜像和容器管理(二)
Docker安装 Docker镜像管理 https://hub.docker.com/ 是公共的一个Docker镜像仓库,类似GitHub一样,上面有非常多的开源项目镜像. 可以直接在命令行搜索镜像 ...
- docker(2)安装centos7镜像与容器管理
1.镜像加速器 创建/etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn ...
- Docker——理解好镜像和容器的关系
关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 镜像也是 docker 的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态.前面我们介绍了 ...
- 一个简单易用的容器管理平台-Humpback
什么是Humpback? 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker). 在 Docker-百度百科 中,对 Docker 已经解释得很清 ...
- docker 简单介绍及基础命令运用
一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...
- Docker&K8S&持续集成与容器管理--系列教程
前言 网络虚拟化 一 Docker简介 Docker介绍 → B站视频链接 Docker架构 → B站视频链接 二 Docker安装 Ubuntu Docker 安装 CentOS Docker ...
随机推荐
- 云计算openstack共享组件(3)——消息队列rabbitmq
队列(MQ)概念: MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链 ...
- 二十八、layui的日历组件使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- spring boot 表单验证
1 设置某个字段的取值范围 1.1 取值范围验证:@Min,@Max ① 实例类的属性添加注解@Min ② Controller中传入参数使用@Valid注解 1.2 不能为空验证:@NotNull ...
- mysql 导入出csv
load data infile '/var/lib/mysql-files/ip_address.csv' into table ip_address fields terminated by ', ...
- Visual Studio 2019 (VS2019)正式版安装 Ankh SVN和VisualSVN插件
VS2019 正式版最近刚刚推出来,目前 Ankhsvn 还不支持,它最高只支持 VS2017,全网搜索了一下,也没有找到.在 Stackoverflow 上看了一下,找到这篇问答: 自己按照这种方法 ...
- poj-2516(最小费用流)
题意:有n个商店,每个商店有k种货物,每个货物需要a[n][k]个,有m个仓库,每个仓库也有k种货物,每个货物有b[m][k]个,然后k个矩阵,每个矩阵都是n*m的,第i行第j列表示从仓库j到商店i每 ...
- LoadRunner开发ftp协议接口之上传文件脚本
Action() { //建立一个ftp对象 FTP ftp1=0; //建立FTP连接并登录 ftp_logon_ex(&ftp1,"ftpLogon", "U ...
- WinForm文件说明
以上位置,双击即可. 界面可以通过拖动控件,也可以通过背后的界面代码去布局. 如果删除了事件代码,界面可能报错,因为界面代码中有未删除的残余(波浪线提示处代码,直接删除即可). 对于多个窗体,Prog ...
- 时间函数(1):time,ctime,gmtime,localtime
asctime(将时间和日期以字符串格式表示) #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 ...
- prometheus 标签使用
标签的配置使用 考虑到要明智地使用标签,我们需要给事物重新命名.在一个集中的.复杂的监视环境中,我们有时无法控制正在监视的所有资源以及它们公开的监视数据.重新标记允许在自己的环境中控制.管理和潜在地标 ...