SpringBoot框架学习(八)——Docker

本文介绍Docker的基本概念,包括其作为容器引擎的特点与优势,并详细讲解Docker的安装过程及常用命令操作,如镜像和容器的管理等。

十二、Docker

1.简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
在这里插入图片描述
Docker支持将软件编译成一个镜像;然后 在镜像中各种软件做好配置,将镜像发布 出去,其他使用者可以直接使用这个镜像。 运行中的这个镜像称为容器,容器启动是 非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。

2.Docker核心概念

docker镜像(Images):Docker 镜像是用于创建Docker 容器的 模板。
docker容器(Container):容器是独立运行的一个或一组应用。
docker客户端(Client):客户端通过命令行或者其他工具使用 DockerAPI(https://docs.docker.com/reference/api/docker_remote_api) 与Docker 的守护进程通信
docker主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
docker仓库(Registry):Docker 仓库用来保存镜像,可以理解 为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

3.Docker的安装

直接在root用户 yum install docker即可(centos7)

4.Docker的基操

(1)镜像操作

<1>检索

我们可以在docker hub上检索镜像的详细信息,如镜像的TAG

[centos7@localhost ~]$ sudo docker search mysql
INDEX       NAME                                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                                                  MySQL is a widely used, open-source relati...   7960      [OK]       
docker.io   docker.io/mariadb                                                MariaDB is a community-developed fork of M...   2662      [OK]       
docker.io   docker.io/mysql/mysql-server                                     Optimized MySQL Server Docker images. Crea...   598                  [OK]
docker.io   docker.io/zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       176                  [OK]
docker.io   docker.io/hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          110                  
docker.io   docker.io/zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server ...   92                   [OK]
docker.io   docker.io/centurylink/mysql                                      Image containing mysql. Optimized to be li...   60                   [OK]
docker.io   docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          50                   [OK]
docker.io   docker.io/centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   50                   
docker.io   docker.io/mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. ...   41                   
docker.io   docker.io/tutum/mysql                                            Base docker image to run a MySQL database ...   31                   
docker.io   docker.io/bitnami/mysql                                          Bitnami MySQL Docker Image                      25                   [OK]
docker.io   docker.io/schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic back...   25                   [OK]
docker.io   docker.io/zabbix/zabbix-web-apache-mysql                         Zabbix frontend based on Apache web-server...   24                   [OK]
docker.io   docker.io/linuxserver/mysql                                      A Mysql container, brought to you by Linux...   20                   
docker.io   docker.io/zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        20                   [OK]
docker.io   docker.io/centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   13                   
docker.io   docker.io/circleci/mysql                                         MySQL is a widely used, open-source relati...   12                   
docker.io   docker.io/mysql/mysql-router                                     MySQL Router provides transparent routing ...   8                    
docker.io   docker.io/dsteinkopf/backup-all-mysql                            backup all DBs in a mysql server                6                    [OK]
docker.io   docker.io/openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 ima...   6                    
docker.io   docker.io/jelastic/mysql                                         An image of the MySQL database server main...   1                    
docker.io   docker.io/ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                    [OK]
docker.io   docker.io/cloudposse/mysql                                       Improved `mysql` service with support for ...   0                    [OK]
docker.io   docker.io/widdpim/mysql-client                                   Dockerized MySQL Client (5.7) including Cu...   0                    [OK]
<2>拉取(下载)

tag是可选的,tag表示标签,多为软件的版本,默认是latest

[centos7@localhost ~]$ sudo docker pull mysql
Using default tag: latest
Trying to pull repository docker.io/library/mysql ... 
latest: Pulling from docker.io/library/mysql
27833a3ba0a5: Pull complete 
864c283b3c4b: Pull complete 
cea281b2278b: Pull complete 
8f856c14f5af: Pull complete 
9c4f38c23b6f: Pull complete 
1b810e1751b3: Pull complete 
5479aaef3d30: Pull complete 
ded8fa2e1614: Pull complete 
636033ba4d2e: Pull complete 
902e6010661d: Pull complete 
dbe44d2bf055: Pull complete 
e906385f419d: Pull complete 
Digest: sha256:a7cf659a764732a27963429a87eccc8457e6d4af0ee9d5140a3b56e74986eed7
Status: Downloaded newer image for docker.io/mysql:latest
<3>查看已安装镜像
[centos7@localhost ~]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     latest              7bb2586065cd        2 days ago          477 MB
<4>删除镜像

将镜像对应的image id删除

docker rmi IMAGE ID

(2)容器操作

软件镜像(QQ 安装程序)----运行镜像----产生一个容器

<1>搜索镜像
[centos7@localhost ~]$ sudo docker search tomcat
<2>拉取镜像
[centos7@localhost ~]$ sudo docker pull tomcat
<3>根据镜像启动容器
[centos7@localhost ~]$ sudo docker run --name mytomcat -d tomcat:latest  
2967fa251bcd6b01d4aab31b86a98f0d024dd9a3be61513ac0a94640943d4f40
<4>查看正在运行的docker
[centos7@localhost ~]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2967fa251bcd        tomcat:latest       "catalina.sh run"   51 seconds ago      Up 49 seconds       8080/tcp            mytomcat

我们可以看到tomcat的默认端口号是8080,但是访问了localhost:8080无法访问,因为没有建立端口映射,所以无法访问容器的tomcat,所以要重新安装tomcat

<5>停掉容器
[centos7@localhost ~]$ sudo docker stop 2967fa251bcd        
2967fa251bcd
<6>删除容器
[centos7@localhost ~]$ sudo docker rm 2967fa251bcd
2967fa251bcd
<7>启动一个做了端口映射的容器
[centos7@localhost ~]$ sudo docker run -d -p 8888:8080 tomcat 
041f7f88220a98095cb0fa6edb17d7518609a2358e7c1b70cc6a998ca3f730a1

-d:后台运行
-p:将主机端口映射过来
8888:主机端口
8080:容器端口

<8>查看日志
[centos7@localhost ~]$ sudo docker logs 041f7f88220a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值