实验2:Docker实验

一、实验目的  

1、了解Docker服务安装;

2、掌握Docker镜像操作。

二、实验内容

.Docker服务安装

Docker 支持以下的 UbuntuCentos 版本:

Ubuntu Precise 12.04 (LTS)

Ubuntu Trusty 14.04 (LTS)

Ubuntu Wily 15.10

Centos 7及以上

其他更新的版本……

前提条件

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

Docker 要求 UbuntuCentos 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 UbuntuCentos版本是否支持 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

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORYmysql,标签为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

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

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安装

查询并找到Docker Hub Microsoft SQL Server的介绍。

 

然后根据这个上docker拉取镜像

docker pull mcr.microsoft.com/mssql/server:2017-latest

查看镜像并允许此镜像

docker images

sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyPassWord123"  -p 1433:1433 --name sql1  -d mcr.microsoft.com/mssql/server:2017-latest

然后查看是否允许成功

Docker ps -a

出现下图这样既允许成功,显示UP(如果失败的话通过docker logs 容器名进行查看错误日志)

 

然后这里我们就配置了SQL Server,接下来我们实际进入容器内操作。

sudo docker exec -it sql1 "bash"

 

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "MyPassWord123"

然后现在就可以进行日常的数据库操作了,输入命令后执行Go结束

 

创建库

CREATE DATABASE TestDB

使用库、创建表

USE TestDB

 

CREATE TABLE Inventory (id INT, LastName NVARCHAR(50), FirstName NVARCHAR(50))

查询表

Select * from  Inventory

查询用户创建的表

select name from sysobjects where type = 'U'

系统表sysobjects保存的都是数据库对象,其中type表示各种对象的类型,具体包括:

  U = 用户表

  S = 系统表

  C = CHECK 约束

  D = 默认值或 DEFAULT 约束

  F = FOREIGN KEY 约束

  L = 日志

  FN = 标量函数

  IF = 内嵌表函数

  P = 存储过程

  PK = PRIMARY KEY 约束(类型是 K

  RF = 复制筛选存储过程

  TF = 表函数

  TR = 触发器

  UQ = UNIQUE 约束(类型是 K

  V = 视图

  X = 扩展存储过程及相关的对象信息。

其他配置:

1.更改sa的登录密码

sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd  -S localhost -U SA -P "MyPassWord123"  -Q 'ALTER LOGIN SA WITH PASSWORD="MyPassWord456"'

2.保留数据

将主机目录装载为数据卷

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=MyPassWord456' -p 1433:1433 -v  /var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

使用数据卷容器

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=MyPassWord456' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

3. 删除或退出容器

删除容器:docker rm 容器名

删除镜像:docker rmi 镜像名

退出容器;Ctrl+D

 

2.4 Oracle安装

1.查找oracle镜像

docker search oracle

2.拉取docker镜像并运行、进入

docker pull registry.aliyuncs.com/helowin/oracle_11g //拉取docker镜像

docker images //查看镜像是否下载成功

docker run -d -p 1521:1521 --name oracle registry.aliyuncs.com/helowin/oracle_11g //运行该镜像

docker exec -it oracle /bin/bash //进入容器

3.配置环境变量和修改账户密码

进入root账户su root,输入密码:helowin

编辑/etc/profile文件,并在文件的末尾添加下面内容

 

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

export ORACLE_SID=helowin

export PATH=$ORACLE_HOME/bin:$PATH

source /etc/profile  //使修改的生效

切换oracle用户:su oracle

使用sqlplus连接到oracle:sqlplus /nolog → connect /as sysdba

修改 sys system 的密码并且修改密码的有效时间为无限

alter user system identified by oracle;

alter user sys identified by oracle;

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

2.5 Redis安装

1.切换到root权限,安装redis镜像

$ su root

$ docker pull redis

2.运行容器

安装完成后,我们可以使用以下命令来运行 redis 容器:

$ docker run -itd --name redis-test -p 6379:6379 redis

参数说明:

-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。

最后我们可以通过 docker ps 命令查看容器的运行信息:

 

接着我们通过 redis-cli 连接测试使用 redis 服务。

$ docker exec -it redis-test /bin/bash

$ redis-cli

 

l 2.6 Mongo安装

1.拉取mongo镜像

docker pull mongo:4.4

2.创建mongo数据持久化目录

mkdir -p /docker_volume/mongodb/data、

3.运行容器

docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 –auth

 

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

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker能用来做的事情有:1、可以快速搭建开发环境;2、可以将运行环境和配置放在代码中并部署;3、可以使用docker-compose来模拟生产环境;4、进行自动测试;5、使用docker镜像进行自我部署等等。

posted on 2022-11-04 19:20  辰逸1  阅读(55)  评论(0编辑  收藏  举报