linux运维、架构之路-Docker快速入门
一、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快速入门的更多相关文章
- linux运维架构师职业规划
1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...
- linux运维、架构之路-SaltStack快速入门
一.SaltStack介绍 SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Py ...
- Linux 运维入门到跑路书单推荐
一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
- 初学者怎么快速掌握Linux运维?
2018年里,Linux运维的职位数量和平均薪资水平仍然持续了去年的强劲增幅,比很多开发岗位涨的都快.从研究机构的数据来看,Linux职位数量和工资水平涨幅均在IT行业的前五之列,比去年的表现还要好一 ...
- Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!
Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...
- 如何快速成为一名Linux运维工程师
如今的互联网,绝大多数的网站.服务.游戏均是跑在Linux上面的,虽说Linux发行版众多,只要玩熟了一种发行版,了解了Linux精髓.基本架构.设计原理,其他都是触类旁通的,千万不要在选择哪一发行版 ...
随机推荐
- 【笔记】云主机当跳板,ssh tunnel远程登录树莓派
问题 想要在外网登录家中局域网的树莓派,家里的网络外网ip的会变,而且不适合对公网暴露端口.调研了一番,发现可以使用云主机当跳板,结合ssh隧道实现远程登录到局域网中的树莓派 关于ssh隧道的原理可以 ...
- IDEA无法导入HttpServlet包解决方法
1.maven项目 直接在pom.xml中添加对java servlet api的依赖即可,比较常用的一个servlet版本3.1.0的依赖如下: <!-- https://mvnreposit ...
- Alert弹出框处理
selenium的API提供了Alert类对alert弹出框的处理的方法,涉及到的方法有text,dismiss(),accept()和send_keys(),在javascript中主要有alert ...
- Java课堂疑问解答与思考5
一:运行 TestInherits.java 示例,观察输出,总结. TestInherits.java class Grandparent { public Grandparent() { Syst ...
- PHP5和PHP7引用对比(笔记)
php5在引入引用计数后,使用了refcount_gc来记录次数,同时使用is_ref_gc来记录是否是引用类型. 例如 $a = 'hello'; //$a->zval1(type=IS_ST ...
- mysql的my.sock不存在问题
因为是初步学习Linux,所以为了对其更加了解,没有使用yum对mysql进行安装,而是使用xftp6的方式上传然后解压安装 1.在安装过程中,好像如果不安装在usr/local目录下会存在不能启动的 ...
- 八、Zabbix-应用集、监控项
一.应用集 1.应用集一般配合监控项使用,它相当于多个同类型的监控项的分类目录 2.添加应用集 (1)配置—>模板—>需要调整的模板—>应用集 (2)添加应用集 (3) (4)查看应 ...
- 全新一台node节点加入到集群中
目录 前言 对新节点做解析 方法一 hosts 文件解析 方法二 bind 解析 测试 分发密钥对 推送 CA 证书 flanneld 部署 推送flanneld二进制命令 推送flanneld秘钥 ...
- tensorflow学习笔记七----------RNN
和神经网络不同的是,RNN中的数据批次之间是有相互联系的.输入的数据需要是要求序列化的. 1.将数据处理成序列化: 2.将一号数据传入到隐藏层进行处理,在传入到RNN中进行处理,RNN产生两个结果,一 ...
- NOI-LINUX
先把配置背过吧: (set-background-color "gray15")(set-foreground-color "gray")(global-lin ...