实验2:Docker实验
一、实验目的
1、了解Docker服务安装;
2、掌握Docker镜像操作。
二、实验内容
一.Docker服务安装
Docker 支持以下的 Ubuntu、Centos 版本:
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 要求 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镜像操作
l 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
l 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
通过浏览器访问
l 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
l 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;
l 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镜像进行自我部署等等。