1、docker
1.docker
一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;
使用go语言编写,在LCX(linux容器)基础上进行的封装
简单来说分三点:
1)就是可以快速部署启动应用
2)实现虚拟化,完整资源隔离
3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的
linux/Windows/unix环境下使用)
为什么用:
1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就 可以直接启动运行
2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用
4、更好的资源隔离和共享
总结一句话:开箱即用,快速部署,可移植性强,环境隔离
2、Centos7安装docker
1.安装条件
docker EE 企业版本
docker CE 社区版本
docker官方要求至少3.8以上,建议3.10以上
uname -a --查看内核信息
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
2.安装wget
yum install -y wget
3.获取在线的docker版本
yum list | grep docker
这里安装社区版本,需要下载阿里的源
cd /etc/yum.repos.d/
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
https://www.cnblogs.com/hellxz/p/11044012.html --教程
4.安装社区版
yum list | grep docker
yum install -y docker-ce docker-ce-cli containerd.io --安装最新版
5.设置开机启动
systemctl enable docker
6.更新xfsprogs
yum -y update xfsprogs
7.启动docker
systemctl start docker
8.查看版本
docker version
8.查看详细信息
docker info
----卸载命令
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
rm /var/lib/docker/ -rf
3、镜像
1.镜像
模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
docker images --查看镜像
docker search 名称 ---搜索指定的镜像 docker search tomcat
docker search --filter "is-official=true" 名称 ---搜索指定官方镜像
docker search --filter stars=数量 名称 --搜索大于stars数量的镜像
docker pull 名称:版本 --下载镜像 docker pull centos:7
docker tag 名称:版本 新名称:版本 --修改镜像名称 docker tag centos:7 mycentos:7
docker rmi 名称:版本 ---删除镜像 docker rmi centos:7
4、阿里云镜像加速
登录阿里云--->控制台--->搜索容器镜像服务---->镜像加速
1.vi /etc/docker/daemon.json
2.复制阿里云代码
3.重启
systemctl daemon-reload
systemctl restart docker
5、容器
1.容器
容器是使用镜像创建的运行实例
一个镜像可以启动无数台容器(机器性能允许的情况下)
容器与容器之间的操作互不影响,处于隔离的环境,保证的平台的安全性。
docker run -itd --name=mycentos centos:7 --构建容器 自定义名称
-i :表示以交互模式运行容器(让容器的标准输入保持打开)
-d:表示后台运行容器,并返回容器ID
-t:为容器重新分配一个伪输入终端
查看本地所有的容器: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 rmi -f CONTAINER_ID / CONTAINER_NAME
查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME
进入容器:docker exec -it CONTAINER_ID /bin/bash
6、文件复制与挂载
1.宿主机复制文件到容器
docker cp 宿主机文件路径 [容器Name|容器ID]:/目录 ---- docker cp /opt/123.txt mycentos:/opt
2.容器复制文件到宿主机
docker cp [容器Name|容器ID]:/文件 宿主机文件路径 --- docker cp mycentos:/opt/456.txt /opt
3.挂载
docker run -itd -v 宿主机目录:容器目录 镜像ID ------ docker run -itd -v /opt/test/:/opt --name=mycentos2 centos:7
注意:挂载可以实现宿主机与容器之间数据共享,容器stop也可共享。
7、Commit构建自定义镜像
1.创建一个容器,比如在容器中安装了JDK等软件
docker commit -a "ldd" -m "自定义镜像" ee9314cc7161 mycentos:v1
-a:标注作者
-m:说明注释
ee9314cc7161 ---容器ID
mycentos:v1 ---自定义镜像的名称和版本
8、dockerFile构建自定义镜像
1.创建dockerfile文件
touch dockerfile
2.编辑dockerfile
# this is a dockerfile
FROM centos:7 ----镜像来源(基于哪个镜像制作)
MAINTAINER ldd ----备注
RUN echo "正在构建镜像!!!" ----执行命令
WORKDIR /home/ldd ----工作目录,构建容器后默认进入的工作目录,如果不存在会自动创建
COPY 123.txt /home/ldd ----复制文件到容器(通过自定义镜像构建的容器)指定目录
RUN yum install -y net-tool ----执行命令
3.docker build -t mycentos:v2 . ---在当前dockerfile同级目录中执行
4.docker images ----查看镜像是否构建成功
常用的Dockerfile指令
FROM 基于哪个镜像
MAINTAINER 注明作者
COPY 复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD 复制文件进入镜像(假如文件是.tar.gz文件会解压)
WORKDIR: 指定工作目录,假如路径不存在会创建路径
ENV 设置环境变量
EXPOSE 暴露容器端口
RUN 在构建镜像的时候执行,作用于镜像层面
ENTRYPOINT 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条 容器启动后执行默认的命令或者参数,允许被修改
注意:ENTRYPOINT优先级高于CMD
命令格式:
shell命令格式:RUN yum install -y net-tools
exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]
8、dockerFile实战
1.下载jdk tomcat压缩
2.dockerfile
vim dockefile
# this my create docker images ldd
FROM centos:7
COPY jdk-8u211-linux-x64.tar.gz /opt
RUN tar -xvf /opt/jdk-8u211-linux-x64.tar.gz -C /usr/local/
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk
ENV CLASSPATH=.:$JAVA_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
COPY apache-tomcat-8.5.35.tar.gz /opt
RUN tar -xvf /opt/apache-tomcat-8.5.35.tar.gz -C /usr/local/
RUN mv /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
EXPOSE 8080
3.构建自定义镜像
docker build -t mycentos:v1
4.构建容器
docker run -itd -p 8080:8080 -v /opt/test/:/usr/local/tomcat/webapps/ROOT --name=myRong mycentos:v1
--- -p 8080(宿主机端口号):8080(容器端口号) 映射端口好
--- -v 是挂载
5.进入容器,并启动tomcat
docker exec -it myRong /bin/bash
9、Dockerfile构建nginx镜像
1.上传nginx压缩包
2.dockerfile
FROM centos:7
ADD nginx-1.16.0.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80
3.shell脚本
#!/bin/bash
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/nginx-1.16.0
./configure --prefix=/usr/local/nginx && make && make instal
4.构建镜像
docker build -t mycentos:nginx .
5.构建容器
-- docker run -itd -p 80:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
docker run -itd -p 80:80 --name=myNginx mycentos:nginx --进入容器启动nginx
10、Dockerfile构建Redis镜像
1.上传Redis压缩包
2.dockerfile
FROM centos:7
ADD redis-4.0.9.tar.gz /usr/local/
COPY redis_install.sh /usr/local/
RUN sh /usr/local/redis_install.sh
EXPOSE 6379
3.redis_install.sh 脚本
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /usr/local/redis-4.0.9
make && make PREFIX=/usr/local/redis install
cp /usr/local/redis-4.0.9/redis.conf /usr/local/redis/bin/
4.构建镜像
docker build -t mycentos:redis .
5.构建容器
docker run -itd -p 6378:6379 --name=myRedis mycentos:redis
6.进入容器
docker exec -it 容器id /bin/bash
7.配置容器中redis.conf文件
daemonize yes ---改成yes 后台模式运行
protected-mode no ---改成no 保护模式
# bind 127.0.0.1 ---注释掉 只监听本机
xx、docker容器网络模式
1.查看docker容器网络模型
默认的三种网络模式:
bridge:桥接模式 --默认 只能通过映射端口去访问容器中的应用
host:主机模式
none:无网络模式
查看网络模式: docker network ls
来源:CSDN
作者:凯里欧文
链接:https://blog.csdn.net/qq_33274797/article/details/104746576