docker安装及高级应用

一:docker基础讲解

1、环境搭建

网络YUM源

/var/lib/dockerdocker目录

/var/lib/docker/containers容器目录

yum -y install docker

service docker start;chkconfig docker on

2、基础命令

docker version基本信息查看

docker info 查看系统(docker)层面信息,包括管理的images, containers数等

docker searchxxx搜索镜像

docker pullxxxx下载镜像(chug/ubuntu12.10x64)

Docker push  XXXX上传镜像

3、查看镜像

docker images: 列出images

docker images -a :列出所有的images(包含历史)

docker images --tree :显示镜像的所有层(layer)

docker rmi  <image ID>: 删除一个或多个image

4、使用镜像创建容器

docker run --name  wang chug/ubuntu12.10x64

--name容器命名(不用默认)

docker run --name daemon_dave -d  httpd /bin/sh -c "while true;do echo hello world; sleep 1; done"

-d放入后台,循环打印hello  world

交互式运行
docker run -i -t chug/ubuntu12.10x64  /bin/bash

5、再次启动容器

docker start/stop/restart <container> 开启/停止/重启container
 docker start [container_id] :
 docker attach [container_id] 进入运行容器实例(有时不行)

docker exec -it ID /bin/bash进入运行的docker后台

docker start -i <container> 启动一个container并进入交互模式(相当于先start,在attach)

6、端口映射

docker指令:docker run -p ip:hostPort:containerPort redis

使用-p参数会分配宿主机的端口映射到虚拟机。 
IP表示主机的IP地址。 
hostPort表示宿主机的端口。 
containerPort表示虚拟机的端口。

7、删除容器

docker rmXXXXX

docker rm `docker ps -a -q` :删除所有的container
docker ps -a -q | xargs docker rm :同上, 删除所有的containe

8、生成新的镜像

方法一:

docker commit <container-id> <image-name>命令可以把一个正在运行的容器变成一个新的镜像。    用户名/容器名

docker commit -m="新创建镜像的提交信息" --author="创建的作者信息"  ID 用户名/仓库名:webserver标签名

方法二:

mkdir /static_web    &&  cd !$  && touch Dockerfile

cat Dockerfile

FROM centos#原镜像

MAINTAINER MR wang "[email protected]"#作者,联系方式

RUN mkdir /wang#运行的命令(shell形式)

RUN echo 1234 > /wang/ab.txt

RUN [ "mkdir","/xiang" ]#运行的命令(exec形式)

EXPOSE 80#开放的端口

CMD [ “/common” ]#执行的脚本

ENV   name 2014-07-07#环境变量(可选)

docker build -t=‘wang/static_web:v1‘ .#构建镜像wang仓库名,sta...镜像名,v1标签名

docker build   --no-cache -t=‘wang/static_web:v1‘ . --no-cache确保构建过程不使用缓存(相当于重新构建)

9、持久化容器与镜像(写入文件)

export命令用于持久化容器

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

持久化镜像

Save命令用于持久化镜像

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

10、恢复(导入)

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

docker load < /tmp/save.tar镜像

11、镜像打标签

docker tag daa11948e23d load:tag

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

二:拓展

1、上传文件到容器

# docker cp   /home/vim_7.3.429-2ubuntu2_amd64.deb     cae3b75b7ede:/home

2、查看容器信息

docker ps :列出当前所有正在运行的container
   docker ps -l :列出最近一次启动的container
   docker ps -a :列出所有的container(包含历史,即运行过的container)
   docker ps -q :列出最近一次运行的container ID

docker ps -n  x 显示最后x个容器

docker inspect wang查看更多容器信息

docker inspect --format=‘{{ .HostConfig.LogConfig.Type}}‘ wang

--format 以什么格式查找.key键

docker inspect --format ‘{{ .HostConfig.LogConfig.Type}}‘ wang

多个容器查询

docker inspect --format  ‘{{ .HostConfig}}‘

‘{{ .HostConfig.LogConfig.Type}}‘wang  xiang

3、查看容器进程后端日志

docker logs -ft  daemon_dave-f(与tail -f一样)-t加时间daemon_dave容器标识符

docker logs --tail 10  daemon_dave最后10行

4、查看容器内进程

docker top daemon_dave

5、执行容器内命令(非交互)

docker exec  daemon_dave  ls /daemon_dave容器标识符

6、自动重启容器

docker run --restart=always --name daemon_dave -d  httpd /bin/sh -c "while true;do echo hello world; sleep 1; done"always无论退出代码是啥都重启

docker run --restart=on-failure:2  --name daemon_dave -d  httpd /bin/sh -c "while true;do echo hello world; sleep 1; done"只有退出代码非0,重启,最多2次

7、查看镜像构造过程

docker history bb896b831086

8、查看宿主机的映射端口

docker  ps       80/tcp, 0.0.0.0:32768->88/tcp

docker port b5d07ee6af90  880.0.0.0:32768

docker port redis6379/tcp -> 0.0.0.0:32770

9、不能再docker内执行systemctl解决

docker run -d -p 80  -e "container=docker"  --privileged=true -v /wang/xiao/:/var/www/html --name web wang/xiang /usr/sbin/init       启动

-v物理挂在到docker内

docker exec -it ID /bin/bash进入运行的docker后台

执行命令

三:项目实验

1、docker部署静态HTML网页

cat Dockerfile

FROM  docker.io/wellsie/centos7#源镜像

MAINTAINER MR wang "[email protected]3.com"#作者,联系方式

ENV REFRESHED_AT 2017-07-05#定义一个时间(变量形式)

RUN yum -y install httpd#装包

RUN mkdir /var/www/html -p#建目录

RUN mkdir /etc/httpd/conf -p

ADD httpd.conf  /etc/httpd/conf/#增加文件到docker

RUN systemctl enable httpd#启动服务

EXPOSE 80#docker服务接口启动80端口

docker build --no-cache -t=‘ssssssss/xxxxxxxx‘ .#建造镜像

docker run -d -p 80  --restart=always -e "container=docker"  --privileged=true -v /wang/xiao/:/var/www/html --name web  ssssssss/xxxxxxxx  /usr/sbin/init

#启动服务(-v挂载本地到docker)

docker exec -it ID  /bin/bash#进入容器

2、docker构建redis

Ubuntu确定源没问题

cat Dockerfile

FROM  wan/ubuntu

MAINTAINER MR wang "[email protected]"

ENV REFRESHED_AT 2017-07-05

RUN apt-get update

RUN apt-get -y install redis-server redis-tools

EXPOSE 6379

ENTRYPOINT ["/usr/bin/redis-server"]开启服务

CMD []

docker build  -t ubuntu/redis:v1 .

docker run -d -p 6379 --name redis ubuntu/redis:v1

docker port  redis

./redis-cli  -p portceshi

3、docker容器互联(共享多个)

docker run  -i -t     -d  ubuntu/redis:v1不开放端口

docker run -d -p 1234  -e "container=docker" --link redis:db  --privileged=true -v /wang/xiao/:/var/www/html --name webapppp  ssssssss/xxxxxxxx  /usr/sbin/init

链接redis,db别名

测试

[[email protected] cgi-bin]# vi pyth.py

#!/usr/bin/env python

#coding:utf-8

a=123

def application(environ, start_response):

start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])

#return "type(start_response)"

a=RedisServer(host=‘172.17.0.2‘,port=6379)

print a.error

a.run()

print a.error

return "a %s" % a.error

from redis import Redis

class RedisServer(object):

def __init__(self,host,port):

self.redis=Redis(host=host,port=port)

self.error=‘false‘

def run(self):

self.redis.set(‘name‘,‘wa‘)

if self.redis.get(‘name‘):

self.error=True

@property

def response(self):

return self.error

4、网卡桥接,docker内静态IP

centos7宿主机上建立Docker桥接物理网络过程

创建桥接网卡

文件br0建立桥接

使其docker使用br0

修改文件,使其docker接口为br0

~#:vim /etc/sysconfig/docker

#在OPTIONS=‘--selinux-enabled‘这行中修改为OPTIONS=‘--selinux-enabled -b=br0‘即让docker服务启动时使用br0网卡进行桥接

启动docker

service docker start

启动一个手动设置网络的容器
这里最好不要让docker自动获取ip,下次启动会有变化而且自动获取的ip可能会和物理网段中的ip冲突


1


~#:docker run -itd --net=none --name=test centos7 /bin/bash

下载pipework工具

git clone https://github.com/jpetazzo/pipework

cp ~/pipework/pipework /usr/local/bin/

为容器配置静态IP

pipework br0 test 192.168.184.11/[email protected]

四:备份

1、导入与导出

导出(导出容器快照到本地文件)

docker ps -a

docker export 7691a814370e > ubuntu.tar

导入(从容器快照文件中再导入为镜像)

cat ubuntu.tar |  docker import - test/ubuntu:v1.0

时间: 2024-10-14 04:40:02

docker安装及高级应用的相关文章

Win10系统使用Docker安装oracle并通过Navicat for oracle进行登录

一.安装Docker Linux系统可以直接采用命令进行Docker安装: Win7系统安装Dokcer实际通过Boot2Docker在Windows下安装一个VirtualBox来实现: Boot2Docker对于Win10系统的支持不太友好,好消息是现在有了专门为Win10准备的Docker安装包:docker-tollbox; docker-tollbox下载地址:https://www.docker.com/products/docker-tollbox DockerToolbox.ex

Docker Network Configuration 高级网络配置

Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the host machine. It randomly chooses an address and subnet from the private range defined by RFC 1918 that are not in use on the host machine, and assign

微服务SpringCloud+Docker入门到高级实战(教程详情)

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理解掌握并开发SpringCloud里面主流架构和组件的基础使用,还有部分源码原理的理解 3.掌握学习的技巧和解决问题的思路 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲

微服务SpringCloud+Docker入门到高级实战(目录)

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解 简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架 简介:讲解常用的微服务框架4

微服务SpringCloud+Docker入门到高级实战

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架简介:讲解常用的微服务框架4.微服务下

用Docker安装Web前端性能测试工具YellowLabTools

一.YellowLabTools概述 1.YellowLabTools简介 Yellow Lab Tools:是一款开源的Web前端性能测试工具,具有一些在其他工具上无法看到的独特功能,如页面加载时,JavaScript与DOM互动和其他程序代码验证问题. Yellow Lab Tools 偏向于一个发现不良实践的工具,会综合页面权重.请求数.DOM.错误的Javascript.错误的CSS等方面取得一个综合评分.并显示出在加载页面的过程中,DOM 是如何相互影响. 2.YellowLabToo

ubuntu下docker安装与版本升级

ubuntu 下docker安装与版本升级 一.系统环境 系统:ubuntu-server 14.04 x86_64 内核:3.13.0-32-generic 二.Docker安装 --------------------------------------------------------------------------------- 要想安装最新版本的Docker需要使用Docker源来安装 $ sudo su - root # apt-get -y installapt-transp

CentOS Docker 安装

CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位.系统内核版本为 2.6.32-431 或者更高版本. 使用 yum 安装

docker安装

CentOS 系列安装 Docker 实验环境: 开一台centos6.5 和centos7 内存4G ,网卡桥接 CentOS6.5: 在RedHat/CentOS环境下安装Docker.官方文档要求Linux kernel至少3.8以上,且docker只能运行在64位的系统中.由于RHEL6和CentOS6的内核版本为2.6,因此必须要先升级内核. 升级内核(记住一定要升级,要不然会出现很多莫名奇怪的问题,建议用yum安装) 1.yum安装带aufs模块的3.10内核 #cd /etc/yu