学习linux、springboot
docker镜像好比于一个模板,可以通过这个模板创建多个容器。最终的服务运行或者项目的运行就是在容器中进行的。
docker利用容器技术来独立运行一个或一组应用,有启动、删除、停止容器等基本命令操作。可以将一个容器理解成一个简易的linux系统。
存放镜像的地方。分为公有仓库和私有仓库。
1.Linux基础
2.CentOS
3.Xshell——连接远程服务器进行操作
官网安装教程链接
1.sudo yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
2.yum install -y yum-utils
3.sudo yum-config-manager \
> --add-repo \
> http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.yum makecache fast
5.sudo yum install docker-ce docker-ce-cli containerd.io
6.systemctl start docker
7.docker version
8.docker run hello-world
- docker version
- docker info
- docker 命令 --help
- docker images #查看所有本地的主机上的镜像
- docker search #搜索镜像
- docker pull 镜像名[:tag] #下载镜像,如果不写tag,默认就是latest
- docker rmi -f 镜像id #删除指定的镜像
- docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
- dockers run [可选参数] image #新建容器并启动
可选参数:
--name=”Name” #容器名字,用来区分容器
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #随机指定端口
- dockers ps 命令 #查看当前运行的容器
-a #列出当前运行的容器+历史运行过的容器
-n=? #列出最近创建的n个容器
-q #只显示容器的编号
- 退出容器
exit #容器停止并退出
Ctrl+P+Q #容器不停止退出
- docker rm 容器id #删除容器
- docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
- docker run -d 镜像名 #后台启动容器
- docker logs #查看日志
- docker top 容器id #查看容器中的进程信息
- docker inspect #查看容器的元数据
- docker exec -it 容器id /bin/bash #进入容器后开启一个新的终端,可以在里面操作(常用)
- docker attach -it 容器id /bin/bash #进入容器正在运行的终端,不会启动新的进程
- docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机
- docker search nginx #搜索镜像
- docker pull nginx #下载镜像
- docker images #查看下载镜像
- docker run -d --name nginx01 -p 3344:80 nginx #启动容器
- docker ps #查看启动的容器
- curl localhost:3344 #在虚拟机运行测试
- docker exec -it nginx01 /bin/bash #进入容器
- docker pull tomcat:9.0
- docker run -d -p 3355:8080 --name tomcat01 tomcat
- 虚拟机ip:3355 #外网测试访问(404 )
- docker exec -it tomcat01 /bin/bash
#发现问题:linux命令少了,无webapp。 原因:阿里云的镜像的原因,默认是最小的镜像,所有不必要的都删除掉
解决:cp -r webapps.dist/* webapps
- docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.1 #下载并启动
- curl localhost:9200dos #测试是否成功
- docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e ES_JAVA_OPTS=”-Xms64m -Xmx512m” elasticsearch:7.17.1 #内存限制
- curl localhost:9200
官网教程链接
docker commit 提交容器称为镜像
docker commit -m=”提交的描述信息” -a=”作者” 容器id 目标镜像名:[TAG]
docker理念-将应用和环境打包成一个镜像
如果数据都在容器中,那么将容器删除,数据就会丢失。->数据持久化
容器之间有一个数据共享技术,docker产生的数据同步到本地,这就是卷技术。即目录的挂载,将容器内的目录挂载到linux上。
直接使用命令手动挂载 -v
docker run -it -v 主机目录:容器内目录
*测试
可通过 docker inspect 容器id 查看挂载是否成功
docker volume ls #查看所有的卷
区分是具名还是匿名还是指定路径挂载:
① 匿名:-v 容器内路径 (可加:ro或者:rw改读写权限)
② 具名:-v 卷名:容器内路径
③ 指定:-v /宿主机路径:容器内路径
DockerFile是用来构建docker镜像的构建文件,命令参数脚本,通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层。
DockerFile:构建文件,定义了一切的步骤,源代码。
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。
Docker容器:容器就是镜像运行起来提供服务器。
可以在生成镜像的时候指定数据挂载。
基础知识
① 每个保留关键字(指令)都必须是大写字母
② 从上到下的顺序执行
③ #表示注释
④ 每一个指令都会创建提交一个新的镜像层
构建步骤
① 编写一个dockerfile文件
② docker build 构建成为一个镜像
③ docker run 运行镜像
④ docker push 发布镜像(DockerHub、阿里云仓库)
DockerFile指令
① FROM——基础镜像,例如centos、ubuntu等,相当于一台基础电脑,一切从这里 开始构建
② MAINTAINER——镜像是谁写的,姓名+邮箱
③ RUN——镜像构建的时候需要运行的命令
④ ADD——构建镜像的时候需要添加其他镜像所做的步骤
⑤ WORKDIR——镜像的工作目录
⑥ VOLUME——挂载的目录,容器内目录
⑦ EXPOSE——暴露端口
⑧ CMD——指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
⑨ ENTRYPOINT——指定这个容器启动的时候要运行的命令,可以追加命令
⑩ ONBUILD——当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
⑪ COPY——类似于ADD,将文件拷贝到镜像中
⑫ ENV——构建的时候设置环境变量
测试——创建一个自己的centos
编写配置文件,即dockerfile
通过该配置文件构建一个镜像
docker build -f dockerfile文件路径 -t 镜像名[:tag]
遇到问题的解决方法:https://blog.csdn.net/qq_28174545/article/details/123347837
测试运行
Docker history 容器id 查看构建过程
通过启动docker-compose.yml文件然后一键启动所有服务。
docker compose的重要概念
服务(services):容器、应用
项目(project):一组关联的容器
docker compose安装步骤
官网教程
体验compose
官网教程
大致步骤:
写了一个应用,即app.py—>使用dockerfile将应用打包为镜像—>利用docker-compose文件定义整个服务所需要的环境—>启动compose项目
docker-compose.yml编写规则
官网教程
#三层
#版本
version:’’
#服务
services:
服务1:web
#服务配置 docker
images
bulid
network
......
服务2:
......
#其他配置 网络/卷、全局规则
volumes:
network:
configs:
官网教程
mkdir my_wordpress
cd my_wordpress
vim docker-compose.yml
docker-compose up
docker ps #查看是否启动成功
localhost:8000