文档章节

Docker的安装配置及使用详解

henrylee2cn
 henrylee2cn
发布于 2017/01/09 17:18
字数 1666
阅读 23
收藏 0
点赞 0
评论 0

基本概念

Docker 包括三个基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

先理解了这三个概念,就理解了 Docker 的整个生命周期。

1、docker安装与启动

yum install -y epel-release
yum install docker-io # 安装docker
# 配置文件 /etc/sysconfig/docker

chkconfig docker on  # 加入开机启动
service docker start # 启动docker服务

# 基本信息查看
docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info # 查看系统(docker)层面信息,包括管理的images, containers数等
docker pull centos 下载
docker images [ centos ] 查看
docker run -i -t centos /bin/bash

 

2、镜像的获取与容器的使用

# 搜索镜像
docker search <image> # 在docker index中搜索image
# 下载镜像
docker pull <image>  # 从docker registry server 中下拉image
# 查看镜像 
    docker images: # 列出images
    docker images -a # 列出所有的images(包含历史)
    docker rmi  <image ID>: # 删除一个或多个image

 

# 使用镜像创建容器
docker run -i -t sauloal/ubuntu14.04
docker run -i -t sauloal/ubuntu14.04 /bin/bash # 创建一个容器,让其中运行 bash 应用,退出后容器关闭
docker run -itd --name centos_aways --restart=always centos #创建一个名称centos_aways的容器,自动重启
# --restart参数:always始终重启;on-failure退出状态非0时重启;默认为,no不重启

# 查看容器
    docker ps :列出当前所有正在运行的container
    docker ps -l :列出最近一次启动的container
    docker ps -a :列出所有的container(包含历史,即运行过的container)
    docker ps -q :列出最近一次运行的container ID
# 再次启动容器
    docker start/stop/restart <container> #:开启/停止/重启container
    docker start [container_id] #:再次运行某个container (包括历史container)
#进入正在运行的docker容器
    docker exec -it [container_id] /bin/bash
    docker run -i -t -p <host_port:contain_port> #:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

# 删除容器
    docker rm <container...> #:删除一个或多个container
    docker rm `docker ps -a -q` #:删除所有的container
    docker ps -a -q | xargs docker rm #:同上, 删除所有的container

 

docker run 和 docker create 参数基本一样,run是创建容器并后台启动,create是只创建容器。 
docker run 相当于docker create 和 docker start

run创建容器:docker run -itd
create创建: docker create -it
    -t, --tty                       Allocate a pseudo-TTY
    -i, --interactive               Keep STDIN open even if not attached
    -d, --detach                    Run container in background and print container ID #run的参数

 

容器资源限制参数

-m 1024m --memory-swap=1024m  # 限制内存最大使用(bug:超过后进程被杀死)
--cpuset-cpus="0,1"           # 限制容器使用CPU

 

docker容器随系统自启参数

docker run --restart=always redis

 

  • no – 默认值,如果容器挂掉不自动重启
  • on-failure – 当容器以非 0 码退出时重启容器 
    • 同时可接受一个可选的最大重启次数参数 (e.g. on-failure:5).
  • always – 不管退出码是多少都要重启
docker run -itd --name test01 -p IP:sport:dport  -m 1024m --memory-swap=1024m --cpuset-cpus="0,1" --restart=always <image ID> 
docker exec -it test01 bash  # 进入容器也可以用exec命令

 

查看容器状态信息

[root@localhost ~]# docker stats 
[root@localhost ~]# docker stats --no-stream

 

进入容器 - nsenter 命令

nsenter安装 
nsenter 工具在 util-Linux 包2.23版本后包含。 如果系统中 util-linux 包没有该命令,可以按照下面的方法从源码安装。

cd /usr/src ; wget https://www.kernel.org/pub/linux/utils/util-linux/v2.28/util-linux-2.28.tar.gz
./configure --without-ncurses
make nsenter && sudo cp nsenter /usr/local/bin

 

nsenter使用 
nsenter 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 
为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的命令获取。

PID=$(docker inspect --format "{{ .State.Pid }}" <container>)

 

通过这个 PID,就可以连接到这个容器:

nsenter --target $PID --mount --uts --ipc --net --pid

 

更简单的,建议下载 .bashrc_docker,并将内容放到 .bashrc 中。

wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

 

这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 
docker-enter 可以进入容器或直接在容器内执行命令。

echo $(docker-pid <container>)
docker-enter <container> ls
docker-enter <container> bash

 

3、持久化容器与镜像

3.1 通过容器生成新的镜像

运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit 命令可以把一个正在运行的容器变成一个新的镜像。

docker commit <container> [repo:tag] # 将一个container固化为一个新的image,后面的repo:tag可选。

 

3.2 持久化容器

export命令用于持久化容器

docker export <CONTAINER ID> > /tmp/export.tar

 

3.3 持久化镜像

Save命令用于持久化镜像

docker save 镜像ID > /tmp/save.tar

 

3.4 导入持久化Container

删除container 2161509ff65e

docker rm 2161509ff65e

 

导入export.tar文件

cat /tmp/export.tar | docker import - export:latest

 

3.5 导入持久化image

删除image daa11948e23d

docker rmi daa11948e23d

 

导入save.tar文件

docker load < /tmp/save.tar

 

对image打tag

docker tag daa11948e23d load:tag

 

3.6 export-import与save-load的区别

导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行docker tag 来回滚之前的层)。

3.7 一些其它命令

 docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
    docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底层信息
    docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
    docker build -t repo[:tag] 同上,可以指定repo和可选的tag
    docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
    docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到

 

一些使用技巧

docker文件存放目录

Docker实际上把所有东西都放到/var/lib/docker路径下了。

[root@localhost docker]# ls -F
containers/  devicemapper/  execdriver/  graph/  init/  linkgraph.db  repositories-devicemapper  volumes/

 

containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。

转载请务必保留此出处:http://blog.csdn.net/fgf00/article/details/51893771

一张图总结 Docker 的命令

这里写图片描述

本文转载自:http://blog.csdn.net/fgf00/article/details/51893771

共有 人打赏支持
henrylee2cn

henrylee2cn

粉丝 86
博文 34
码字总数 5644
作品 7
深圳
高级程序员
运维之我的docker-docker日志收集

因为docker产生的容器不是一个永久存储的文件,所以无法保证你的文件永久保存。建议大家把容器产生的日志通过fluentd,flume,logstash等工具传送到一个日志仓库,这样保证方便保证数据的安全...

qq850900633 ⋅ 2017/05/05 ⋅ 0

运维之我的docker-compose快速创建zookeeper集群

很多时候大家不同的容器想要不用启动参数这个时候不妨使用脚本封装来实现,官方也很推荐这个做法,这里介绍下如何使用脚本传参快速启动一个zookeeper集群。 zookeeper集群大家知道有部分通用...

qq850900633 ⋅ 2017/03/20 ⋅ 0

Docker Machine 详解

Docker 与 Docker Machine 的区别 Docker 是一个 Client-Server 架构的应用,人家是有官称的:Docker Engine。Docker 只是大家对 Docker Engine 的昵称,当然 Docker 还有其他的意思,比如一...

wudized ⋅ 2017/07/10 ⋅ 0

Docker:Docker Compose 详解

Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个...

林塬 ⋅ 03/29 ⋅ 0

docker详细的基础用法

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)。(我个人还是喜欢称虚拟机) Docker应用容 Do...

劲风online ⋅ 2015/10/30 ⋅ 0

转:docker详细的基础用法

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)。(我个人还是喜欢称虚拟机) Docker应用容器相...

车开源 ⋅ 2016/03/19 ⋅ 0

docker详细的基础用法

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)。(我个人还是喜欢称虚拟机) Docker应用容器相...

jacked ⋅ 2015/10/23 ⋅ 0

详解docker使用阿里云Docker镜像库加速(修订版)

官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 阿里的文档是错误的, 复制代码代码如下: sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --regi...

zbill ⋅ 2017/10/18 ⋅ 0

Docker 快速学习(一)

Docker 快速学习(一) 操作系统:centos 6.5 一、安装: 1、配置epel源: yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.n......

ZhouLS ⋅ 2014/07/18 ⋅ 0

docker-3-使用dockerfile创建容器

这里按照官方文档创建一个python容器 前提:docker-ce安装完成,使用正常 开始 创建Dockerfile 文件vim Dockerfile> #Use an official Python runtime as a parent image> FROM python:2.7-......

yr_linux运维 ⋅ 2017/12/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 43分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 52分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 11

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部