Docker
1.什么是虚拟化技术?
*含义:
所谓的虚拟化技术其实是一种资源管理技术,它可以将我们的计算机中的实体资源进行虚拟化。
*虚拟化技术:
种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等。
*目的:
就是为了提供我们计算机的使用率
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用
*常见的虚拟化的架构:
全虚化架构,os层虚拟化架构,硬件层虚拟化架构
*os层虚拟化架构注意:
1)os层虚拟化架构虚拟出来的操作系统需要和我们底层的操作系统共享系统内核
2)Docker是os层虚拟化架构的一个产品
3)硬件层虚拟化架构不依赖于系统内核,没有系统的操作系统Host os
*容器技术,容器的主要作用就是装东西,比如我们的数组,集合也是容器,我们可以使用数组,集合来存储我们的数据。
2.什么是Docker?
*docker含义:
1>docker是os层虚拟化架构的一种体系产品,os层虚拟机架构是虚拟出来的操作系统需要和宿主机中操作系统共享一个内核,docker容器的体积就相对比较小
2>docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
*docker的优势:
1、交付物标准化
1)Docker是软件工程领域的“标准化”交付组件,最恰到好处的类比是“集装箱”。
2)集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的标准化设计大大提高了物流体系的运行效率。
3)传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。
2、一次构建,多次交付
类似于集装箱的“一次装箱,多次运输”,Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。
3、应用隔离
集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。
小结:容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。
3.Docker中组件
a.客户端和服务器 c/s架构
b.镜像
镜像就是一组文件的集合,镜像是构建Docker的基石,其中包括了容器的文件系统结构与内容
c.注册中心
类似于maven仓库,在注册中心存储了很多的常用的镜像。
docker中的注册中心的地址是docker hub上,https://hub.docker.com/
d.容器
容器就是镜像的运行实例
镜像和容器之间的关系就类似于类和对象的关系:我们的容器的创建是需要通过镜像来进行创建。
4.Docker的安装操作
1.查看docker的安装包:
yum list installed | grep docker (| grep:管道命令)
2.删除docker安装包:
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
3.删除docker镜像:
rm -rf /var/lib/docker/
4.在次检测(查看docker的安装包)
5.安装docker:
1)centos中:
yum install docker
提示信息:
安装1软件包(+2依赖软件包)
总下载量:20M
安装大小:69M
Is this ok [y/d/N]:
输入y进行安装:y
2)ubuntu中:
sudo apt-get update 更新APT包所有资源
sudo apt-get install -y docker.io
6.检查Docker的版本:
docker -v
7.docker基本操作:
docker启动
systemctl start docker
docker启动状态
systemctl status docker
docker关闭
systemctl stop docker
docker重启
systemctl restart Docker
查看docker的概要信息
docker info
查看docker的帮助文档
docker -help
开机自启动:
systemctl enable docker
centos中出现错误时:
出现错误时,查看docker的启动状态(systemctl status docker),出现SELinux is not...的错误
解决方案:在docker里禁用selinux,编辑 vi /etc/sysconfig/docker -- selinux-enabled=false
重启docker,查看docker的启动状态, 出现 active(running)表示成功
5.Docker镜像的操作
列出镜像
docker images
搜索镜像
docker search 镜像名称 (搜索tomcat: docker search tomcat)
配置ustc镜像加速器
1)centos中:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] //可以换成自己的阿里云镜像加速器
}
重启docker: systemctl restart docker
2)ubuntu中:
vi /etc/docker/daemon.json 使用vi或者是gedit
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] //可以换成自己的阿里云镜像加速器
}
重启docker: systemctl restart docker
拉取镜像
docker pull 镜像名称
删除指定的镜像
docker rmi 镜像名称/镜像ID
删除所有的镜像
docker rmi `docker images -q`
注: 1)`` 中间做的字符可以被当做 linux 的 的命令
2)获取的所有镜像的 ID : `docker images -q`
6.Docker容器操作
参数信息:
CONTAINER ID 容器的 ID
IMAGE 创建容器时所使用的镜像
COMMAND 运行容器中的软件执行的命令
CREATED 容器的创建时间
STATUS 容器的状态: UP 表示运行状态 Exited 表示关闭状态
PORTS 宿主机端口和容器中软件的端口的对应关系
NAMES 容器的名称
查看正在运行的容器:
docker ps
查看所有的容器(包含了正在运行的容器以及之前启动过的容器):
docker ps -a
查看最后一次运行的容器:
docker ps -l
查看停止的容器:
docker ps -f status=exited
容器的创建: docker create
docker run
创建容器常见参数:
参数名称 参数含义
-i 运行容器。
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去,即分配一个伪终端。
-d 在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行
,这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)
,可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
创建交互式容器:
特点:当我们退出容器以后,容器就关闭了
docker run -it --name=mycentos1 centos /bin/bash
{
docker run:创建命令
-it:运行容器,进入命令行
--name=mycentos1:给容器起名字
centos:镜像名称
/bin/bash:命令解析
}
创建守护式容器:
特点:即使我们退出容器以后,容器还是处于运行状态,以后台的方式运行的
docker run -di --name=mycentos2 centos
使用exit退出容器:
exit
登录进入到容器:
docker exec -it container_name (container_id) /bin/bash
关闭容器:
docker stop $CONTAINER_NAME/ID
启动已经关闭的容器:
docker start $CONTAINER_NAME/ID
删除容器:
docker rm 容器名称
删除所有容器
docker rm `docker ps -a`
拷贝
docker cp 1.txt mycentos1:/home
docker cp mycentos1:/home/2.txt /home
共享
docker run -di -v /home/a:/home/ --name=mycentos2 --privileged=true centos:7
7.Docker安装mysql:
docker pull mysql
docker run -di --name=mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:5.6
docker exec -i -t mysql2 /bin/bash
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
默认没有放开root的远程登陆权限:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
alter user 'root'@'%' identified with mysql_native_password by 'root';
查看ip
docker inspect mysql_easybuy ;
只看ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql_easybuy
8.需求:不能连网的机器怎么下载镜像
容器保存为镜像
docker commit mytomcat4(镜像名) tomcat4(容器名)
镜像导入导出
cd /home
docker save -o mytomcat4.tar tomcat4
导出到/home 下了
拷贝到另一台机器上 :
scp ./tomcat.tar [email protected]:/home
docker images
docker load -i mytomcat4.tar
docker images
验证是否正确
docker run -i -d --name mytomcat3 -p 8083:8080 c85b208768ba
查看tomcat容器的ip地址
docker inspect mytomcat1
按(启动)顺序自动递增分配ip地址的
创建自定义网络
docker network create --subnet=172.172.1.1/16 docker-ice
docker network create -d bridge my-bridge-network
-d 指使用Dockerbridge(桥接)方式的网络,如果没有加默认的也是桥接网络
docker network ls 来查看已经创建好的网络
在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址
docker run -i -d --name=mytomcat1 --network=docker-ice --ip 172.172.1.1 docker.io/tomcat:7-jre7
docker exec -it mytomcat /bin/bash
9.安装oracle,并进行与windows系统交互
启动oracle服务
net start oracleservicexe
启动oracle监听器
lsnrctl start
创建oracle容器
docker run -d -p18080:8080 -p 1521:1521 --name=oracle11g 镜像名称
查找目录
which oracle
whereis oracle
登录:
sqlplus /nolog
默认用户名密码:system/oracle
windows操作系统中设置:
1.拷贝文件
instantclient_12_1
2.在instantclient_12_1\network\admin\tnsnames.ora中更改ip地址
myorcl=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST= 192.168.121.131)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
3.设置OCI位置:Prefences
Oracle --> Connection --> Oracle Home --> 选择instantclient_12_1位置
OCI library --> 选择oci.dll位置
4.环境变量
TNS_ADMIN:位置:D:\oracle\oracle-client\instantclient_12_1\network\admin
链接方式:
oci连接
java连接
查看容器映射地址:
cat /etc/hosts
esc命令模式
hjkl 左下上右
x:删除
a:追加
i:插入
cat:查看
进入 network/admin 修改 tnsnames.ora文件中的名称、listener.ora文件中的名称
更改 /etc/hosts 将容器对应的地址更改为liunx的IP地址
重启容器