docker高级篇

docker高级篇

一.dockerfile解析

1.dockerfile是什么
dockerfile是用来构建docker镜像的文本文件,是有一条条构建镜像所需的指令和参数构成的脚本
2.dockerfile常用保留字指令
FROM #基础镜像,当前镜像是基于哪个镜像的,指定一个已经存在的镜像模板,第一条必须是from
MAINTAINER #镜像维护者的姓名和邮箱地址
RUN #容器构建是需要运行的命令
EXPOSE #当前容器对外暴露的端口号
WORKDIR #指定在创建容器后终端默认登录进来的目录
USER #指定镜像以什么样的的用户去执行
ENV #用来在构建镜像过程中设置环境变量
ADD #将宿主机的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY #拷贝文件和目录到镜像中
VOLUME #容器数据卷,用于数据保存和持久化工作
CMD #指定容器启动后要干的事
ENTRYPONIT #指定一个容器启动是要运行的命令
3.实例
#创建dockerfile文件
vim Dockerfile
FROM centos
MAINTAINER heber<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim
RUN yum -y install vim
#安装ifconfig
RUN yum -y install net-tools
#安装Java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#添加Java包
ADD Jdk-8u171-linux-x64.tar.gz /usr/local/java
#配置Java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:PATH
EXPOSE 8080
CMD echo $MYPATH
CMD echo 'success......ok'
CMD /bin/bash
4.构建
docker build  -t 镜像名字:tag .

二.docker网络

1.查看docker网络模式
docker network ls 
2.docker网络能干什么
容器间的互联和通信以及端口映射
3.网络模式
NETWORK ID     NAME      DRIVER    SCOPE
1677316bdb64   bridge    bridge    local
00245e67ea1c   host      host      local
0f92e90b63c4   none      null      local
bridge	#为每一个容器分配,设置ip,并将容器连接到docker0
host	#容器不会虚拟出自己的网卡,配置自己的ip,而是用宿主机的ip和端口
none	#容器有独立的network namespace ,但是并没有对其进行网络分配
container #共享一个ip

三.docker_compose容器编排

1.是什么
docker_compose是docker官方开源项目,负责实现对docker容器集群的快速编排,多服务管理工具
2.能干嘛
用来管理容器实例
compose允许用户通过一个单独的docker_compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目
3.去哪里下
#官网下载
https://docs.docker.com/compose/install
#安装
curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o usr/local/bin/docker-compose
#授权
chmod +x /usr/local/bin/docker-compose
#测试安装
docker-compose version
#卸载
rm -f /usr/local/bin/docker-compose
4.conpose核心概念
#一个文件
docker-compose.yml
#两大要素
服务	#一个个应用容器实例
工程	#由一组关联的应用容器组成的完整业务单元,在docker-compose.yml文件中定义
5.compose常用命令
docker-conpose -h #查看帮助
docker-conpose up #启动所有docker-compose服务
docker-conpose up -d #启动所有docker-compose服务并后台启动
docker-conpose down #停止并删除容器,网络,卷,镜像
docker-conpose exec yml里面的服务id #进入容器内部实例
docker-conpose ps #展示当前编排过的运行的所有容器
docker-conpose top #展示当前编排过的容器进程
docker-conpose logs yml容器id #查看容器输出日志
docker-conpose config #检查配置
docker-conpose config -q #检查配置,有问题的才输出
docker-conpose start #启动服务
docker-conpose restart #重启服务
docker-conpose stop #停止服务
6.conpose编排微服务
#编写docker-compose.yml
vim docker-conpose.yml
version:"3" #版本
servers:
 microSerice:
 image:heber_docker:1.8 #选择镜像
 container_name:ms01 #名字
 ports: #端口
  -"6001:6001"
 volumes: #容器数据卷
  - /app/microSerice:/data
 networks: #网卡
  - atguigu_net
 depends_no: #备注需要的依赖
  - redis
  - mysql
  
redis:
 image:redis:6.0.8 #选择镜像
 ports: #端口
  -"6379:6379"
 volumes: #容器数据卷
  - /app/redis/redis.conf:/etc/redis/redis.conf
  - /app/redis/data:/data
 networks: #网卡
  - atguigu_net
 command:redis-server /etc/redis/redis.conf
 
mysql:
 image:mysql:5.7 #选择镜像
 environment:
  MYSQL_ROOT_PASSWORD:"123456"
  MYSQL_ALLOW_EMPTY_PASSWORD:"no"
  MYSQL_DATABASE:"db2022"
  MYSQL_USER:"heber"
  MYSQL_PASSWORD:"heber123"
 ports: #端口
  -"3306:3306"
 volumes: #容器数据卷
  - /app/mysql/db:/var/lib/mysql
  - /app/mysql/conf/my.cnf:/etc/my.cnf
  - /app/mysql/init:/docker-entrypoint-initdb.d
 networks: #网卡
  - atguigu_net
 command:--default-authentication-plugin=mysql_native_password #解决外部无法访问
 
networks: #创建网卡
 atguigu_net
7.启动
#验证一下
docker-conpose config -q
#启动
docker-conpose up / docker-conpose up -d
8.停止
docker-conpose stop

四.docker_portainer

1.portainer是什么
是一款轻量级的应用,它提供了图形化界面,用于方便管理docker环境,包括单机环境和集群环境
2.安装
#官网
https://www.portainer.io/
#安装
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
3.访问
http://192.168.0.119:9000/
admin/admin123.

run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer


##### 3.访问

```bash
http://192.168.0.119:9000/
admin/admin123.

你可能感兴趣的:(docker,容器,linux)