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 ...
随机推荐
- 自己动手,打造轻量级VSCode/C#环境代替LinqPad
.Net 的项目都挺重的,一直想找一个轻量级的 CSharp 环境,能像Python那样,选一个文件就能跑的.之前用的是 LinqPad,但它的缺点也很明显: (1) 不付费,自动完成不能用( ...
- 【Swift】iOS开发笔记(二)
前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯 ...
- CodeForces 280B Maximum Xor Se
题目链接:http://codeforces.com/contest/280/problem/B 题目大意: 给定一个由n个数组成的一个序列,s[l..r] (1 ≤ l < r ≤ n)代表原 ...
- static与final区别
1. final final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被继承 final成员变量表示常量,只能被赋值一次,赋值后不能 ...
- python 元祖字典集合
一.元祖 1.用途:记录多个值,当多个值没有改变的需求,元祖不能修改,但元祖里的数据的数据可以修改. 2.定义方式:在()内用逗号分隔开多个任意值. 思考:如果定义一个只有一个一个值的元祖. # t ...
- Vs2010项目升级到Vs2015时的一些修改
之前的C++/cli项目, Civil 3D版本为2014, 现在需要升级到2018版, 在升级的过程中遇到了一些问题: 为了备忘, 记录如下: Vcproj文件中进行了一些修改, 为了跟多版本项目的 ...
- Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线
排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战.今天借这篇文章,跟大家分析一例这样的问题.排查过程中,需要理解一些自己完全陌生的组件,比如systemd和dbus. ...
- 金融量化分析【day112】:均值回归策略
一.均值回归策略 1.什么是回归策略 二.归一标准化 import numpy as np a = np.random.uniform(100,5000,1000) b = np.random.uni ...
- Java进程线程笔记
什么是并行和并发? 并发和并行是即相似又有区别:(微观) 并行:指两个或多个事件在同一时刻发生: 强调的是时间点. 并发:指两个或多个事件在同一时间段内发生: 强调的是时间段. 进程和线程的区别? 进 ...
- windows下创建启动脚本bat
最主要是运用bat命令. call执行命令 比如 启动solr的服务,以前要进去solr的目录,然后bin/solr start 这样很麻烦.可以写个脚本放到桌面. call %CATALINA ...