Docker的安装与容器应⽤部署
⼀. Docker概述
Docker是⼀个开源的应⽤容器引擎,基于Go语⾔开发。Docker可以让开发者打包他们的应⽤,
1.1 Docker的应⽤场景:
web应⽤的⾃动化打包和发布
⾃动化测试的持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应⽤
Docker借鉴了标准集装箱的概念。
标准集装箱将货物运往世界各地,Docker将这个模型运⽤到⾃⼰的设计中,唯⼀不同的是:集装箱运输货物,⽽Docker运输软件。使⽤Docker可以实现开发⼈员的开发环境、测试⼈员的测试环境、运维⼈员的⽣产环境的⼀致性。
1.2 Docker与传统虚拟机的⽐较
1.2.1传统虚拟机技术
基于安装在主操作系统上的虚拟机管理系统(如:VirtualBox和VMWare等)
**结构:**基础设施–主操作系统–虚拟机管理系统–Virtual Machine–虚拟操作系统
1.2.2Docker容器
是在操作系统层⾯上实现虚拟化,直接复⽤本地主机的操作系统,⽽传统虚拟机则是在硬件层⾯实现虚拟化。
**结构:**基础设施–主操作系统–Docker
**特点:**docker启动速度⽐较快,占⽤体积较⼩;
**注意:**这⾥的docker不会像vm传统的虚拟系统⼀样在主系统上虚拟出来,⽽是⼀个与主系统并存的平级的操作系统;
1.3 Docker的组成部分
Docker守护进程:就是驻扎在基础设施上的并⾏的操作系统,是Docker服务器端进程,负责⽀撑Docker 容器的运⾏以及镜像的管理仓库Registry:⼀个存放多个镜像的仓库,可以理解为代码控制中的代码仓库
镜像Images:⽤于创建Docker容器的模板,镜像是基于联合⽂件系统的⼀个层式结构,由⼀系列指令⼀步步构建的系统指令。
容器:容器是独⽴运⾏的⼀个或⼀组应⽤,实质就是虚拟系统;
Docker客户端:Docker 客户端通过命令⾏或者其他⼯具使⽤ Docker API 与 Docker 的守护进程通信
2. Docker安装与启动
2.1 Docker的安装
Docker可以运⾏在多种操作系统上,本例使⽤CentOS7。
安装步骤:
1.更新yum源为ustc;
sudo yum update
2.安装docker;
#安装需要的安装包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
注意:yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖;
3.设置yum源
3.1更新docker的镜像源为ustc;
sudo yum-config-manager --add-repo mirrors.ustc.edu/dockerce/linux/po
3.2更新docker的镜像源为anliyun(可能失败);
sudo yum-config-manager --add-repo mirrors.aliyun/dockerce/linux/po
4.安装docker,-y代表输⼊界⾯确认
sudo yum install -y docker-ce
sudo yum install docker-ce
注意:出现输⼊的界⾯时,都要选择y;
5.使⽤docker命令操作docker
# 查看docker的版本
docker -v
# 启动
systemctl start docker
# 停⽌
systemctl stop docker
#查看docker启动状态
systemctl status docker
2.2. 镜像相关命令
2.2.1设置ustc镜像(安装docker必要步骤)
ustc是⽼牌的linux镜像服务提供者了。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之⼀就是不需要注册,是真正的公共服务。
安装镜像步骤:
1.编辑json⽂件
#在 /etc/docker/daemon.json下编辑(先创建,如果没有的话)
mkdir /etc/docker #创建⽂件夹
vi /etc/docker/daemon.json #创建并编辑⽂件
2.在json⽂件中编辑
{
"registry-mirrors":["docker.mirrors.ustc.edu"]
}
2.2.2 查看镜像
docker images
**注意:**查询结果列表中的各个字段的意思为:
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建⽇期
SIZE:镜像⽂件的⼤⼩
2.2.3 搜索镜像
#在⽹络中去查询所需要的镜像名
docker search 镜像名称
注意:在查询结果列表中的各项含义:
NAME:镜像名称
DESCRIPTION:镜像描述
STARS:⽤户评价,反应⼀个镜像的受欢迎程度
OFFICIAL:是否官⽅
AUTOMATED:⾃动构建,表⽰该镜像由Docker Hub⾃动构建流程创建的
2.2.4 拉取镜像
#从中央Docker仓库去下载镜像到本地,如果限制版本号,默认下载最新
docker pull 镜像名称
2.2.5 删除镜像
#可以按照镜像的id来删除
docker images
docker rmi 镜像id
#删除所有镜像
docker rmi $(docker images -q)
docker rmi `docker images -q`
2.3 Docker启动和停⽌命令
# 启动docker服务:
systemctl start docker
# 停⽌docker服务:
systemctl stop docker
# 重启docker服务:
systemctl restart docker
# 查看docker服务状态:
systemctl status docker
# 设置开机启动docker服务:
systemctl enable docke
注意:
拉取:docker pull 镜像名称:版本号(若不指定则会拉取最新的版本)
删除全部镜像:docker rmi ` docker images -q ` (慎⽤)
2.4 容器相关命令
容器,也是docker中的核⼼概念,容器是由镜像运⾏产⽣的运⾏实例。镜像和容器的关系,就如同Java语⾔中类和对象的关系。
2.4.1 查看容器
#查看正在运⾏的容器
docker ps
#查看所有容器使⽤命令
docker ps -a
2.4.2 创建并启动容器
可以基于已有的镜像来创建和启动容器,创建与启动容器使⽤命令
docker run 容器类型 --name=容器名镜像名 /bin/bash
参数说明:
-i:表⽰运⾏容器
-t:表⽰容器启动后会进⼊其命令⾏。加⼊这两个参数后,容器创建就能登录进去。即分配⼀个伪终端。 --name :为创建的容器命名。
-v:表⽰⽬录映射关系(前者是宿主机⽬录,后者是映射到宿主机上的⽬录),可以使⽤多个-v做多个⽬录或⽂件 映射。注意:最好做⽬录映射,在宿主机上做修改,然后共享到容器上
-d:在run后⾯加上-d参数,则会创建⼀个守护式容器在后台运⾏(这样创建容器后不会⾃动登录容器,如果只加-i -t 两个参数,创建后就会⾃动进去容器)
-p:表⽰端⼝映射,前者是宿主机端⼝,后者是容器内的映射端⼝。可以使⽤多个-p做多个端⼝映射
3. 创建并启动交互式容器
以交互式⽅式创建并启动容器,启动完成后,直接进⼊当前容器。使⽤exit命令退出容器。需要注意的是以此种⽅式 启动容器,如果退出容器,则容器会进⼊停⽌状态
操作步骤:
1.拉取镜像(容器是基于镜像运⾏);
docker pull centos7
2.创建并启动交互式容器,docker交互式容器(启动容器之后会直接进⼊容器的命令⾏终端,如果退出则容器停⽌运⾏)
docker run -it --name=mycentos7 centos:7 /bin/bash
⼩结:
# 查看容器
docker进入容器docker ps -a
# 创建并启动交互式容器mycentos7
docker run -it --name=mycentos7 centos:7 /bin/bash
启动交互式容器之后是直接进⼊容器终端;可以查看容器的⽂件结构;使⽤exit命令则会退出终端并且停⽌容器。
4. 创建并启动守护式容器
创建⼀个守护式容器;如果对于⼀个需要长期运⾏的容器来说,我们可以创建⼀个守护式容器。命令
如下(容器名称 不能重复):
操作步骤:
创建并启动docker容器,可以在后台运⾏;
# 创建并启动守护式容器mycentos2
docker run -di --name=mycentos2 centos:7
在创建交互式容器之后如果退出的话,容器处于停⽌状态,可以使⽤命令再次启动容器,使⽤命令进⼊容器并操作。
# 启动容器后再进⼊容器
docker exec -it mycentos2 /bin/bash
⼩结:
守护式容器在启动之后会⼀直在后台运⾏,即使进⼊容器之后执⾏exit命令也不会停⽌容器;
适⽤于需要长期运⾏容器的情况
5. 停⽌&拷贝&挂载&查看ip&删除容器
5.1 容器停⽌、启动
#停⽌正在运⾏的容器,通过容器名称或容器id
docker stop mycentos2
#启动已运⾏的容器,通过容器名称或容器id
docker start mycentos2
5.2 拷贝⽂件:容器与宿主机之间的⽂件互拷
将linux宿主机的⽂件拷贝到容器中
#创建⽂件
#拷贝到容器⽬录下,这就把⽂件拷贝到容器根⽬录了
docker mycentos2:/
#进⼊到mycentos2容器
docker exec -it mycentos2 /bin/bash
ll # 查看的根⽬录下的⽂件
exit#退出容器,从容器cp到宿主机
#在宿主机下执⾏,将根⽬录下的/复制到宿主机的root⽬录下
docker cp mycentos2:/ /root
#注意这⾥的在根⽬录与bin/bash⽆关
5.3 ⽬录挂载:将宿主机的⽬录映射到容器对于⽬录
在创建容器的时候,将宿主机的⽬录与容器内的⽬录进⾏映射,两者就可以共享该⽂件夹了,这样我们就可以通过修改宿主机某个⽬录的⽂件从⽽去影响容器。
# 创建linux宿主机器要挂载的⽬录
mkdir /usr/local/test
# 创建并启动容器mycentos3,并挂载linux中的/usr/local/test⽬录到容器的/usr/local/test;也就是在 linux中的/usr/local/test中操作相当于对容器相应⽬录操作docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
# 在linux下创建⽂件
touch /usr/local/
# 进⼊容器
docker exec -it mycentos3 /bin/bash
注意:共享的是多级的⽬录,可能会出现权限不⾜的提⽰。 这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的⽬录没有权限的问题。
5.4 查看容器IP
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-mNBLI9ZU-1603091450880)(G:/迅雷下载/springboot 课件/docker/笔记/assets/1559728403934.png)]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论