Docker
- 概述
- 一.配置环境并安装Docker
- 二.Docker的run的运行原理
- 三.Docker的工作原理
- 四.Docker的基本命令
- 五、在Docker上部署服务器容器
-
- 5.1部署并使用nginx(重要,非常难用!!!!)
-
- 5.1.1docker pull nginx命令下载Nginx(也可以不用pull,run就有pull的功能)
- 5.1.2docker run -d --name nginx01 -p:3344:80 nginx创建容器
- 5.1.3开启安全组端口给nginx01使用并在浏览器上测试是否能连通
- 5.1.4 docker exec -it nginx01 /bin/bash:进入到容器内部
- 5.1.5 安装测试工具(如上4.3)
- 5.1.6 vim etc/nginx/conf.d/default.conf简单介绍
- 5.1.6 vim etc/nginx/nginx.conf 的配置文件简单介绍
- 5.1.7 etc/nginx/conf.d/default.conf 来实现反向代理功能:
- 5.1.8 etc/nginx/conf.d/default.conf 来实现负载均衡功能:
- 5.2部署tomcat
- 六、配置Portainer可视化面板安装
- 七、容器数据卷
- 八、数据卷容器:多个容器共用同一个挂载(--volumes-from)
- 九、使用Dockerfile创建镜像并发布
-
- 9.1 dockerfile文件中的常见命令
-
-
- (1)FROM指令:获取基础镜像(重要)
- (2)MAINTAINER:生成作者信息
- (3) EXPOSE:端口使用的提示信息。没有实际作用,因为端口还是通过run -p来确定的。
- (4)COPY/ADD:把本地文件(或目录)复制进入镜像内部目录中
- (5) WORKDIR:在镜像内创建一个目录,之后所有指令的在镜像内都会是这个路径(原先默认是在根目录下运行)
- (6) ONBUILD:当这个镜像作为基础镜像时 ONBUILD就会生效。
- (7)CMD和ENTRYPOINT
- (8)RUN:相当于在容器内上运行shell指令,通常用来在容器内安装应用或软件包或其他环境等。
- (9)VOLUME:挂载
- 【问题解决1】因网络问题而报错=>关闭代理,重试一下
-
- 9.2创建镜像(构建dockerfile)。
- 9.3发布镜像
- 十、Docker 内的网络环境(docker network )
- 十二、springboot项目做成镜像
- 十三、docker-compose教程
- 镜像原理(没太懂)
概述
以下来自大佬的解释
Docker(基于go语言)从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。
【镜像Docker images】:可以理解为一个文件夹
一.配置环境并安装Docker
1.查看操作系统的版本(使用centos)
uname -a查看?
uname -r查看系统内核
cat /etc/os-release查看系统版本
2.卸载旧版本的Docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.下载并安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
4.配置阿里云的镜像仓库(国外太慢)
#默认是国外的仓库https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新软件包的索引
yum makecache fast
6.安装Docker社区版(docker-ce)
docker-ce是社区版 || docker-ee是企业版的
yum install docker-ce docker-ce-cli containerd.io
7.启动Docker并查看版本
systemctl start docker
docker version
8.运行hello-world测试
docker run hello-world
9.查看hello-world镜像是否存在
docker images
10.给阿里云镜像加速(非必要)
11.卸载docker(非必要)
1.卸载依赖 2.删除docker运行环境
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
二.Docker的run的运行原理
三.Docker的工作原理
。。。
Docker为什么比虚拟机快?
1.Docker有着更少的抽象层
2.Docker 是使用宿主的操作系统,直接运行在宿主的内核(没有自己的内核),但有自己的文件系统,且每个Docker的文件系统都相互隔离。
而虚拟机是重新导入一个操作系统
四.Docker的基本命令
【基本概念】
镜像与容器:镜像就是相当于是一个类,容器就相当于是类的实例
docker状态命令
1、docker的版本信息docker version
2、查看docker的状态systemctl status docker
3、启动dockersystemctl start docker
4、docker的系统信息,包括镜像和容器的数量docker info
5、查看docker相关的命令docker --help
4.1Docker的镜像命令
4.1.1查看命令内容(–help)
docker images --help:查看命令
4.1.2查看镜像(images)
docker images -a:查看所有的镜像
docker images -aq:查看所有的镜像id
docker history 镜像id:查看镜像的生成过程
4.1.2在docker hub中搜索可用镜像(search)
docker search:搜索镜像
docker search docker search mysql --filter=stars=3000
:条件搜索镜像
4.1.3下载镜像(pull)
docker pull mysql:不写版本默认是最高版
docker pull mysql:5.7:下载5.7版本的mysql
4.1.4删除或条件删除镜像(rmi)
docker rmi 2fe463762680:根据id删除镜像源(1.删除多个镜像可以通过空格来分离2.容器在运行时镜像是不能删除的)
docker rmi -f $(docker images -aq):复合语句,删除所有的镜像源
docker rmi -f $(docker images|grep hello |awk ‘{print $3}’)
-f使用强制删除,否则可能删除失败
docker images|grep hello是模糊查找所有存在hello的镜像
awk '{print $3}'输出第三个参数(即镜像id)
然后删除镜像名中含hello字段的镜像。
4.2 Docker的容器命令
4.2.1创建并启动一个新的容器(run)
docker run hello-world:会自动下载镜像并新建容器并启动(相当于pull+start)
【参数分析】:
1.docker run -d centos /bin/bash:以后台的方式启动容器(centos会1s后自动退出,nginx,tomcat不
2.docker run -it centos /bin/bash:启动并进入容器中
3.docker run -d --name nginx01 -p:3344:80 nginx从nginx镜像来以后台方式创建并运行一个名为nginx01的容器,且可以通过3344端口来访问容器的80端口。
4.2.2显示docker中的容器(ps)
注意当使用组合命令如-aq,-qs等需要考虑先后问题哦,如不能-fq,而要-qf。
docker ps:显示运行中的容器
docker ps -a:查看正在运行和运行过的容器
docker ps -n=3:查看正在运行和运行过的容器
docker ps -q:查看所有正在运行容器的id
docker ps -f status=exited查看所有停止运行的容器(f,filter)
4.2.3退出容器(exit)
exit:直接退出容器,返回主机
ctrl+p+q:直接返回主机(没有退出容器)
4.2.4删除容器(rm)
docker rm 容器id:根据id删除容器(若在运行则删除不了)
docker rm -f 容器id:根据id强制删除该容器
docker rm -f $(docker ps -aq):复合语句,删除所有容器
4.2.5启动或停止原有容器(start,restart和stop)
docker start 容器id:启动容器(不进入容器)
docker restart 容器id:重新启动容器
docker stop 容器id:停止容器
docker kill 容器id:强制停止容器
【常见问题1】为什么用
-d
启动centos容器之后会立马停掉,而用-it
就不会
因为Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,ping),就是会自动退出的。所以我们在使用run启动centos容器时要用it
,最好别用-d
【常见问题2】
4.2.6进入正在运行的容器
4.2.6.1进入容器的一个新终端(exec)
docker exec -it 8905d8db6989 /bin/bash:通过id(或容器名)进入容器后,开启一个新的终端
【常见问题1】为什么启动tomcat容器要用 /bin/bash .
4.2.6.2进入正在执行的终端(attach)
docker attach 8905d8db6989:进入容器的正在执行的终端(不开启新的终端)
4.2.7 修改容器名(rename)
docker rename oldname newname
4.2.8使用容器创建一个镜像(commit)
docker commit -a=“junjun” -m=“add junjun.txt” 47b3b330fbfc jtomcat:1.0
使用47b3b330fbfc容器来创建一个镜像jtomcat,版本是1.0
4.2.9 得知容器的系统环境
cat /etc/issue
4.2.10 复制容器内的文件夹到本地(如阿里云服务器)
docker container cp 87c9e21fd1a3:/t1 /其中87c9e21fd1a3是某容器的id。
4.3 Docker安装测试工具(非常重要)
- 在新建的容器中往往没有一些常用的测试工具,这需要我们自己下载安装。
- 直接安装是不行的,我们要先更新一下容器的apt-get指令才能安装我们需要的指令。
(1)更新apt-get
1.如果是完善centos容器的测试工具是用
yum
;如果是完善Ubuntu/debian,tomcat容器要使用apt-get
指令。 我们可以通过cat /etc/issue来知道我们容器的类型
apt-get update
(2)安装你需要的指令
1.安装ifconfig,netstat指令: apt-get install net-tools
2.安装ping指令: apt-get install -y iputils-ping
3.安装ip指令: apt-get install iproute2
4.安装telnet指令 apt-get install telnet:
5.安装ps指令 apt-get install -y procps:
6.安装vim指令apt-get install vim
4.4 Docker常用其他的命令
4.4.1查看日志(logs)
docker logs -f -t --tail 10 8905d8db6989:查看最近10条日志(使用ctrl+c退出编辑)
4.4.2查看容器中的进程信息(top)
docker top 8905d8db6989:查看id为8905d8db6989的容器中的进程信息
4.4.3查看镜像中的元数据(inspect)
docker inspect 8905d8db6989:查看id为8905d8db6989的容器中的元数据