Docker


docker工作目录:/var/lib/docker

安装

  1. 安装工具包yum install -y yum-utils
  2. 配置阿里云仓库yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 更新yum软件包索引yum makecache fast
  4. 安装dockeryum install docker-ce docker-ce-cli containerd.io
  5. 启动dockersystemctl start docker
  • 或者阿里云官网容器界面

卸载

  1. 卸载依赖yum remove docker-ce docker-ce-cli containerd.io
  2. 删除资源rm -rf /var/lib/docker

常用命令 及 配置阿里云镜像加速

版本信息docker version
系统信息docker info

删除资源rm -rf /var/lib/docker rm -rf /var/lib/containerd

配置阿里云镜像加速
阿里云官网->容器镜像服务->加速器

镜像命令

docker images

  • -q 只查看所有镜像id

docker search xxx 搜索镜像

  • docker search xxx --filter=STARS=3000搜索出来的镜像STARS大于3000

docker pull 下载镜像

  • docker pull mysql:5.7 指定版本下载

docker rmi 删除镜像

  • docker rmi -f 镜像id 镜像id 镜像id根据id删除镜像

容器命令

(有了镜像才可以创建容器)

docker run image 启动镜像

  • --name="Name" 给容器起名,区分容器
  • -d 后台方式运行
  • -i -t / -it 交互方式运行
  • -p 主机端口:映射端口 指定端口(常用)
  • -e 环境配置

docker run -it centos /bin/bash 启动并进入容器

exit 容器停止退出
Ctrl+p+q 容器不停止退出
docker ps 列出正在运行的容器
docker create 镜像 创建容器
docker rm 容器id 删除容器(不能删除正在运行的容器)
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止当前运行的容器
docker kill 容器id 强制停止当前容器

docker inspect 容器id 查看容器详细信息

run == create + start

常用其他命令

docker logs 查看日志
docker top 容器id 查看容器中进程信息
docker inspect 容器id 查看容器内部信息

docker exec -it 容器id /bin/bash 进入当前正在运行的容器(开启新的终端)
docker attach -it 容器id /bin/bash (进入正在执行的终端)

docker cp 容器id:/home/xxx /home 拷贝容器文件到主机上

与Nginx、Tomcat、ElasticSearch

Docker与Nginx
docker pull nginx 下载
docker run -d --name nginx01 -p 2333:80 nginx 启动(后台,别名:nginx01,端口2333->80)
docker exec -it nginx01 /bin/bash 进入nginx,交互式
只要开启阿里云的防火墙,不用开linux防火墙端口!!!

Docker与Tomcat
docker run -it --rm tomcat:9.0 启动(停止后自动删除)

Docker与ElasticSearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
十分耗内存!!!

可视化

  • Portainer :图像化界面管理工具
    docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer 安装并启动(阿里云开8088,linux开9000)
    docker run -d -p 8088:9000 portainer/portainer

  • Rancher

Docker镜像

轻量级、可执行的独立软件包。

所有应用,直接打包docker镜像,可以直接运行起来。

联合文件系统(UnionFS)
分层、轻量级、高性能的文件系统

镜像加载原理

分层理解

commit镜像

docker commit 容器Id 提交容器

  • -m=“提交的描述信息”
  • -a=“作者”

容器数据卷

容器持久化和同步操作。(在容器内新加文件,自动在主机中同步存储)
容器间也可以数据共享。

删除容器主机目录文件不丢失。(数据持久化)

使用数据卷
docker run -it -v 主机目录,容器内目录 挂载:-v

运行MySQL
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名和匿名挂载
-v 容器内路径
查看状态 docker volume
匿名挂载(容器内路径)docker run -d -p --name nginx01 -v /etc/nginx nginx
具名挂载(卷名:容器内路径)docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx nginx

卷的路径:/var/lib/docker/volumes

  • ro 只读
  • rw 可读可写

DockerFile:用来构建docker镜像的构建文件


dockerfile1:

FROM centos

VOLUME ["volume01", "volume02"]

CMD echo "----end-------"
CMD /bin/bash

新建镜像:docker build -f dockerfile1路径 -t 新镜像名:tag .


绑定镜像:docker run -it --name docker02 --volumes-from docker01 镜像名:tag
(docker01创建的数据同步到了docker02上(挂载))(镜像挂载镜像)

DockerFile

官方镜像是基础包,通常我们搭建自己的镜像。

  • DockerFile:构建文件,定义了一切的步骤,源代码
  • DockerImages:通过 DockerFile 构建生成的镜像,最终发布和运行的产品
  • Docker容器:容器就是镜像运行起来提供服务的

构建镜像步骤:

  1. 编写一个DockerFile文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像(DockerHub、阿里云镜像仓库)

注意:

  1. 每个保留关键字都必须是大写字母
  2. 执行从上到下顺序执行
  3. # 表示注释
  4. 每一个指令都会创建提交一个新的镜像层,并提交!

DockerFile文件指令:

FROM       # 基础镜像
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN        # 镜像构建的时候需要运行的命令
ADD        # 步骤: tomcat镜像,这个tomcat的压缩包!添加内容
WORKDIR	   # 镜像的工作目录
VOLUME     # 挂载的目录
EXPOST     # 暴露端口配置
CMD		   # 指定这个容器启动的时候要运行的命令,只有最后一个生效 
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD    # 当构建一个被继承 DockerFile 时运行ONBUILD指令。触发指令
COPY	   # 类似ADD,将文件拷贝到镜像中
ENV 	   # 构建的时候设置环境变量

构建自己的CentOS

DockerFile
----------------
docker build -f DockerFile文件 -t mycentos(镜像名):0.1(tag) .

构建自己的Tomcat

#DockerFile
FROM centos
MAINTAINER dongfang<xxxx@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk.tar.gz /usr/local
ADD tomcat.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local
WORK $MYPATH

ENV JAVA_HOME /usr/local/jdk #JAVA环境配置
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/tomcat
ENV CATALINA_BASH /usr/local/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/tomcat/bin/startup.sh && tail -F /url/local/tomcat/bin/logs/catalina.out

发布镜像到DockerHub
登录DockerHub:docker login -u xxx -p xxx
提交镜像:docker push 作者名/镜像名:tag
镜像改名:docker tag 镜像id 镜像名:tag 然后push

发布镜像到阿里云镜像服务
看官网

Docker 网络

每启动一个docker,分配一个IP,也多一个网卡

evth-pair
一对虚拟设备接口,成对出现,一段连着协议,一段彼此相连
它充当一个桥梁,连接各种虚拟网络设备
容器和容器之间可以ping通

容器互联 --link
通过服务名ping docker docker run -d -P --name tomcat02 --link tomcat01 tomcat

网络模式

  • bridge 桥接 docker run -d -P --name tomcat01 --net brige tomcat (默认)
  • none 不配置网络
  • host 和宿主机共享网络
  • container 容器网络互通

自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
--driver bridge 方式:桥接
--subnet 192.168.0.0/16子网地址
--gateway 192.168.0.1 网关

启动时通过:--net mynet 指定网络

网络连通

Docker 部署 Redis集群

创建网卡 docker network create redis --subnet xxx.xxx.xxx.xxx/16

SpringBoot与Docker

  1. 项目打包为jar,并移入主目录
  2. 添加Docker插件plugin
  3. 主目录新建Dockerfile文件
FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]
  1. 将jar包和Dockerfile文件移入linux
  2. 构建镜像 docker build -t 新镜像名 .
  3. 运行镜像 docker run -d -P --name 容器名 镜像名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值