Docker常用知识

Docker常用知识

 

###################################################################
# Docker是什么 
# 1.是一个开源的应用容器引擎基于Go语言并遵从Apache2.0协议开源
# 2.可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,
#   然后发布到任何流行的Linux机器上,也可以实现虚拟化
# 3.容器是完全沙箱机制,互相之间不会有任何接口(类似iPhone的app)
#   更重要的是容器性能开销极低。
# 4.从17.03版本之后分为CE(Community Edition 社区版)
#   和EE(Enterprise Edition 企业版)
###################################################################
# Docker架构原理
#
# Docker三要素
#
# 1.镜像
# Docker镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat、
# mysql),也可以是一个系统(centos)。镜像可以用来创建Docker容器,一个
# 镜像可以创建很多容器。 
#      
# 2.容器
# Docker利用容器(Container)独立运行的一个或一组应用.容器是用镜像创建
# 的运行实例.它可以被启动,开始,停止,删除.每个容器都是相互隔离的,保证
# 安全的平台.可以把容器看做是一个简易版的linux环境(包括root用户环境,
# 进程空间,用户空间和网络空间等)和运行在其中的应用程序,容器的定义和
# 镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一
# 层是可读可写的。
#
# 3.仓库
# 是集中存放镜像文件的场所,类似GitHub存放代码一样,只不过Docker Hub是
# 由来存镜像(image)的。仓库和仓库注册服务器是有区别的.仓库注册服务器
# 上往往存放着多个仓库,每个仓库又包含了多个镜像,每个镜像有不同的标签.
# 仓库分为公开仓库和私有仓库两种形式
# 
# 容器与镜像的关系类似于面向对象编程中的对象与类
# Docker	面向对象
# 容器      对象
###################################################################
# Docker有什么用
# 
# 1.简化环境搭建,提高开发生命周期效率
# 2.大大简化运维工作量
# 3.微服务利器
###################################################################
# Docker容器与虚拟机区别
# 
# 1.传统的虚拟机架构是:物理机 -> 宿主机操作系统 -> Hypervisor支持 -> 虚拟机操作系统 -> 应用程序
# 2、docker架构是:物理机 -> 宿主机操作系统 -> docker引擎 -> 应用程序
#   (这里面会包含镜像操作系统的文件,但是这些只是依赖环境,里面的内核根本就不会启动,/boot目录可以直接删除掉)
# 
#             Docke容器		           虚拟机(VM)         
# 操作系统:   与宿主共享OS             宿主机OS上运行宿主机OS
# 存储大小:   镜像小,便于存储与传输   镜像庞大(vmdk等)
# 运行性能:   几乎无额外性能损失       操作系统额外的cpu、内存消耗
# 移植性:     轻便、灵活、适用于Linux  笨重、与虚拟化技术耦合度高
# 硬件亲和性: 面向软件开发者           面向硬件运维者 
###################################################################
# Docker安装官方文档
# https://docs.docker.com/install/linux/docker-ce/centos/
###################################################################
# 工具准备
# Centos
# VMWare
#
# FinalSSH 
# 官网:http://www.hostbuf.com/
#
# Windows版下载地址:
# http://www.hostbuf.com/downloads/finalshell_install.exe
# Mac版,Linux版安装及教程:
# http://www.hostbuf.com/t/1059.html
###################################################################
# Docker安装步骤
#
# 1.切换到root用户
# 2.Docker要求CentOS 系统的内核版本高于3.10
uname -r 
# 3.使用root权限登录,确保yum包更新到最新
yum -y update
# 4.卸载旧版本
yum remove doceker docekr-common docker-selinux docker-engine
# 5.安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 6.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 7.安装最新版本的Docker
yum -y install docker-ce doceker-ce-cli containerd.io
# 8.启动Docker并设置开机启动
systemctl start docker
systemctl enable docker
# 9.验证Docker
docker version
# 10.Docker HelloWorld测试,第一次安装是下载,在运行一次能看到welcome
# 10.Docker HelloWorld测试,第一次安装是下载,在运行一次能看到welcome
docker run hello-world
docker run hello-world
###################################################################
# HelloWorld 运行原理
#
# 从左到右client客户端,Docker运行主机,远程仓库
# docker build,pull,run分别是构建,拉取,运行命令,后面再细讲
# 中间Docker主机里有Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例
# (实例是从右侧Images镜像实例化出来的)Images是存储在本地的镜像文件,比如Redis,Tomcat这些镜像文件
# 右侧是registry镜像仓库,默认远程镜像仓库 https://hub.docker.com/不过是国外主机,下载很慢,不稳定,
###################################################################
# Docker配置阿里云镜像仓库
#
# 查看镜像
docker images
# 下载
docker pull tomcat:8.5.47-jdk8-openjdk
# 配置阿里云镜像仓库
# 1.登录进入阿里云镜像服务中心,获取镜像地址
# 2.在 /etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
{
	"registry-mirrors":["你的镜像地址"]
}
# 3.重启
systemctl daemon-reload
systemctl restart docker
# 4.测试
docder info
###################################################################
# Docker 基本命令
#
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启Docker
systemctl restart docker
# 开启启动Docker
systemctl enable docker
# 查看Docker概要信息
docker info
# 查看docker帮助文件
docder --help
# 查看Docker版本信息
docker version
###################################################################
# Docker镜像命令
################################### 
# 列出本机所有镜像
#
# 可选参数 
#	-a 显示所有镜像
#	-q 只显示镜像ID
#	-qa 可以组合
#	--digests 显示镜像的摘要信息
#	--no-trunc 显示完整的镜像信息
docker images
################################### 
# 搜索镜像
#
# 可选参数
#	--no-trunc 显示完整的镜像信息
#	-s 列出收藏数不小于指定值的镜像
#	--automated	只列出Docker Hub自动构建类型的镜像
docker search tomcat
docker search -s 40 tomcat 
################################### 
# 下载镜像
#
docker pull nginx
################################### 
# 删除镜像
#
# 如果不写TAG,默认删除最新版本latest
# 有镜像生成的容器在运行时候,会报错,删除失败
# 我们需要加-f强制删除
docker rmi 镜像名称:[TAG]
# 删除多个
docder rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
# 删除全部
docker rmi -f $(docker images -qa)
###################################################################
# Docker容器操作基本命令
###################################
# 创建并启动容器
#
# 可选参数
#	-i 以交互模式运行容器,通常与-t同时使用
#	-t 为容器重新分配一个伪输入终端,通常与-i同时使用
# docker run -it --name 别名 镜像ID 
docker run -it --name mycentos01 67fa590cfclc
###################################
# 列出容器
#
# 可选参数
#	-a 显示所有的容器,包括未运行的
#	-f 根据条件过滤显示的内容
#   -format 指定返回值的模板文件
#   -l 显示最近创建的n个容器
#   -n 列出最近新建的n个容器
#   --no-trunc 不截断输出
#   -q 静默模式,只显示容器编号
#   -s 显示总的文件大小
docker ps 
docker ps -f status=exited
###################################
# 退出容器
#
# 容器停止退出
exit 
# 容器不停止退出
ctrl+P+Q
###################################
# 进入容器
#
# docker attach 容器ID or 容器名
docker attach 67fa590cfclc 
###################################
# 启动容器
#
# docker start 容器ID or 容器名 
docker start 67fa590cfclc 
###################################
# 重启容器
#
# docker restart 容器ID or 容器名
docker restart 67fa590cfclc 
###################################
# 停止容器
#
# docker stop 容器ID or 容器名
docker stop 67fa590cfclc
# 暴力删除,直接杀掉进程(不推荐)
docker kill 容器ID or 容器名
###################################
# 删除容器
#
docker rm 容器ID
# 强制删除
docker rm -f 容器ID
# 删除多个容器
docker rm -f 容器ID1 容器ID2
# 删除所有容器
docder rm -f $(docker ps -qa)
###################################################################
# Docker容器操作进阶命令
################################### 
# 守护方式创建并启动容器
# docder run -di --name 别名 镜像ID
docder run -di --name mycentos01 67fa590cfclc
################################### 
# 启动容器,并执行/bin/bash命令(跟上面一样的启动方式,因为默认启动就是/bin/bash)
docder run -di --name mycentos01 67fa590cfclc /bin/bash
################################### 
# 进入容器执行命令
# docker exec -it 容器名称 或者 容器ID 执行命令
docker exec -it 67fa590cfclc ls -l /sys
################################### 
# 查看容器日志
docker logs 67fa590cfclc
################################### 
# 查看容器进程
docker top 67fa590cfclc
################################### 
# 宿主机和容器之间文件拷贝
# docker copy 需要拷贝的文件或者目录 容器名称:容器目录
docker cp /home/dog.jpg 67fa590cfclc:/tmp/
# docker copy 容器名称:需要拷贝的文件或者目录 宿主机
docker cp 67fa590cfclc:/tmp/dog.jpg /home/data
###################################################################
# Docker容器宿主机端口映射
#
# 命令
# docker run -it -p 主机(宿主端口):容器端口
docker run -it -p 8888:8080 67fa590cfclc
# 默认端口32768
docker run -it -P 67fa590cfclc
# 有两种访问方式
# 	1.通过网页访问
http://192.168.1.3:8888 
#   2.命令行访问
curl http://localhost:8888
###################################################################
# Docker commit提交运行时容器成为镜像 
################################ 
# 1.运行容器
docker images
docker run -it --name mytomcatcc -p 8888:8080 67fa590cfclc
################
# 2.进入容器
docker ps
docker exec -it 67fa590cfclc /bin/bash
ls
cd webapps
cd ROOT
ls
vi index.jsp
rm -rf tomcat.png
##################
# 3.提交成为镜像(在外部执行)
docker commit -a='feng cao' -m 'tomcat without logo' 67fa590cfclc java1234/tomcat7:1.2
docker images
################
# 4.进入新的镜像
docker run -it --name mytomcatdd -p 9999:8080 67fa590cfclc
################
# 5.通过网页访问
http://192.168.1.3:8888
###################################################################
# Docker 推送镜像到hub服务器 
################################
# 1.https://hub.docker.com/ 注册下得到docker id和密码
################################
# 2.我们用docker login登录hub服务器
docker login
################################
# 3.推送
docker push java1234/tomcat7:1.1
###################################################################
# Docker 推送镜像到阿里云 
################################
# 1.进入 https//cr.console.aliyun.com 阿里云镜像控制台,需要注册,用户名就是你的淘宝或者支付宝账号名称,镜像控制台密码单独设置
# 2.进入控制台,我们先创建命名空间,再创建镜像
# 3.阿里云有详细的操作说明
################################
#	1.查看
		docker images
################################		
#	2.登录
		docker login --username=hi50030383@aliyun.com registry.cn-hangzhou.aliyun.com
################################		
#	3.打好一个引用		
		docker tag 67fa590cfclc registry.cn-hangzhou.aliyun.com/java1234/tomcat:1.2.1
		docker images
################################		
#   4.推送
		docker push registry.cn-hangzhou.aliyun.com/java1234/tomcat:1.2.1
################################		
#   5.拉取
		docker pull registry.cn-hangzhou.aliyun.com/java1234/tomcat:1.2.1
################################		
#   6.运行
		docker run -it --name mytomcat8989 -p 8888:8080 67fa590cfclc
###################################################################
# Docker容器目录挂载 
#################################
# 1.简介: 我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向自动同步
#################################
# 2.语法: docker run -it -v /宿主机目录:/容器目录 镜像名
#################################
# 3.多目录挂载: docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
#################################
# 4.注意:
#	如果你同步的是多级目录,可能会出现权限不足的提示	
#	这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要添加 --privileged=true 来解决挂载的目录没有权限的问题
#################################
# 5.挂载目录只读
#	docker run -it -v /宿主机目录:/容器目录:ro 镜像名	
#################################
# 6.操作
#   1.宿主机创建目录hData
#	2.启动
		docker run -it -v /home/hData:/cData 67fa590cfclc
#	3.进入容器目录cData
#	4.拷贝文件到hData并修改文件内容,测试是否已经目录映射		
#   5.宿主机创建目录hData2
#	6.启动多目录
		docker run -it -v /home/hData:/cData -v /home/hData2:/cData2 67fa590cfclc
#	7.拷贝文件到目录hData和hData2并修改文件内容,测试是否已经目录映射
#	8.挂载目录只读
		docker run -it -v /home/hData:/cData -v /home/hData2:/cData2:ro 67fa590cfclc
#   9.进入目录hData2并修改里面文件内容,测试是否文件只读
######################################################################################################################################
# 简单web测试项目准备		
# 1.一个连接数据库操作的小项目
# 2.在docker搞一个tomcat容器,以及mysql容器
##################################################################
# 	1.在docker上安装tomcat7和配置
#################################
#		第一步:运行容器
			docker run -d -p 8080:8080 67fa590cfclc
			docker exec -it 67fa590cfclc /bin/bash
			cd /usr/local/tomcat
			ls
			cd conf
			ls
			cd  ../
			cd webapps/
			ls	
#################################			
#		第二步:宿主机里home目录下新建tomcat目录,复制容器里conf,webapps到宿主机
			docker cp 67fa590cfclc:/user/local/tomcat/conf /home/tomcat/
			docker cp 67fa590cfclc:/user/local/tomcat/webapps /home/tomcat/
#################################
#		第三步:把容器里的tomcat里的webapp、logs、conf挂载到宿主机tomcat目录下,方便上传代码,同步持久化日志,以及方便配置tomcat;关掉容器,启动容器
			docker run -d --name tomcat7777 -p 80:8080 -v
			/home/tomcat/conf/:/usr/local/tomcat/conf/ -v
			/home/tomcat/webapps/:/usr/local/tomcat/webapps/ -v
			/home/tomcat/logs/:/usr/local/tomcat/logs/ 67fa590cfclc
#################################
#		第四步:配置tomcat server.xml以及同步上传war包
			<Context path="" docBase="/usr/local/tomcat/webapps/WebTest" debug="0" reloadable="true" />
#################################			
#		第五步:重启Docker
			docker stop 67fa590cfclc

 

  

 

posted on 2020-03-28 19:55  herisson_pan  阅读(13)  评论(0)    收藏  举报

导航