Docker:

特性:

1、以应用为中心

2、自动化构建

3、版本控制

4、组件重用

5、镜像共享

6、工具生态系统

具体后续学习

优势:

1、文件系统隔离

2、进程隔离

3、网络隔离

4、资源隔离和分组

为什么选择docker为服务载体?

1、高性能

2、轻量级

3、部署快

4、文件系统隔离

5、高灵活性

6、进程隔离

docker在测试领域的使用范围

docker的安装:

https://blog.csdn.net/qq_36892341/article/details/73918672

https://blog.csdn.net/fgf00/article/details/51893771

基本概念

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.
docker run -i -t sauloal/ubuntu14. /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 的命令

【Git+Docker】Docker初期学习认识和安装配置详解的更多相关文章

  1. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  2. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  3. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  4. ubuntu14.04 server ftp 服务安装配置详解

    ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...

  5. JDK10安装配置详解

    JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包:        地址:http://www.oracle.com/technetwork/java/javase/dow ...

  6. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  7. (转)使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 原文:https://www.cnblogs.com/liwei0526vip/p/6370103.html

  8. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  9. Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解

    随着图像识别和深度学习领域的迅猛发展,GPU时代即将来临.由于GPU处理深度学习算法的高效性,使得配置一台搭载有GPU的服务器变得尤为必要. 本文主要介绍在Ubuntu 16.04环境下如何配置Ten ...

随机推荐

  1. jdk源码剖析二: 对象内存布局、synchronized终极原理

    很多人一提到锁,自然第一个想到了synchronized,但一直不懂源码实现,现特地追踪到C++层来剥开synchronized的面纱. 网上的很多描述大都不全,让人看了不够爽,看完本章,你将彻底了解 ...

  2. slice.indices()/collections.Counter笔记

    关于slice.indices() >>> help(slice) Help on class slice in module builtins: class slice(objec ...

  3. elasticsearch _script 脚本排序

    具体脚本语法请自行搜索“Groovy”语法. { "from" : 0, "size" : 5, "query" : { "boo ...

  4. Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(3)

    Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(3) 优化lab1 1.创建工程,开启HLS 运行 ...

  5. Hiero中的Events机制

    The hiero.core.events module allows you to register method callbacks to respond to events sent by Hi ...

  6. VMware Workstation 安装 mac OS 时遇到 不可恢复错误: (vcpu-0)

    去客户机的安装目录,打开VMX文件, 比如你的客户机名字为OSX, 这个文件就是OSX.vmx,你将会看到有一个smc.present的参数:smc.present = "TRUE" ...

  7. Azure SQL 数据库仓库Data Warehouse (1) 入门

    <Windows Azure Platform 系列文章目录> 在之前的项目中遇到了客户使用SQL数据仓库的场景,在这里记录一下 1.什么是SQL 数据库仓库 (SQL DW) SQL D ...

  8. C# winForm中调用javascript文件中的方法

    目前有很多的SNS社区或类SNS的网站,例如开心.51.校内等,但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能,不过似乎海内支持,但是网上相关QQ的文章还不是很多 ...

  9. Git将本地库内容推送到远程

    本地库与远程库的交互 1 .将本地库的内容推送到远程库 A.创建一个本地仓库 $ mkdir gitdemo B.初始化本地仓库 $ git init C.项目根目录下创建 .gitignore 文件 ...

  10. virtualBox NAT模式,设置虚拟机可上网,宿主机可访问虚拟机的方法

    环境描述: 宿主机:windows Server 2008 64bit,IPV4地址,有网络. 宿主机上的主要软件环境: virtualBox 5.0.24 virtualBox中安装了CentOS ...