docker入门(一)

docker入门(一)

一、容器化技术

物理机时代->虚拟机时代->容器时代
  
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
  
docker pull hello-world

阿里云镜像加速:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://zt5c1k47.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、docker 常用命令

docker pull 镜像名<:tags> -从远程仓库抽取镜像
docker images  -查看本地镜像
docker run 镜像名<:tags> -创建容器,启动应用
docker ps -查看正在运行中的镜像
docker rm <-f> 容器id -删除容器
docker rmi <-f> 镜像名:<tags> -删除镜像

三、服务启停:

docker run -p 8000:8080 -d tomcat
8000 是宿主机需要开通的端口
8080 是docker内服务的端口
-d 代表后台运行

删除容器
docker rm -f containerId  == docker stop containerId ;docker rm containerId 
删除镜像
docker rmi tomcat<:tags>
docker rmi -f tomcat<:tags>

四、容器内部结构

1.在容器中执行命令
docker exec -it 容器id 命令
例子:docker exec -it xxxx /bin/bash
2.产看操作系统
cat /proc/version
3.镜像和容器存在宿主机的/var/lib/docker目录下

五、容器的生存周期

img

六、自定义镜像

Dockerfile 镜像描述文件
1.Dockerfile 是一个包含用于组合镜像的命令的文本文档
2.Docker通过读取Dockerfile中的指令按步自动生成镜像
3.docker build -t 机构/镜像名<:tags> Dockerfile目录

Dockerfile 文件例子:
  	FROM tomcat:latest   设置基准镜像
    MAINTAINER mashibing.com   设置当前镜像由某个机构或者人维护的
    WORKDIR /usr/local/tomcat/webapps  用于切换工作目录,如果不存在会自动添加
    ADD docker-web ./docker-web  将文件或者目录复制到镜像的某个目录下
    (第一个docker-web 是表示在和Dockerfile的同级目录,./docker-web指的是/usr/local/tomcat/webapps/docker-web)



七、Dockerfile基础命令

FROM centos 制作基准镜像(基于centos:lastest)
FROM scratch 不依赖任何基础镜像base image
例子:FROM tomcat:9.0.22-jdk8-openjdk
尽量使用官方提供的Base Image

MAINTAINER mashibing.com
LABEL version =1.0
LABEL description ="马士兵教育"
  
WORKDIR /usr/local
WORDDIR /usr/local/newdir 自动创建
尽量使用绝对路径
  
ADD hello / 将hello 目录复制到容器内的根目录下
ADD test.tar.gz / 添加根目录并解压
ADD 除了复制,还具备添加远程文件功能
  
ENV JAVA_HOME /usr/local/openjdk8  用JAVA_HOME 指代了后面的路径
RUN ${JAVA_HOME}/bin/java -jar test.jar
尽量使用环境常量,可提高程序维护箱

八、Dockerfile 运行指令

RUN:在build构建镜像时执行命令
ENTRYPOINT:容器启动时执行的命令
CMD:容器启动后执行默认的命令或参数
  
RUN-构建时运行
RUN yum install -y vim #Shell命令格式
RUN ["yum","install","-y","vim"] #EXec命令格式
  
ENTRYPOINT(入口点)用于在容器启动时执行命令
Dockerfile 中只有最后一个ENTRYPOINT会被执行
ENTRYPOINT["ps"] #推荐执行Exec格式
  
  
CMD用于设置默认执行的命令
如DOckerfile中出现多个CMD.则只有最后一个被执行
如容器启动时附加指令,则CMD被忽略
CMD["ps","-ef"] #推荐使用Exec格式
  
  

九、docker容器间通信

1.查看容器的明细
Docker inspect containerID
2.docker network ls
3.创建一个网络(可以实现容器之间双向联通)
  docker network create -d bridge my-bridge
4.将一个容器添加到到自定义网桥(网络)中
  docker network connect my-bridge web
  (web 是一个容器名称)

十、Volume容器间共享数据

方式一:通过设置-v挂载宿主机目录
格式:docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
方式二:通过--volumes-from共享容器内挂载点
创建共享容器:docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
共享容器挂载点:docker run --volumes-from webpage --name t1 -d tomcat

十一、docker-compose容器编排工具

docker-compose up -d
docker-compose down 
docker logs
docker logs -f 容器名
docker-compose logs 容器名

例子:

version: '3'
services: 
  zabbix_mysql:
    container_name: "zabbix_mysql"
    restart: "always"
    image: mysql:5.7
    command: mysqld  --character-set-server=utf8 --collation-server=utf8_unicode_ci
    ports:
      - "13306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "rootroot"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "123456"
      MYSQL_DATABASE: "zabbix"
    networks:
      - front-tier

  zabbix_server:
    container_name: "zabbix_server"
    restart: "always"
    image: zabbix/zabbix-server-mysql
    ports:
      - "10051:10051"
    depends_on:
      - zabbix_mysql
    links:
      - zabbix_mysql:mysql
    environment:
      DB_SERVER_PORT: 3306
      DB_SERVER_HOST: "mysql"
      MYSQL_USER: "zabbix"
      MYSQL_DATABASE: "zabbix"
      MYSQL_PASSWORD: "rootroot"
    networks:
      - front-tier

  zabbix_nginx_web:
    container_name: "zabbix_nginx_web"
    restart: "always"
    image: zabbix/zabbix-web-nginx-mysql
    ports:
      - "8443:443"
      - "8888:8080"
    depends_on:
      - zabbix_mysql
      - zabbix_server
    links:
      - zabbix_mysql:mysql
      - zabbix_server:zabbix_server
    environment:
      DB_SERVER_PORT: 3306
      DB_SERVER_HOST: "mysql"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "rootroot"
      MYSQL_DATABASE: "zabbix"
      ZBX_SERVER_HOST: "zabbix_server"
      ZBX_SERVER_PORT: 10051
      PHP_TZ: "Asia/Shanghai"
    networks:
      - front-tier

  zabbix-agent-a:
    image: zabbix/zabbix-agent
    ports:
      - "10050:10050"
    links: 
      - zabbix_server:zabbix_server
    container_name: zabbix-agent-a
    restart: always
    depends_on:
      - zabbix_server
    environment:
      - ZBX_HOSTNAME=zabbix-agent-a  
      - ZBX_SERVER_HOST=zabbix_server
      - ZBX_SERVER_PORT=10051
    networks:
      - front-tier

networks:
  front-tier:
    driver: bridge 


grant all on zabbix.* to 'zabbix'@'%' identified by 'rootroot' with grant option;
flush privileges;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值