一、Docker介绍

       Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。 
  Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。

二、Docker是什么?

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

三、Docker 的用途

1、提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
2、提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
3、组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

四、Docker改变了什么?

面向产品:产品交付
面向开发:简化环境配置
面向测试:多版本测试
面向运维:环境一致
面向架构:自动化扩容(微服务)

五、Docker安装

1、环境

[root@docker01 ~]# cat /etc/redhat-release
CentOS Linux release 7.2. (Core)
[root@docker01 ~]# uname -r
3.10.-.el7.x86_64
[root@docker01 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
[root@docker01 ~]# getenforce
Disabled

2、添加yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo

3、安装docker

Docker官网:http://www.docker.com/    
yum install docker-ce -y

4、启动docker并设置成开机启动 

systemctl start docker.service
systemctl enable docker.service
#查看docker进程是否正常#
[root@docker01 ~]# ps -ef|grep docker
root : ? :: /usr/bin/dockerd
root : ? :: docker-containerd --config /var/run/docker/containerd/containerd.toml
root : pts/ :: grep --color=auto docker

5、查看docker版本

[root@docker01 ~]# docker version
Client:
Version: 18.03.-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr ::
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm Server:
Engine:
Version: 18.03.-ce #docker1.8版本只能安装在CentOS7
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr ::
OS/Arch: linux/amd64
Experimental: false

如果做监控的话,可以使用 docker info

 六、Docker基础命令

1、拉取镜像

docker pull centos
docker pull docker
docker pull tomcat
docker pull java

2、查看当前镜像

[root@docker01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker latest 40c6c282d58f hours ago 133MB
tomcat latest df50c9d355cf days ago 463MB
centos latest 49f7960eb7e4 weeks ago 200MB
java latest d23bdf5b1b1b months ago 643MB

①导出镜像

docker save -o [镜像名称] [镜像]

[root@docker01 ~]# docker save -o centos.tar centos
[root@docker01 ~]# ls
anaconda-ks.cfg centos.tar
需要将docker导出为tar,后面为镜像名称

②导入镜像

[root@docker01 ~]#docker load --input centos.tar
#使用input导入
[root@docker01 ~]# docker load < nginx.tar #使用重定向导入

③删除镜像

docker镜像删除可以使用docker rmi 后面加上docker的ID 

3、搜索镜像

[root@docker01 ~]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 1909 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 51 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 49 [OK]
davidcaste/alpine-tomcat Apache Tomcat 7/8 using Oracle Java 7/8 with… 26 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 17 [OK]
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 16 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
tutum/tomcat Base docker image to run a Tomcat applicatio… 10
meirwa/spring-boot-tomcat-mysql-app a sample spring-boot app using tomcat and My… 9 [OK]
jeanblanchard/tomcat Minimal Docker image with Apache Tomcat 8
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 7 [OK]
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 3 [OK]
amd64/tomcat Apache Tomcat is an open source implementati… 2
maluuba/tomcat7-java8 Tomcat7 with java8. 2
fabric8/tomcat-8 Fabric8 Tomcat 8 Image 2 [OK]
camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
99taxis/tomcat7 Tomcat7 1 [OK]
primetoninc/tomcat Apache tomcat 8.5, 8.0, 7.0 1 [OK]
swisstopo/service-print-tomcat backend tomcat for service-print "the true, … 0
jelastic/tomcat 0
oobsri/tomcat8 Testing CI Jobs with different names. 0
trollin/tomcat 0
s390x/tomcat Apache Tomcat is an open source implementati… 0
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAGER… 0 [OK]
awscory/tomcat tomcat 0  

参数:

--automated   #只列出automated build类型的镜像
--no-trunc #显示完整的镜像描述
-s #列出收藏数不小于指定值的镜像 

4、启动一个容器并进入到容器查看系统版本

[root@docker01 ~]# docker run -i -t centos /bin/bash
[root@eccc3e4c6f27 /]# cat /etc/redhat-release
CentOS Linux release 7.5. (Core)
[root@docker01 ~]# docker run -it java java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

5、Docker exec

Docker exec 是docker 官方提供的技术
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d 在后台执行命令
-e 设置环境变量
-i 即使没有连接,也要保持STDIN打开
--privileged 给命令赋予扩展权限
-t 分配一个TTY
-u 设置用户名

6、Docker Create

#以前我们docker 都是用run,新的版本可以使用creare。
create #仅仅生成一个容器,但是不启动它
docker create #创建容器
--name #容器名称
-e #代表环境变量,docker的配置文件大部分写在环境变量中
-p #端口映射,映射容器中的3307到物理机的3307端口
docker start Name #启动容器
docker stop Name #停止容器

7、Docker ps

[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
511474a7d51c centos "/bin/bash" seconds ago Up seconds suspicious_vaughan

8、Docker rm

删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f [--force] #强制删除正在运行的容器
-l [--link] #删除指定的连接
-v [--volumes] #删除与容器关联的卷
例子
取出一个容器
这将删除链接中引用的容器 /redis。
$ docker rm /redis
/redis
删除--link在默认网桥上指定的链接
这将删除 默认网桥网络/webapp与/redis容器之间的基础链接,从而移除两个容器之间的所有网络通信。这--link与用户指定的网络一起使用时不适用。
$ docker rm --link /webapp/redis
/webapp/redis
强制删除正在运行的容器
该命令将强制删除正在运行的容器。
$ docker rm --force redis
redis
链接下引用的容器内的主进程redis将收到 SIGKILL,然后该容器将被删除。
删除所有停止的容器
$ docker rm $(docker ps -a -q)
该命令将删除所有停止的容器。该命令 docker ps -a -q将返回所有现有的容器ID并将它们传递给rm将删除它们的命令。任何正在运行的容器都不会被删除。
取出容器及其容量
$ docker rm -v redis
redis
该命令将删除容器及与其相关的任何卷。请注意,如果卷是使用名称指定的,则不会被删除。
取出容器并选择性地移除卷
$ docker create -v awesome:/foo -v /bar --name hello redis
hello
$ docker rm -v hello
在本例中,音量/foo将保持不变,但音量 /bar将被删除。同样的行为适用于继承的卷 --volumes-from

  

linux运维、架构之路-Docker快速入门的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. linux运维、架构之路-SaltStack快速入门

    一.SaltStack介绍        SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Py ...

  3. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  4. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  5. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  6. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  7. 初学者怎么快速掌握Linux运维?

    2018年里,Linux运维的职位数量和平均薪资水平仍然持续了去年的强劲增幅,比很多开发岗位涨的都快.从研究机构的数据来看,Linux职位数量和工资水平涨幅均在IT行业的前五之列,比去年的表现还要好一 ...

  8. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  9. 如何快速成为一名Linux运维工程师

    如今的互联网,绝大多数的网站.服务.游戏均是跑在Linux上面的,虽说Linux发行版众多,只要玩熟了一种发行版,了解了Linux精髓.基本架构.设计原理,其他都是触类旁通的,千万不要在选择哪一发行版 ...

随机推荐

  1. C#与Java覆盖问题

    C#继承类中如含有相同的方法,避免冲突使用new关键字.在不同对象中分别对应该方法.若使用override关键字则,基类中的方法被覆盖. 如需调用非覆盖的则使用base关键字. Java中的继承类方法 ...

  2. Java面试题集(86-115)

    Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏洞后已经显得江河日下,而Spring MVC ...

  3. ES6标准入门 第三章:变量的解构赋值

    解构赋值:从数组和对象中提取值,对变量进行赋值. 本质上,这种写法属于“匹配模式”:只要等号两边的模式相同,左边的变量就会被赋予对应的值. 1.数组的结解构赋值 基本用法 let [foo, [[ba ...

  4. database 学习

    ref : 什么是NoSQL,为什么要使用NoSQL?

  5. git关联github远程仓库的问题

    git关联github远程仓库的时候,报fatal: remote origin already exists. 导致这个问题原因可能是之前关联的时候关联错了,再次关联就不行了. 解决办法是: 1.将 ...

  6. Linux系统常用命令之top

    top - 06:58:37 up 7 days, 23:36, 2 users, load average: 0.00, 0.01, 0.05Tasks: 716 total, 1 running, ...

  7. 关于android工具链

    1 android sdk platform tools 同android platform交互的工具,包括adb.fastboot和systrace. 2 sdk build tools 用于bui ...

  8. java基础笔记(6)

    xml文件的写入 通过dom生成xml文件: package com.writexml; import java.io.File; import javax.xml.parsers.DocumentB ...

  9. Prometheus 2.14.0 新特性

    Prometheus 2.14.0 现在(2019.11.11)已经发布,在上个月的 2.13.0 之后又进行了一些修正和改进. 这次最大的新功能是基于 React 的新 UI,与现有 UI 大体相同 ...

  10. 使用form表单提交请求如何获取后台返回的数据?

    问题描述 一般的form表单提交是单向的:只能给服务器发送数据,但是无法获取服务器返回的数据,也就是无法读取HTTP应答包. 想要真正的半双工通讯一般需要使用Ajax, 但是Ajax对文件传输也很麻烦 ...