当前位置:文档之家› docker

docker

docker
docker

核心概念

yum install -y docker-io

如果是centos7

yum install -y docker

启动docker

/etc/init.d/docker start

docker images //查看本地都有哪些镜像

docker tag centos syk123 //为centos镜像设置标签为syk123再使用docker images查看会多出来一行改行的image id和centos的一样

docker search (image-name) //从docker仓库搜索docker镜像后面是关键词

docker run -t -i centos /bin/bash //用下载到的镜像开启容器-i表示让容器的标准输入打开-t表示分配一个伪终端要把-i -t 放到镜像名字前面

当该镜像发生修改后我们可以把该镜像提交重新生成一个新版本进行在本地。

docker ps //查看运行的容器

docker rmi centos //用来删除指定镜像其中后面的参数可以是tag如果是tag时实际上是删除该tag只要该镜像还有其他tag就不会删除该镜像。当后面的参数为镜像ID时则会彻底删除整个镜像连通所有标签一同删除

docker ps -a //查看所有容器包括已经退出的。

三、创建镜像基于已有镜像的容器创建

运行docker run后进入到该容器中我们做一些变更比如安装一些东西然后针对这个容器进行创建新的镜像

docker commit -m "change somth" -a "somebody info" image_id //通过docker images获取id 新镜像名字

例如 docker commit -m "install httpd" -a "syk" 2c74d574293f centos_net-tools

这个命令有点像svn的提交-m 加一些改动信息-a 指定作者相关信息 2c74d这一串为容器id再后面为新镜像的名字

cat centos-6-x86.tar.gz |docker import - centos-6-x86

把现有镜像导出为一个文件

docker save -o syk-centos.tar centos-6-x86

我们还可以用该文件恢复本地镜像

docker load --input aming-centos.tar 或者

docker load < aming-centos.tar

docker push image_name //可以把自己的镜像传到dockerhub官方网站

一、我们怎么更方便的进去已经start的容器呢?

nsenter:可以通过这个命令进去docker的images里

首先获取一个容器的id:

docker inspect --format " ``.`State`.`Pid`" centos_with_nettools 获取一个id

10592

nsenter --target 10592 --mount --yts --ipc --net

这样就进去了,当然这样很麻烦,所以可以写一个脚本:

cat in.sh

CNAME=$1

CPID=$(docker inspect --format " ``.`State`.`Pid`" $CNAME)

nsenter --target $CPID --mount --uts --ipc --net

设置权限:

chmod +x in.sh

使用:./in.sh centos_with_nettools

二、查看docker网络

brctl show

查看docker的网桥

iptables -t nat -L -n

三、容器创建好了,怎么对外提供服务呢?

容器都是独立的,资源隔离的,一个容器最常见的是只跑一个服务,但凡服务都都是有端口的,那么我们就要把容器内的端口映射到本机的端口上,然后对外提供服务第一种:随机映射

docker run -P -d --name nginx1 nginx

第二种:指定映射

docker run -d -p 91:80 --name nginx2 nginx

四、数据卷

什么是数据卷?

当然是存放数据的,那么我们用来做什么?打个比方,一个网站后端不可能只有一台服务器,那么多台服务器怎么保证一些需要的数据一致呢?这里就要用到数据卷了,一个容器只用来保存数据,其他后台服务器都到这个容器里取数据,这样就可以保证数据一致性了。

先创建一个容器:

docker run -it --name volume-test1 -h nginx -v /data nginx

docker ps -l查看一下:

docker inspect -f "``.`Volumes`" volume-test1查看卷:

挂载:

docker run -it --name volume-test2 -h nginx1 -v /opt:/opt centos

注意:/opt后面不能有/号

docker run -it --name volume-test2 -h nginx1 -v /opt:/opt:ro centos

ro:表示在容器里不能写

这时创建新容器时就可以指定了

新建容器,数据卷从volume-test1上取

docker run -it --name volume-test34 --volumes-from volume-test1 centos 什么是Dockerfile?

按照平时,我们都需要先让一个容器跑起来,然后进去搭建制定自己的服务,那有没有更简洁的方法呢?Dockerfile就是为了更方便的制定容器的。

首先先看Dockerfile里的一些定义,这里从网上截了个图,比较形象:

创建目录:

要先把需要的软件包放在同一个目录下

编写Dockerfile,这里要特别提醒,Dockerfile编写需要非常注意空格!!!

vim Dockerfile

添加:

# This is My first Dockerfile

# Version 1.0

# Author: syk

#Base images

FROM centos

#MAINTAINER

MAINTAINER yongkang.shi

#ADD

ADD pcre-8.38.tar.gz /usr/local/src

ADD nginx-1.8.1.tar.gz /usr/local/src

#RUN

RUN yum install -y wget gcc gcc-c++ make openssl-devel

RUN useradd -s /sbin/nologin -M www

#WORKDIR

WORKDIR /usr/local/src/nginx-1.8.1

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www

--with-http_ssl_module --with-http_stub_status_module

--with-pcre=/usr/local/src/pcre-8.38 && make && make install

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

ENV PATH /usr/local/nginx/sbin:$PATH

#EXPOSE

EXPOSE 80

#CMD

CMD ["nginx"]

运行命令创建容器:

docker build -t nginx-file:v2 /opt/docker-file/nginx/

最后会提示构建成功:

docker ps -a查看一下:

通常我们使用镜像都需要去官方pull下来,而平时公司使用都是自己定制的容器,那么我们就需要搭建自己的私有库。

建私有库:

docker pull registry

docker run -d -p 5001:5000 registry(使用本机的5001端口,默认使用5000)

docker tag centos_with_nettools 172.16.7.105:5001/test/nettool:v1

vim /etc/sysconfig/docker

添加:

other_args="--insecure-registry 172.16.7.105:5001"(本机ip:port)

重启docker:

/etc/init.d/docker restart

docker start registry_ID

提交到本机私有库:

docker push 172.16.7.105:5001/test/nettool:v1

想要在其他机器上pull,需要在其他机器上添加:

vim /etc/sysconfig/docker

添加:

other_args="--insecure-registry 172.16.7.105:5001"(本机ip:port)

重启docker:

使用docker pull 172.16.7.105:5001/test/nettool:v1

docker官方提供了一个web UI界面管理容器和镜像,名为:shipyard

先修改一下配置文件

vim /etc/sysconfig/docker

添加:

other_args="-H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock"

注:centos7使用OPTIONS="-H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock"

重启:

/etc/init.d/docker restart

执行:

获取一个/data的数据卷:

docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb

使用/data数据卷启动RethinkDB:

docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd -name discovery

代理:

docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest

主点:

docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://:4001

启动shipyard控制器:

docker run \

-ti \

-d \

--restart=always \

--name shipyard-controller \

--link shipyard-rethinkdb:rethinkdb \

--link shipyard-swarm-manager:swarm \ -p 8080:8080 \

shipyard/shipyard:latest \

server \

-d tcp://swarm:3375

然后就可以使用http://localhost:8080 访问了

Docker网络配置

Docker网络配置 摘要 当docker启动时,它会在宿主机器上创建一个名为docker0的虚拟网络接口。它会从RFC 1918定义的私有地址中随机选择一个主机不用的地址和子网掩码,并将它分配给docker0。例如当我启动docker几分钟后它选择了172.17.42.1/16-一个16位的子网掩码为主机和它的容器提供了65,534个ip地址。 但docker0并不是正常的网络接口。它只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥。它可以使容器与主机相互通信。每次Docker创建一个容器,它就会创建一对对等接口(peer interface),类似于一个管子的两端--在这边可以收到另一边发送的数据包。Docker会将对等接口中的一个做为eth0接口连接到容器上,并使用类似于vethAQI2QT这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有veth*接口绑定到docker0桥接网卡上,Docker在主机和所有Docker容器间创建一个共享的虚拟子网。 本文其他部分将会讲解使用Docker选项的所有方式,并且-在高级模式下-使用纯linux网线配置命令来调整,补充,或完全替代Docker的默认网络配置。 Docker选项快速指南 这里有一份关于Docker网络配置的命令行选项列表,省去您查找相关资料的麻烦。 一些网络配置的命令行选项只能在服务器启动时提供给Docker服务器。并且一旦启动起来就无法改变。 一些网络配置命令选项只能在启动时提供给Docker服务器,并且在运行中不能改变: -b BRIDGE或--bridge=BRIDGE 建立自己的网桥 --bip=CIDR 定制docker0 -H SOCKET...或--host=SOCKET... 它看起来像是在设置容器的网络,但实际却恰恰相反:它告诉Docker服务器要接收命令的通道,例如“run container"和"stop container"。 --icc=true|false 容器间通信 --ip=IP_ADDRESS 绑定容器端口 --ip-forward=true|false 容器间通信 --iptables=true|false 容器间通信

docker命令详解

docker [OPTIONS] command Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h | --help | -v | --version ] A self-sufficient runtime for containers. Options: --config=~/.docker Location of client config files -D, --debug=false Enable debug mode -H, --host=[] Daemon socket(s) to connect to -h, --help=false Print usage -l, --log-level=info Set the logging level --tls=false Use TLS; implied by --tlsverify --tlscacert=~/.docker/ca.pem Trust certs signed only by this CA --tlscert=~/.docker/cert.pem Path to TLS certificate file --tlskey=~/.docker/key.pem Path to TLS key file --tlsverify=false Use TLS and verify the remote -v, --version=false Print version information and quit attach Attach to a running container 将终端依附到容器上 为后端运行的交互式的容器启用一个终端与之交互。 1.后台有一个可以交互的容器.

Docker常用命令

Docker之常用命令 1. 查看docker信息(version、info) 1.# 查看docker版本 2.$docker version 3. 4.# 显示docker系统的信息 5.$docker info 2. 对image的操作(search、pull、images、rmi、history) 1.# 检索image 2.$docker search image_name 3. 4.# 下载image 5.$docker pull image_name 6. 7.# 列出镜像列 表; -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs 8.$docker images 9. 10.# 删除一个或者多个镜 像; -f, --force=false Force; --no-prune=false Do not delete untagged parents 11.$docker rmi image_name 12. 13.# 显示一个镜像的历 史; --no-trunc=false Don't truncate output; -q, --quiet=false Only show nume ric IDs 14.$docker history image_name 3. 启动容器(run) docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

CentOS系统下docker的安装配置及使用详解

1 docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。 Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXC, cgroups 和 Linux 自己的内核。和传统的虚拟机不同的是,一个Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。 Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点: 1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。 2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。 3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。 4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile 来指导系统环境和依赖,这样对于持续交付十分有利。 5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。 Docker 会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。 Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。 Docker 由下面这些组成: 1. Docker 服务器守护程序(server daemon),用于管理所有的容器。 2. Docker 命令行客户端,用于控制服务器守护程序。 3. Docker 镜像:查找和浏览 docker 容器镜像。 2 docker特性 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。

docker试题教学内容

d o c k e r试题

1、什么是容器?(3分) 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。 2、容器虚拟化和传统虚拟化的区别是什么?(4分) 容器虚拟化:启动一般是秒级;仅仅kernel所支持的os,系统支持量单机支持上千个容器,磁盘的使用一般为MB 性能接近原生 传统虚拟化:启动一般是分钟级,支持linux,windows,mac操作系统,系统支持量一般为几十个磁盘使用一般为GB 性能弱 3、Namespace 在容器里功能是什么?(3分) Namespace是命名空间隔离,主要就是将用户空间通过namespace技术隔离开,容器内的进程互不影响。共用一个内核 4、Cgroup的功能是什么的?(3分) 资源限制优先级分配资源统计任务控制 5、Docker能不能在32位的系统里运行?(3分) 不能 6、Docker的核心组件有哪些?(3分) 镜像,容器,仓库 7、我们所安装的docker是哪个版本的?写不全不给分。(3分) 18.03.1-ce版本 8、如何搜索docker镜像nginx?(3分) Docker search nginx 9、如何下载centos 镜像?(3分) Docker pull centos 10、运行一个zabbix 的镜像,并打开一个终端。(3分) Docker run -it zabbix /bin/bash 11、让上个题的容器不停止,并后台运行。(3分) 先按ctrl + p 再按 ctrl + q 12、删除现在所有的镜像。(3分) Docker rmi -f‘docker images -q -a’ 13、查看上一个容器的状态。(3分) Docker stats `docker ps -l -q` 14、查看容器的进程。(3分) Docker top 容器id 15、查看容器的统计信息。(3分) Docker stats 容器id

docker经典入门教程

转载:https://www.doczj.com/doc/e42088473.html,/a/1190000000366923 几个月以前,红帽(Red Hat)宣布了在Docker 技术上和dotCloud建立合作关系。在那时候,我并没有时间去学习关于Docker 的知识,所以在今天,趁着这个30 天的挑战,我决定去学习一下Docker 究竟是怎样的。这篇博文并不是说以后怎么在OpenShift 上用Docker 的。请阅读由Mike McGrath 撰写的"关于OpenShift 和Docker 的技术思考"。也可以看看这个Stackoverflow 的问题,了解一下Docker 和OpenShift 的差别。 什么是Docker? Docker提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致dotCloud 把它重命名到Docker Inc。它最初是用Go 语言编写的,它就相当于是加在LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。 Docker 扩展了Linux 容器(Linux Containers),或着说LXC,通过一个高层次的API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了LXC,cgroups 和Linux 自己的内核。和传统的虚拟机不同的是,一个Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。这里有一个Stackoverflow 的答案,里面非常详细清晰地描述了所有Docker 不同于纯粹的LXC 的功能特性 Docker 会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。 Docker 由下面这些组成: 1. Docker 服务器守护程序(server daemon),用于管理所有的容器。 2. Docker 命令行客户端,用于控制服务器守护程序。 3. Docker 镜像:查找和浏览docker 容器镜像。它也访问这里得到: https://index.docker.io/ 我为什么要关心这些? Docker 之所以有用,是因为把代码从一个机器迁移到另一个机器经常是困难的。它尝试去使得软件迁移的过程变得更加可信和自动化。Docker 容器可以移植到所有支持运行Docker 的操作系统上。

docker系统运维

Docker手册

目录 1.简介 (3) 2.Docker (3) 2.1.安装 (3) 2.2.Docker常见命令 (9) 2.2.1.Options: (9) https://www.doczj.com/doc/e42088473.html,mands: (10) 3.Docker镜像管理 (3) 3.1.搜索Docker镜像 (4) 3.2.查看Docker镜像 (4) 3.3.删除Docker镜像 (5) 3.4.导出Docker镜像 (5) 3.5.导入Docker镜像 (5) 3.6.获取Docker镜像 (5) 4.Docker容器管理 (6) 4.1.启动Docker容器 (6) 4.1.1.新建容器并启动 (6) 4.1.2.启动已终止容器 (7) 4.1.3.守护进程运行 (7) 4.1.4.停止容器 (8) 4.1.5.删除容器 (8) 4.1.6.进入容器 (8)

1.简介 Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操作系统开销,提高资源利用率。 2.Docker 它只能用在64位的操作系统上。 2.1.安装 Docker软件包已经包括在默认的CentOS-Extras软件源里。因此想要安装docker,只需要运行下面的yum命令: yum install docker 查看docker版本信息:docker version 启动docker:systemctl start docker 加入开机自启动:systemctl enable docker 3.Docker镜像管理 Docker镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的CentOS操作系统环境,里面仅安装了Apache或用户需要的其

Docker容器原理与实现

Docker容器的原理与实现 周成玉 【摘要】Linux容器(Linux Container,LXC)是docker的核心技术之一,LXC利用chroot、namespace 和cgroup等技术实现资源的隔离和配额,文章剖析了LXC的原理和实现。 【关键词】chroot, namespace, cgroup, LXC 1、概述 海关已经广泛使用虚拟机技术多年,IT资源利用率得到有效提高。近年来,基于Docker的轻量级虚拟化技术正成为IT技术热点之一。与传统虚拟机相比,Docker技术本质上是一种LXC引擎。VM和LXC 关注的问题都是资源的隔离和配额,VM采用CPU、memory、disk等硬件虚拟化技术,LCX则借助了chroot、namespace和cgroups等系统调用。 2、LXC的资源隔离 2.1、chroot chroot(change root directory,更改root目录),最早在1979年的Unix V7使用,并在各个版本的linux 系统中得以保留。在linux系统中,系统默认的目录结构都是以“/”,即根(root)开始的。 通过使用chroot,系统读取到的目录和文件将不在是旧系统根下的而是指定的新位置下的目录结构和文件,这样带来两个好处: (1)增加系统的安全性,限制用户权力。经过chroot之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。在登录(login)前使用chroot,阻止用户访问特定目录。 (2)建立一个与原系统隔离的系统目录结构,方便用户的开发。使用chroot后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。 Docker就是利用chroot功能,实现每个容器里看到的文件系统都是一个完整的linux系统。下面来看一个简单shell脚本,将某个进程及其子进程访问根目录限制在“/home/container”目录,该进程及其子进程

Docker实战之容器基础命令系列

从Docker到Kubernetes 第2周

Docker实战之容器基础命令系列 Docker的部署安装Docker配置文件与日志Docker基础命令讲解

Docker 采用Linux (内核)技术,所以只能运行在Linux 上,官方说Linux kernel 至少3.8以上 Boot2Docker 是一个专为Docker 而设计的轻量级Linux 发型包 Windows Mac Linux VM 开发、测试环境(个人) Centos Ubuntu Docker Native CoreOS Atomic More 物理机/Cloud Node

本课程 Centos 7 ,采用Redhat官方的yum源和Docker RPM包安装 从百度云盘下载centos 7镜像 Docker课程所用资料https://www.doczj.com/doc/e42088473.html,/s/1jG4FAqq SSH进入虚机后,执行标准化安装过程: yum install docker

Docker 1.8的部署安装 cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] name=Docker Repository baseurl=https://https://www.doczj.com/doc/e42088473.html,/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://https://www.doczj.com/doc/e42088473.html,/gpg EOF yum install docker-engine

设置开机启动Docker Daemon进程systemctl start docker.service systemctl enable docker.service systemctl grep docker查看docker进程的状态 systemctl disable firewalld yum -y install iptables-services systemctl enable iptables systemctl start iptables 换回默认的iptables服务

docker命令语句

Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker 基础知识。 针对已经有一定的Linux基础知识的用户。 Docker是什么 Docker是一个改进的容器技术。具体的“改进”体现在,Docker 为容器引入了镜像,使得容器可以从预先定义好的模版(images)创建出来,并且这个模版还是分层的。Docker经常被提起的特点: 轻量,体现在内存占用小,高密度 快速,毫秒启动 隔离,沙盒技术更像虚拟机 Docker技术的基础: namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid cgroups,容器资源统计和隔离。主要用到的cgroups子系 统:cpu,blkio,device,freezer,memory unionfs,典型:aufs/overlayfs,分层镜像实现的基础Docker组件: docker Client客户端————>向docker服务器进程发起请求,如:创建、停止、销毁容器等操作 docker Server服务器进程—–>处理所有docker的请求,管理所有容器 docker Registry镜像仓库——>镜像存放的中央仓库,可看作是存放二进制的scm Docker安装 Docker的安装非常简单,支持目前所有主流操作系统,从Mac

到Windows到各种Linux发行版 具体参考:docker安装 Docker常见命令 容器相关操作 docker create # 创建一个容器但是不启动它 docker run # 创建并启动一个容器 docker stop # 停止容器运行,发送信号SIGTERM docker start # 启动一个停止状态的容器 docker restart # 重启一个容器 docker rm # 删除一个容器 docker kill # 发送信号给容器,默认SIGKILL docker attach # 连接(进入)到一个正在运行的容器 docker wait # 阻塞到一个容器,直到容器停止运行 获取容器相关信息 docker ps # 显示状态为运行(Up)的容器 docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited) docker inspect # 深入容器内部获取容器所有信息 docker logs # 查看容器的日志(stdout/stderr) docker events # 得到docker服务器的实时的事件 docker port # 显示容器的端口映射 docker top # 显示容器的进程信息 docker diff # 显示容器文件系统的前后变化 导出容器 docker cp # 从容器里向外拷贝文件或目录 docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息 执行 docker exec # 在容器里执行一个命令,可以执行bash进入

Docker容器技术与微服务解决方案

Docker容器技术与微服务解决方案

目录 一、前言 (3) 二、容器技术简介 (3) 三、Docker 简介 (4) 四、Docker 的组成 (6) 五、Docker 的实现 (8) 六、Docker 的生态圈 (15) 七、总结 (16)

一、前言 Docker 是最近在云计算领域出现的新技术。目前,Docker 和以其为代表的容器技术的热度已经改过了之前的OpenStack。Docker 以及其所代表的容器技术的流行,即使因为软件技术的进步,更是由于其符合云计算对软件领域所带来新思想。在如今的互联网和企业应用开发领域,微服务和DevOps 是两个思想颇为深入人心。而Docker 技术的出现和其对整个容器技术及其生态圈发展的促进,解决了这个微服务和DevOps 这两个思想实践中的很多难题,使得前面两种思想大规模地实现成为了可能。所以,我们有必要地深入了解一下Docker 这个技术,看看它会对云计算时代的软件开发产生什么样的影响。 本文将介绍如下内容 1.什么是容器技术 2.什么是Docker 3.Docker 是如何实现的 4.为什么要使用Docker 至于Docker 的用法,不在这里做介绍。Docker 的入门使用,可以前往Docker 官网。各种高级用法、技巧、经验,可以前往技术网站CSDN、InfoQ 和CoreOS、Centurylink Labs 等这些使用Docker 的云计算厂商的网站。 二、容器技术简介 容器技术有时会被称为轻量化虚拟技术。但不同于基于Hypervisor 的传统虚拟化技术,容器技术并不会虚拟硬件。容器本身和容器内的进程都是运行在宿主Linux 系统的内核之

Docker安装配置步骤详解

Docker安装配置步骤详解 1.安装Docker 使用yum命令安装docker,如yum -y install docker-io 2.配置与启动 vi /etc/sysconfig/docker 启动docker服务: service docker start 将docker加入开机启动 chkconfig docker on 3.测试 docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等

docker info:查看系统(docker)层面信息,包括管理的images, containers数等 4.镜像的获取与容器的使用 镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的ubuntu系统。再比如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,而这个镜像本身又基于ubuntu。 4.1搜索镜像

docker search :在docker index中搜索image 命令:docker search ubuntu12.10 4.2下载镜像 docker pull :从docker registry server 中下拉image 命令:docker pull chug/ubuntu12.10x64 4.3查看镜像 docker images:列出images docker images -a :列出所有的images(包含历史) docker images --tree :显示镜像的所有层(layer) docker rmi :删除一个或多个image 4.4使用镜像创建容器 [root@localhost /]# docker run chug/ubuntu12.10x64 /bin/echo hello world hello world 交互式运行 [root@localhost /]# docker run -i -t chug/ubuntu12.10x64 /bin/bash root@2161509ff65e:/# 4.5查看容器 docker ps :列出当前所有正在运行的container docker ps -l :列出最近一次启动的container

《Docker技术集群与应用》课程测试试卷-2

《Docker技术集群与应用》课程测试试卷说明:本试卷由选择题和简答题两部分组成,满分100分。 一、选择题 说明:共30题,每题2分,共计60分。 针对以下题目,请选择最符合题目要求的答案。针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。 1.下列关于Docker核心概念的说法错误的是()。 A.Docker镜像是创建容器的基础,是Docker容器的只读模板 B.Docker容器可以看作是一个简易版的Linux环境,用来运行和隔离应用 C.Docker仓库是集中保存镜像的地方,可使用push命令上传自己的镜像 D.Docker容器是从镜像创建的运行实例,容器创建后容器之间可以相互可见 2.下列()属于安装Docker时所需要的依赖软件包。 A.yum-utils B. device-mapper-devel C. lvm2 D. python-docker 3.对于Docker镜像的描述错误的是()。 A.镜像文件是由若干层组成,是实现增量保存和更新的基础 B.用户从私有仓库下载镜像时,需要在仓库名称前指定完整的注册服务器地址 C.可以通过命令docker info 0b8d572d1c7d(镜像ID)查看镜像详细信息

D.可以使用docker tag命令为本地镜像添加新的标签 4.本地有一镜像httpd:new,其ID为2d1935fb3ka0,下列可成功删除该镜像的命令是 ()。 A.docker rm httpd:new B.docker rmi httpd:new C.docker rm 2d1935fb3ka0 D.docker image rm 2d1935fb3ka0 5.Docker镜像命令docker images执行后,结果内不包括的列是()。 A.C REATED B.T IME C.S IZE D.TAG 6.下列关于Docker容器说法正确的是()。 A.通过Dockerfile构建的镜像,由这些镜像启动的容器内应用都是在后台运行的 B.可以通过命令docker exec –it 容器ID /bin/bash 来进入容器内部 C.可以使用docker rm 容器ID 命令来删除一个正在运行中的容器 D.Docker的默认存储目录在/var/lib/docker 7.下列()命令执行后可以查看镜像ID为0b8d572d1c7d的详细信息。

Docker基础分享

Docker 分享 一、什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何影响。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。Docker 是PaaS 提供商dotCloud 开源的一个基于LXC的高级容器引擎,源代码托管在Github 上, 基于go语言并遵从Apache2.0协议开源。 二、为什么要用Docker Docker作为一种新兴的虚拟化方式,跟传统的虚拟化方式相比具有启动快、资源利用率高、系统开销小等众多的优势。具体来说在以下几个方面有较大优势: 1)更快速的交付和部署(Build once, Run anywhere) 2)更高效的虚拟化 3)更轻松的迁移和扩展 4)更简单的管理 VM技术和容器技术对比 普通虚拟机将整个操作系统运行在虚拟的硬件平台上,进而提供完整的运行环境供应用程序运行,而Docker则直接在宿主平台上加载运行应用程序.本质上他在底层使用LXC启动一个LinuxContainer,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等 三、Docker安装 官方网站上有各种环境下的安装指南,这里简要介绍下各个系统的安装步骤。 1)Window系统安装 目前只支持Win10 64位,Win7上我们通过Boot2Docker 来安装虚拟机和运行Docker.

Boot2Docker下载地址:https://https://www.doczj.com/doc/e42088473.html,/boot2docker/windows-installer/releases/latest 2)Ubuntu 系统安装 Docker 要求Ubuntu 系统的内核版本高于3.10 ,查看本页面的前提条件来验证你的Ubuntu 版本是否支持Docker。通过uname -r 命令查看你当前的内核版本 步骤如下: 1、获取最新版本的Docker 安装包:wget -qO- https://https://www.doczj.com/doc/e42088473.html,/ | sh 2、启动docker 后台服务:sudo service docker start 3、测试运行hello-world:docker run hello-world 3)CentOS系统安装 Docker 要求CentOS 系统的内核版本高于3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持Docker 。 Docker 软件包和依赖包已经包含在默认的CentOS-Extras 软件源里。可以使用yum -y install docker命令安装。 Docker命令结构图 四、镜像 Docker 镜像(Image)就是一个只读的模板,可以基于一个Image快速部署多个相同的容器。镜像相关命令: docker pull :从仓库获取所需镜像(如果不指定注册服务器仓库地址默认从Docker Hub) docker images:显示本地已有镜像

docker命令学习总结

查看docker 系统信息,包括镜像和容器数:docker info 查看docker版本信息:docker version 查看容器: 在线容器信息:docker ps 只显示容器的ID:docker ps -q 显示所有容器信息:docker ps -a 显示运行容器总文件大小:docker ps -s 显示最近创建的容器:docker ps -l 不截断输出:docker ps --no-trunc 镜像操作: 查看本地所有镜像:docker images #也可以用-q参数来只显示ID信息 查看本地镜像摘要信息(DIGEST列):docker images --digests 查看镜像完整信息:docker images --no-trunc 镜像搜索:docker search images_name ##--filter=stars=500 只输出stars>=500的镜像,这项也可以用"-s 500"来替代 ##--no-trunc 输出镜像完整DESCRIPTION信息 ##--automated 只输出automated build类型的镜像 镜像下载:docker pull images_name##-a 拉取所有tagged 镜像 镜像删除:docker rmi images_name or imageID##-f 强制删除(针对基于镜像有运行容器进程) 容器操作: 启动已经被停止的容器:docker start CONTAINER_ID or name 停止容器:docker stop CONTAINER_ID or name 重启容器:docker restart CONTAINER_ID or name 删除容器:docker rm CONTAINER_ID or name 查看容器日志:docker logs (-f) CONTAINER_ID or name #加上-f是动态实时显示 查看容器中运行的进程:docker top CONTAINER_ID or name # 使用镜像创建容器: docker run --name names -d image#容器重命名,并后台模式启动 docker run -it (-p out_port:in_port) image bash #交互模式启动,并在容器内执行bash命令进入容器:docker exec -it CONTAINER_ID or name /bin/bash 退出容器:exit 容器的导入和导出: 容器的导出:docker export CONTAINER_ID or names >newname.tar 例如:docker export my_ubuntu > /tmp/ubuntu.tar 将my_ubuntu的最新镜像打包为ubuntu.tar 容器导入(只能导成image):cat newname.tar|docker import - new_image_name 启动image成容器:docker run -t -i (-p out_port:in_port) new_image_name:latest /bin/bash 镜像的导入和导出: 镜像导出:docker save -o ubuntu.tar my_ubuntu:latest docker save > ubuntu.tar my_ubuntu:latest 镜像导入:docker load --input ubuntu.tar docker load < ubuntu.tar

Docker入门白皮书

《Docker入门白皮书》 中关村在线 https://www.doczj.com/doc/e42088473.html, 2015 年08 月

目录 目录 (1) 【一】从dotCloud到Docker——低调奢华有内涵 (2) 1、追根溯源:dotCloud (2) 2、Docker出世:从Docker0.1到Docker1.0 (2) 【二】如何定义Docker? (4) 1、镜像 (5) 2、容器 (5) 3、仓库 (5) 【三】Docker与虚拟化争锋 (6) 【四】Docker:我为什么与众不同 (8) 1、简化程序 (9) 2、避免选择恐惧症 (9) 3、节省开支 (9) 【五】统一标准,建立更有活力的生态系统 (10) 【六】企业对Docker是否认可?安全是关键! (11) 1、命名空间(Namespace) (12) 2、Docker程序本身的抗攻击性 (12) 3、加固内核安全性 (12) 【七】评说Docker (14) 附录一、Docker基本命令 (15) 附录二、Docker最新版(1.8)下载地址: (18)

写在前面:放在两年前,你不认识Docker情有可原。但如果现在你还这么说,不好意思,我只能说你OUT了。你最好马上get起来,因为有可能你们公司很快就会引入Docker。今天就和大家讨论讨论这个备受好评的应用,让我们来揭开他的真面目! 【一】从dotCloud到Docker——低调奢华有内涵 1、追根溯源:dotCloud 时间倒回到两年前,有一个名不见经传的小公司,他的名字叫做:dotCloud。dotCloud公司主要提供的是基于PaaS(Platform as a Service,平台及服务)平台为开发者或开发商提供技术服务,并提供的开发工具和技术框架。 初创企业总是艰难的,dotCloud也是一样。在IBM,亚马逊,谷歌等大公司的挤压下,dotCloud举步维艰。即使2011年拿到了1000万美元的融资,可和上述大公司比起来,也不过是杯水车薪。 随着开源的洪流袭来,在2013年dotCloud 的创始人,28岁的Solomon Hykes做了一个艰难的决定:将dotCloud的核心引擎开源!然而一旦这个基于LXC(Linux Container)技术的核心管理引擎开源,dotCloud公司就相当于走上了一条"不归路"。 可正是这个孤注一掷的举动,却带来了全球技术人员的热潮,众程序员惊呼:太方便了,太方便了。也正是这个决定,让所有的IT巨头也为之一颤。一个新的公司也随之出世,它就是:Docker。 2、Docker出世:从Docker0.1到Docker1.0 一个春秋,跨越了Docker的成名路。 在互联网时代,一夜成名早已不是什么新闻。Docker 这个技术公司,向我们证明了,成为一个"国际巨星",只需要一个月。2013年2月决定开源,到2013

非常详细的 Docker 学习笔记

阅读目录 ? 1.1 Docker 守护进程 ? 1.2 Docker 客户端 ? 1.3 Docker 内部 ? 1.4 libcontainer ? 1.5 命名空间「Namespaces」 ? 1.6 资源配额「cgroups」 ? 3.1 Search images ? 3.2 Pull images ? 3.3 Running an interactive shell ? 3.4 相关快捷键 ? 4.1 docker help ? 4.2 docker search ? 4.3 docker info ? 4.4 docker pull && docker push ? 4.5 docker images ? 4.6 docker rmi ? 4.7 docker run ? 4.8 docker start|stop|kill... ... ? 4.9 Docker 1.3 新增特性和命令 ? 4.10 Docker 1.5 新特性 ? 5.1 自动映射端口 ? 5.2 绑定端口到指定接口 ? 6.1 Docker 四种网络模式 ? 6.2 列出当前主机网桥 ? 6.3 查看当前docker0 ip ? 6.4 运行一个容器 ? 6.5 不同主机间容器通信 ?7.1 FROM ?7.2 MAINTAINER ?7.3 CMD ?7.4 EXPOSE ?7.5 ENV ?7.6 ADD ?7.7 COPY ?7.8 ENTRYPOINT ?7.9 VOLUME ?7.10 USER ?7.11 WORKDIR ?7.12 ONBUILD ?7.13 Dockerfile Examples

docker run命令详解

docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a -a, --attach=[] Attach to STDIN, STDOUT or STDERR 如果在执行run命令时没有指定-a,那么docker默认会挂载所有标准数据流,包括输入输出和错误。你可以特别指定挂载哪个标准流。 #docker run -a stdin -a stdout -i -t ubuntu:14.04 /bin/bash (只挂载标准输入输出) --add-host --add-host=[] Add a custom host-to-IP mapping (host:ip) 添加host-ip到容器的hosts文件 # docker run -it --add-host db:192.168.1.1 ubuntu:14.04 /bin/bash --blkio-weight --blkio-weight=0 Block IO (relative weight), between 10 and 1000 相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数: –device-read-bps:限制此设备上的读速度(bytes per second),单位可以是kb、mb

或者gb。 ●–device-read-iops:通过每秒读IO次数来限制指定设备的读速度。 ●–device-write-bps:限制此设备上的写速度(bytes per second),单位可以是kb、mb 或者gb。 ●–device-write-iops:通过每秒写IO次数来限制指定设备的写速度。 ●–blkio-weight:容器默认磁盘IO的加权值,有效值范围为10-100。 ●–blkio-weight-device:针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT 存储配额控制的相关参数,可以参考Red Hat文档中blkio这一章,了解它们的详细作用。 磁盘IO配额控制示例 blkio-weight 要使–blkio-weight生效,需要保证IO的调度算法为CFQ。可以使用下面的方式查看:root@ubuntu:~# cat /sys/block/sda/queue/scheduler noop [deadline] cfq 使用下面的命令创建两个–blkio-weight值不同的容器: docker run -ti –rm –blkio-weight 100 ubuntu:stress docker run -ti –rm –blkio-weight 1000 ubuntu:stress 在容器中同时执行下面的dd命令,进行测试: time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct 最终输出如下图所示: device-write-bps 使用下面的命令创建容器,并执行命令验证写速度的限制。 docker run -tid –name disk1 –device-write-bps /dev/sda:1mb ubuntu:stress 通过dd来验证写速度,输出如下图示:

相关主题
文本预览
相关文档 最新文档