Docker技术

Docker技术

**目标:**操作一个tomcat镜像,实现容器化,宿主机挂载执行war包

内容:

  • 1、基本docker技术简介

docker:容器技术

k8s:对容器的编排管理

  • 2、docker与传统的vm对比

    • vm 几个G 几十G
    • docker mb
    • vm 一般几十秒 或者几分钟
    • docker 几秒 或者几十毫秒
    • 启动速度
    • 大小
  • 3、docker组成

    **镜像:**相当于python里面类的概念,是静态的,不能直接使用

    **容器:**是通过镜像创建的,相当于实例的概念,是动态的,可以访问的

    **仓库:**存放镜像的地方

    **docker宿主机:**你的docker安装在哪一个机器,那个机器就是宿主机

    • 1、镜像仓库
    • 2、镜像
    • 3、容器
  • 4、docker操作

1、静态IP设置

1、查看虚拟机的ip

 ifconfig

image.png

2、进入ip配置文件设置

 vi /etc/sysconfig/network-scripts/ifcfg-ens33

3、修改静态ip、NETMASK、GATEWAY

 BOOTPROTO=static
 NETMASK=255.255.255.0
 GATEWAY=192.168.32.2

NETMASK GATEWAY具体设置什么,根据自己VM虚拟机的设置来

image.png

image.png

4、复制一下到文件最后,保存退出 :wq

 DEVICE=ens33
 ONBOOT=yes
 # ZONE=public
 IPADDR=192.168.32.160
 NETMASK=255.255.255.0
 GATEWAY=192.168.32.2
 DNS1=8.8.8.8
 

5、最好设置后如下图

image.png

6、重启网卡服务

 systemctl restart network

7、使用xshell工具连接

2、docker进程相关操作

 root   sq
 
 #1- 查看docker 版本
 docker -v
 
 #2- 查看docker 命令
 docker --help
 
 #3- 查看docker 服务端与客户端版本详情
 docker version
 
 #4- 启动docker进程
 systemctl start docker
 
 #5- 关闭docker
 systemctl stop docker
 
 #6- 重启docker
 systemctl restart docker
 
 #7- 查看docker运行状态
 systemctl status docker
 
 #8- 关闭防火墙
 systemctl stop firewalld  #disable

2、镜像操作

 #镜像--容器的模板--打包好的---静态的概念--使用的时候请创建容器
 
 #需求:使用docker搭建一个tomcat/mysql/redis
 #操作流程:
  - 获取对应的镜像--docker pull  tomcat
   - 第一个使用官方的仓库地址
   - 自己的镜像仓库
  - 使用镜像创建容器
  - 运行容器
 
 
 #1- 查看镜像---本地的
 docker images
 
 #2- 搜索镜像--首先本地 --默认的地址
 docker search tomcat
 
 #3- 找到所有的镜像--拉取  pull
 docker pull tomcat #最新版本
 docker pull tomcat:7#最新版本
 
 docker images
 
 docker rmi 镜像id#删除镜像
 
 #4- 本地有了镜像--可以创建容器
 #根据tomcat镜像,创建一个myTomcat容器
 docker create --name=myTomcat tomcat#  只是创建,没有运行
 
 #5- 查看容器
 docker ps #查看在运行的容器
 docker ps -a#查看所有的容器
 #容器很多,筛选出你需要看的容器
 docker ps |grep tomcat
 
 #6- 运行容器
 docker start myTomcat #start 后面可以跟 容器的id(前2-3位) 或者 name
 
 #7- 停止容器
 docker stop myTomcat #start 后面可以跟 容器的id(前2-3位) 或者 name
 
 #8- 删除没有运行的容器
 docker rm 容器id或者名字
 
 #9- 删除在运行的容器
 docker rm -f 容器id或者名字
 
 #10- 删除所有的容器
 #先停止所有的容器
 docker stop $(docker ps -a -q)
 #删除
 docker rm $(docker ps -a -q)
 
 #删除所有镜像
 docker rmi $(docker images -q)
 

3、运行容器的一些操作

 #我需要搭建一个web项目---tomcat
 #1- 访问端口   你需要访问的是容器内部的端口
 #2- war项目文件这么传递给容器里的tomcat里webapps下
 #1- 查看docvker run 命令---创建并且启动容器
 docker run --help
 docker run 后面的参数
  -i #运行容器
  -t #容器启动后,进入命令行
  -v #目录映射--挂载
  -d #守护进程--后台运行
  -p #端口映射  -p 宿主机的端口:容器的端口  
      #如果容器里有tomcat  ,你本机的windows想访问:
   #docker tomcat 端口号是8080,需要在虚拟机映射一个端口   9099
   #windows才可以访问  http://虚拟机的ip:9099
 
 #2- 创建容器,并且进入命令行---进入容器
 docker run -di --name=mytomcat2 tomcat
 docker run -it --name=myTomcat tomcat /bin/bash
 
 #3- 退出
 exit #容器已经退出
 
 #4- 有没有一起启动方法,不退出容器
 #创建运行一个守护的容器
 docker run -id --name=myTomcat2 tomcat
 #进入
 docker exec -it myTomcat2 /bin/bash

**4、**宿主机与docker容器的文件传递

 #1- 在宿主机创建一个文件
 touch xt.txt
 #2- 把改文件复制到容器里去
 docker cp xt.txt myTomcat2:/
 #3- 进入根目标
 cd /
 #查看
 ls
 
 #1- 怎么从容器中的文件copy  到宿主机里
 touch abc.txt
 #2- 退出容器
 exit
 #3-
 docker cp myTomcat2:/abc.txt /root

5、访问tomcat

 #1-启动并且作为守护进程
 #-p 宿主机的端口:容器里应用的端口 8080
 #war挂载宿主机 -v  宿主机的路径:容器路径    路径会新建
 docker run -di --name=myTomcat -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
 
 http://虚拟机ip:9999
 #2- 把war包放到宿主机的挂载目录里 ,直接刷新浏览器就出现项目的页面
 
 #微服务 k8s  容器式的性能测试
 
 
 #启动容器时关联其他容器   mysql独立的容器(给下账号密码。默认是root)
 
 docker run -di --name=tomcat2 -p 8080:8080   --link mysql  --link redis  --link rabbitmq

#tomcat容器里的配置文件在 /usr/local/tomcat/conf/server.xml
docker  cp  a2:/usr/local/tomcat/conf/server.xml /root

3、扩展

1、镜像备份

 #把tomcat镜像打包成文件,
 docker save -o tomcat.tar tomcat
 #把tomcat.tar放到其他电脑,其他人变成镜像使用
 docker load -i tomcat.tar

**2、**时间同步问题

宿主机linux查看时间

 [root@localhost etc]# date
 2020年 12月 06日 星期日 04:38:43 CST
 

时区是对的,只是时间不对

安装ntp

 yum install  ntp  #安装ntp服务

同步阿里时间

 docker cp /etc/localtime ec327fc07985:/etc/localtime
 
 #抛异常
 Error response from daemon: Error processing tar file(exit status 1):invalid symlink"/usr/share/zoneinfo/UCT" -> "../usr/share/zoneinfo/Asia/Shanghai”
 
 #解决办法
 docker cp /usr/share/zoneinfo/Asis/shanghai 容器id:/etc/localtime
 
 #重启容器
 docker restart 容器id
 
 ntpdate  ntpl.aliyun.com

注意事项:

  • 可能网络会断开,请重新reboot下linux
  • 虚拟机的ip可能会改变

3、轻量级图形页面管理之portainer

portainer docker ui 页面的

dockerUI

1.查看portainer镜像

 [root@localhost ~]# docker search portainer

2.选择喜欢的portainer风格镜像,下载

 [root@localhost ~]# docker pull portainer/portainer

3.启动dockerui容器

 [root@localhost ~] docker run -di --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
 
 --restart=alawys  # 开机自启动

4、浏览器访问 http://你虚拟机的ip:9000, 设置一个密码即可,点击创建用户 密码要8位以上

5、我们搭建的是单机版,进入页面直接选择Local ,点击连接

4、docker logs命令

docker logs [options] 容器获取容器的日志。

名字默认值描述
–details显示提供给日志的额外细节
–follow或-f按日志输出
–since从某个时间开始显示,例如2013-01-02T13:23:37
–tailall从日志末尾多少行开始显示
–timestamps或-t显示时间戳
–until打印某个时间以前的日志,例如 2013-01-02T13:23:37

例如打印容器mytest应用后10行的内容

 docker logs -f --tail 10 a4dac74d48f7
 
 通过docker logs命令可以查看容器的日志。
 
 docker logs -f -t --tail 100 datacenter
 
 命令格式:
 
 $ docker logs [OPTIONS] CONTAINER
   Options:
         --details        显示更多的信息
     -f, --follow         跟踪实时日志
         --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
         --tail string    从日志末尾显示多少行日志, 默认是all
     -t, --timestamps     显示时间戳
         --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
 例子:
 
 查看指定时间后的日志,只显示最后100行:
 
 $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
 查看最近30分钟的日志:
 
 $ docker logs --since 30m CONTAINER_ID
 查看某时间之后的日志:
 
 $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
 查看某时间段日志:
 
 $ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
 

5、修改已存在docker容器的端口映射

查看容器的挂载目录

docker inspect 容器id | grep Mounts -A 20

修改已存在docker容器的端口映射

image.png

**
**

6、查看docker挂载目录

docker inspect -f"{{.Mounts}}" 容器id

7、设置容器开机启动

一些需要服务器开机运行docker进程的时候,就可以直接启动某一个容器

docker run -id --name=xintianTomcat  --restart always  tomcat

**
**

4、Docker相关操作

4.1、Docker安装

1.卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

 sudo yum remove  docker \
          docker-client \
          docker-client-latest \
          docker-common \
          docker-latest \
          docker-latest-logrotate \
          docker-logrotate \
          docker-engine

2.安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

 sudo  yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

使用以下命令来设置稳定的仓库。

阿里云

 sudo  yum-config-manager \
   --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

 sudo yum install docker-ce docker-ce-cli containerd.io

一直输入y回车即可。

4.启动docker

systemctl start docker 设置开机启动docker systemctl enable docker

4.2、docker加速

默认情况下,docker下载镜像是从官网下载,下载速度特别特别的慢。使用阿里云加速器可以提升获取Docker官方镜像的速度。

  1. 在指定目录创建文件(如已存在请忽略此步):

     vi /etc/docker/daemon.json
    
  2. 修改文件内容为:

     {
       "registry-mirrors": ["https://v2c6fjn8.mirror.aliyuncs.com"]
     }
    

    注意:此网址是从阿里云控制台复制过来的,每个登录用户都不一样。当然用上面的这个地址也可以。image.png

  3. 重启docker服务

     systemctl restart docker
    

创建镜像


 #技术方案  dockerfile  :add  copy  workdir
 #1- 创建docker文件
 vi waimai
 #2- 里面些指令
 FROM tomcat #从镜像仓库pull镜像
 COPY /usr/local/waimai.war  /usr/local/tomcat/webapps
 
 #3- 指令创建镜像
 docker build -f waimai -t waimai:v2
 
 #4- 镜像叫  waimai:v2
 
 #5- 创建容器
 docker create --name waimai2 waimai:v2

镜像怎么打出来

1- vi Dockerfile_tomcat
2- 在这个文件里写dockerfile语法
	FROM tomcat #从官方下载纯净版tomcat镜像
	COPY waimai.war /usr/local/webapps
3- 执行docker build -f Dockerfile_tomcat -t 镜像名:版本 

未联网,下载镜像打包文件

docker save -o xtTomcat.tar tomcat #镜像打包文件
docker load -i xtTomcat.tar  #解压 

如果容器已经被创建,怎么改相关配置?

在/var/lib/docker/containers文件中修改相关配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值