博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux运维、架构之路-Docker快速入门
阅读量:5077 次
发布时间:2019-06-12

本文共 8628 字,大约阅读时间需要 28 分钟。

一、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.1511 (Core) [root@docker01 ~]# uname -r3.10.0-327.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.reposed -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.servicesystemctl enable docker.service#查看docker进程是否正常#[root@docker01 ~]# ps -ef|grep dockerroot       4376      1  0 14:16 ?        00:01:22 /usr/bin/dockerdroot       4380   4376  0 14:16 ?        00:00:14 docker-containerd --config /var/run/docker/containerd/containerd.tomlroot       5745   5696  0 18:28 pts/0    00:00:00 grep --color=auto docker

5、查看docker版本

[root@docker01 ~]# docker versionClient: Version:      18.03.1-ce API version:  1.37 Go version:   go1.9.5 Git commit:   9ee9f40 Built:        Thu Apr 26 07:20:16 2018 OS/Arch:      linux/amd64 Experimental: false Orchestrator: swarmServer: Engine:  Version:      18.03.1-ce #docker1.8版本只能安装在CentOS7  API version:  1.37 (minimum version 1.12)  Go version:   go1.9.5  Git commit:   9ee9f40  Built:        Thu Apr 26 07:23:58 2018  OS/Arch:      linux/amd64  Experimental: false

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

 六、Docker基础命令

1、拉取镜像

docker pull centosdocker pull dockerdocker pull tomcatdocker pull java

2、查看当前镜像

[root@docker01 ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEdocker              latest              40c6c282d58f        11 hours ago        133MBtomcat              latest              df50c9d355cf        6 days ago          463MBcentos              latest              49f7960eb7e4        4 weeks ago         200MBjava                latest              d23bdf5b1b1b        17 months ago       643MB

①导出镜像

docker save -o [镜像名称] [镜像][root@docker01 ~]# docker save -o centos.tar centos[root@docker01 ~]# lsanaconda-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 tomcatNAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDtomcat                                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.1804 (Core)
[root@docker01 ~]# docker run -it java java -versionopenjdk 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 psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES511474a7d51c        centos              "/bin/bash"         5 seconds ago       Up 3 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 redisredis链接下引用的容器内的主进程redis将收到 SIGKILL,然后该容器将被删除。删除所有停止的容器$ docker rm $(docker ps -a -q)该命令将删除所有停止的容器。该命令 docker ps -a -q将返回所有现有的容器ID并将它们传递给rm将删除它们的命令。任何正在运行的容器都不会被删除。取出容器及其容量$ docker rm -v redisredis该命令将删除容器及与其相关的任何卷。请注意,如果卷是使用名称指定的,则不会被删除。取出容器并选择性地移除卷$ docker create -v awesome:/foo -v /bar --name hello redishello$ docker rm -v hello在本例中,音量/foo将保持不变,但音量 /bar将被删除。同样的行为适用于继承的卷 --volumes-from

  

转载于:https://www.cnblogs.com/yanxinjiang/p/9260024.html

你可能感兴趣的文章
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
软件目录结构规范
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>