实验2:Docker实验

云计算技术与应用     石家庄铁道大学信息学院

 

实验2:Docker实验

本次实验属于验证型实验,通过本次实验学生将掌握以下内容:

1、了解Docker服务安装;

2、掌握Docker镜像操作。

 


[实验任务]:

一、Docker服务安装

https://www.bilibili.com/video/BV11L411g7U1?p=2&spm_id_from=pageDriver 参考教程

Docker 支持以下的 Ubuntu、Centos 版本:

  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Wily 15.10
  • Centos 7及以上
  • 其他更新的版本……

前提条件

Docker 要求 Ubuntu、Centos 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu、Centos版本是否支持 Docker。

通过 uname -r 命令查看你当前的内核版本

runoob@runoob:~$ uname -r

 


使用脚本安装 Docker

1、获取最新版本的 Docker 安装包

runoob@runoob:~$ wget -qO- https://get.docker.com/ | sh

 

输入当前用户的密码后,就会下载脚本并且安装Docker及依赖包。

 

 

安装完成后有个提示:

    If you would like to use Docker as a non-root user, you should now consider

    adding your user to the "docker" group with something like:

 

    sudo usermod -aG docker runoob

   Remember that you will have to log out and back in for this to take effect! 

当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker runoob 命令,然后重新登陆,否则会有如下报错

 

2、启动docker 后台服务

runoob@runoob:~$ sudo service docker start

 

3、测试运行hello-world

runoob@runoob:~$ docker run hello-world

 

 

二、Docker镜像操作

2.1Mysql安装

docker pull mysql

查找Docker Hub上的mysql镜像

runoob@runoob:/mysql$ docker search mysql

NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

mysql                    MySQL is a widely used, open-source relati...   2529      [OK]      

mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]

centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]

sameersbn/mysql                                                          36                   [OK]

google/mysql             MySQL server for Google Compute Engine          16                   [OK]

appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]

marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]

drupaldocker/mysql       MySQL for Drupal                                2                    [OK]

azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]

...

这里我们拉取官方的镜像,标签为5.6

runoob@runoob:~/mysql$ docker pull mysql:5.6

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.6的镜像。

runoob@runoob:~/mysql$ docker images |grep mysql

mysql               5.6                 2c0964ec182a        3 weeks ago         329

使用mysql镜像

运行容器

runoob@runoob:~/mysql$ docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e

runoob@runoob:~/mysql$

命令说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
  • -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=123456初始化 root 用户的密码。

查看容器启动情况

runoob@runoob:~/mysql$ docker ps

CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES

21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   mymysql

2.2 Tomcat安装

docker pull tomcat

查找Docker Hub上的tomcat镜像

runoob@runoob:~/tomcat$ docker search tomcat

NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

tomcat                     Apache Tomcat is an open source implementa...   744       [OK]      

dordoka/tomcat             Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba...   19                   [OK]

consol/tomcat-7.0          Tomcat 7.0.57, 8080, "admin/admin"              16                   [OK]

consol/tomcat-8.0          Tomcat 8.0.15, 8080, "admin/admin"              14                   [OK]

cloudesire/tomcat          Tomcat server, 6/7/8                            8                    [OK]

davidcaste/alpine-tomcat   Apache Tomcat 7/8 using Oracle Java 7/8 wi...   6                    [OK]

andreptb/tomcat            Debian Jessie based image with Apache Tomc...   4                    [OK]

kieker/tomcat                                                              2                    [OK]

fbrx/tomcat                Minimal Tomcat image based on Alpine Linux      2                    [OK]

jtech/tomcat               Latest Tomcat production distribution on l...   1                    [OK]

这里我们拉取官方的镜像

runoob@runoob:~/tomcat$ docker pull tomcat

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为tomcat的镜像。

runoob@runoob:~/tomcat$ docker images|grep tomcat

tomcat              latest              70f819d3d2d9        7 days ago          335.8 MB

使用tomcat镜像

运行容器

runoob@runoob:~/tomcat$ docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat  
acb33fcb4beb8d7f1ebace6f50f5fc204b1dbe9d524881267aa715c61cf75320
runoob@runoob:~/tomcat$

命令说明:

-p 8080:8080将容器的8080端口映射到主机的8080端口

-v $PWD/test:/usr/local/tomcat/webapps/test将主机中当前目录下的test挂载到容器的/test

查看容器启动情况

runoob@runoob:~/tomcat$ docker ps 
CONTAINER ID    IMAGE     COMMAND               ... PORTS                    NAMES
acb33fcb4beb    tomcat    "catalina.sh run"     ... 0.0.0.0:8080->8080/tcp   tomcat

通过浏览器访问

 

2.3 SqlServer安装

 

 

 

 

 

 

 

 

 

2.4 Oracle安装

 

 

 

 

 

2.5 Redis安装

 

 

 

 

 

 

2.6 Mongo安装

 

 

 

 

 

 

问题:Docker是什么?他可以用来做什么?

Docker 是一个开源的应用容器引擎

Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。

再通俗点说,我们使用Docker,只需要配置一次Docker容器上面的应用,就可以跨平台,跨服务器,实现应用程序跨平台间的无缝衔接

Docker实际上就相当于一个封闭的沙盒或者是集装箱,它可以把不同的应用全都放在它的集装箱里面,并且以后有需要的时候,可以直接把集装箱搬到其他平台或者服务器上,实现容器虚拟化技术,随用随搬

一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

 

Docker作用

   绝大部分应用,开发者都可以通过docker build创建镜像,通过docker push上传镜像,用户通过docker pull下载镜像,用docker run运行应用。用户不需要再去关心如何搭建环境,如何安装,如何解决不同发行版的库冲突,而且通常不会需要消耗更多的硬件资源,不会明显降低性能。这就是所说的标准化、集装箱的原因所在。

解决运行环境不一致所导致的问题。这样就不会产生“本地运行没问题,可一到服务器上就不行了”的情况

限定最大的cpu使用内存硬盘,这样就起到了隔离的作用,避免产生“一块代码产生死循环,把磁盘占满了,其它程序也挂了”的情况。

docker的标准化让快速扩展,弹性伸缩变得简单

 

posted @ 2022-12-23 16:39  zrswheart  阅读(244)  评论(0编辑  收藏  举报