大家好,我是工藤学编程 🦉 | 大二在读 |
---|---|
作业侠系列最新文章😉 | Java实现聊天程序 |
一起备战ccf-csp与蓝桥杯系列最新文章🐷 | 一起备战蓝桥杯与CCF-CSP之大模拟炉石传说 |
一起刷算法与数据结构🐷 | 正在准备中 |
本文主要提供了docker的常用命令,以及dockerfile,docker-compose的使用
本文目录:
1.什么是docker
2.为什么要用?
3.Linux下安装docker
4.如何搜索docker镜像
5.配置阿里云镜像加速
6.什镜像与容器之间的关系
7.Docker容器的创建,查看,停止,重启等
8.commit构建自定义镜像
9.Dockerfile构建镜像实战
10.Dockerfile基础指令
11.Dockerfile构建JAVA网站镜像
12.安装docker-compose
13.Docker-Compose实用技能
什么是Dokcer?
百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任 何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口; 使用go语言编写,在LCX(linux容器)
基础上进行的封装 简单来说分三点:
1)就是可以快速部署启动应用
2)实现虚拟化,完整资源隔离
3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的 linux/Windows/unix环境下使用)
为什么要用?
1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就 可以直接启动运行
2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用 4、更好的资源隔离和共享
总结:
开箱即用,快速部署,可移植性强,环境隔离
Linux下安装docker
安装环境:Centos 7
安装条件:docker官方要求至少3.8以上,建议3.10以上
Docker 版本:
docker CE 社区版本
1.关闭防火墙:systemctl stop firewalld.service vi /etc/selinux/config
安装Docker Ce 社区版本:
2.安装wget命令(已经安装不用管):
下载阿里云docker社区版 yum源
2.1 cd /etc/yum.repos.d/
2.2 wget http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
3查看docker安装包:yum list | grep docker
4安装Docker Ce 社区版本:yum install -y docker-ce.x86_64
5设置开机启动:systemctl enable docker
6更新xfsprogs:yum -y update xfsprogs
7启动docker:systemctl start docker
8查看版本:docker version
9查看详细信息:docker info
如何搜索docker镜像
什么是镜像?
镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像
查看本地镜像:docker images
搜索镜像:docker search centos
搜索镜像并过滤是官方的: docker search --filter “is-official=true” centos
搜索镜像并过滤大于多少颗星星的:docker search --filter stars=10 centos
下载centos7镜像(指定版本):docker pull centos:7
修改本地镜像名字(小写):docker tag centos:7 mycentos:1
本地镜像的删除(也可以根据镜像ID):docker rmi centos:7
配置阿里云镜像加速
配置方法
docker配置阿里云镜像
配置地址
阿里云镜像加速器配置地址
镜像与容器之间的关系
一个镜像可以启动无数台容器(机器性能允许的情况下)
容器也容器之间的操作互不影响,处于隔离的环境
Docker容器的创建,查看,停止,重启等
- 构建容器:docker run -itd --name=mycentos centos:7
- -i :表示以交互模式运行容器(让容器的标准输入保持打开)
- -d:表示后台运行容器,并返回容器ID
- -t:为容器重新分配一个伪输入终端
- –name:为容器指定名称
- 查看本地所有的容器:docker ps -a
- 查看本地正在运行的容器:docker ps
- 停止容器:docker stop CONTAINER_ID / CONTAINER_NAME
- 一次性停止所有容器:docker stop $(docker ps -a -q)
- 启动容器:docker start CONTAINER_ID / CONTAINER_NAME
- 重启容器:docker restart CONTAINER_ID / CONTAINER_NAME
- 删除容器:docker rm CONTAINER_ID / CONTAINER_NAME
- 强制删除容器:docker rm -f CONTAINER_ID / CONTAINER_NAME
- 查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME
- 进入容器:docker exec -it CONTAINER_ID /bin/bash
commit构建自定义镜像
对容器的修改以及保存
简介:对容器的修改以及保存
启动并进入容器:docker run -it centos:7 /bin/bash
在/home 路径下创建xdclass文件夹:mkdir /home/xdclass
安装ifconfig命令:yum -y install net-tools
重启容器,查看容器的xdclass文件夹还在不在:docker restart 67862569d4f7
删除容器,再重新启动一个容器进入查看有没有xdclass文件夹:docker rm 67862569d4f7 && docker
run -it centos:7 /bin/bash
构建镜像:
docker commit CONTAINER_ID mycentos:v1
docker commit -a “c” -m “mkdir /home/cc” CONTAINER_ID mcentos:v1
-a:标注作者
-m:说明注释
查看详细信息:docker inspect CONTAINER_ID
启动容器:docker run -itd CONTAINER_ID /bin/bash
进入容器查看:docker exec -it CONTAINER_ID /bin/bash
Dockerfile构建镜像实战
- 编写dockerfile放入根目录下
- #this is a dockerfile (注释)
- FROM centos:7 *(基于哪个个原有镜像构建)
- MAINTAINER c 123456@qq.com (作者)
- RUN echo “正在构建镜像!!!” (run 就是执行一条指令)
- WORKDIR /home/cc(进入容器就会进入这个目录)
- RUN yum install -y net-tools
- 构建:docker build -t mycentos:v2 .
查看:docker images
Dockerfile基础指令
- FROM
基于哪个镜像- MAINTAINER
注明作者- COPY
复制文件进入镜像(只能用相对路径,不能用绝对路径)- ADD
复制文件进入镜像(假如文件是.tar.gz文件会解压)- WORKDIR:
指定工作目录,假如路径不存在会创建路径- ENV
设置环境变量- EXPOSE
暴露容器端口- RUN
在构建镜像的时候执行,作用于镜像层面- ENTRYPOINT
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条- CMD
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
容器启动后执行默认的命令或者参数,允许被修改
命令格式:
shell命令格式:RUN yum install -y net-tools
exec命令格式:RUN [ “yum”,“install” ,“-y” ,“net-tools”]
Dockerfile构建JAVA网站镜像
宿主机解压好jdk后:
进入到解压好的jdk中,执行以下命令:
- vi /etc/profile
然后在底部插入以下:
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
其中第一个需要设置为自己的jdk所在的位置,其他不用改变
设置好后,保存退出,执行:
source /etc/profile
查看是否配置成功执行:
java -versiondockerfile编写
FROM centos:7 ADD jdk-8u211-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
安装docker-compose
yum install epel-release
yum install python3-pip
pip3 install --upgrade pip
pip3 install docker-compose
这里会报错:ModuleNotFoundError: No module named ‘setuptools_rust’
解决方法:pip3 install -U pip setuptools
docker-compose --version
Docker-Compose实用技能
docker-compose.yml的三大部分:version,services,networks,最关键是services和networks两个部分
compose设置网络模式
compose使用端口映射
compose设置文件共享
compose管理多个容器
docker-compose.yml
都看到这里了,还不三连?