Docker学习

Docker 学习笔记

在这里插入图片描述

一、简介

概述

Docker 作为目前最流行的开源容器引擎,具有开箱即用、快速部署、资源隔离、可移植性强等特性,可以在短时间上手使用,实现容器化部署应用。

1、什么是Docker

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。2014年4月9日,Docker1.0发布
基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker是完整的一套容器管理系统
Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup、namespace、Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称为容器
早期版本基于LXC,从0.7以后开始去LXC,转为自行研发的libcontainer,从1.11版本开始,进一步演进为使用runC和containerd

2、镜像(image)

镜像好比一个模板,通过镜像来创建容器。
一个镜像可以创建N个容器
镜像是不可变的,不能修改里面的内容
镜像可分为:基础镜像(OS)、环境镜像(jdk)、应用镜像(tomcat)、业务镜像(jar包)

3、容器(container)

镜像run起来之后就称之为容器
每个容器都是Linux的一个进程,也可以把容器看成是一个独立的Linux系统
容器是可变的,可以在容器里面进行各种Linux操作(touch、mkdir、rm)

4、镜像仓库(repository)

存放镜像的地方
分为公有仓库和私有仓库
官方的仓库为Docker Hub,私有仓库可以通过registry和harbor来搭建

5、 Docker特性

优点
相比于传统的虚拟化技术,容器更加简洁高效
开箱即用、快速部署、可移植性强、环境隔离
容器使用共享公共库和程序
随处运行:容器可以将代码与配置文件和相关依赖库进行打包,从而确保在任何环境下的运行都是一致的。
高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置 CPU 和内存的使用率,进而更好地利用服务器的计算资源。
快速扩展:每个容器都可作为单独的进程予以运行,并且可以共享底层操作系统的系统资源,这样一来可以加快容器的启动和停止效率。

缺点
• 容器的隔离性没有虚拟化强(linux下的容器不能虚拟出windows操作系统)• 共用Linux内核,安全性有先天缺陷
• SELinux难以驾驭

二、centos环境下安装docker

1、卸载
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine
2、安装docker
yum install docker
3、设置仓库

官方仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo   ##此地址为官方的仓库地址,在国内建议不要用

阿里云的镜像仓库地址

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

4、启动docker
systemctl start docker
5、判断是否启动成功
docker version
6、使用hello-world镜像测试docker
docker run  hello-world

三、docker操作命令 (docker --help)

*** 访问Docker Hub 网址为: https://hub.docker.com/ 在其中进行搜索我们需要的镜像。 或者 docker search 镜像名称 **

1、查看镜像列表
docker images
2、 拉取镜像
docker pull  [options] NAME[:TAG]
name是拉取镜像的名称,:TAG表示是可选的,如果不选表明时latest,如果选择表明是指定版本的.
options是拉去的一些参数.

例:docker pull nginx   # 拉取的为nginx 的最新版本
3、删除镜像
docker rmi nginx:latest
 # rmi remove image
4、运行镜像
参考链接: https://hub.docker.com/_/nginx
docker run nginx  # 简单的运行镜像
docker run --name nginx-server -p 80:80 -d nginx
#  --name  取名字
#  -p 端口映射  宿主机端口:容器端口
#  -d 后端运行
#  -e:代表添加环境变量 MYSQL_ROOT_PASSWORD=123456 给root账户设置密码是123456
# 以mysql为例
docker run -p 3306:33066 \
    --name mysql \
    -v /home/docker/mysql/conf:/home/docker/mysql/conf.d \
        -v /home/docker/mysql/logs:/home/docker/mysql/logs \
            -v /home/docker/mysql/data:/home/docker/mysql/data \
                -e MYSQL_ROOT_PASSWORD=123456 \
                    -d mysql 
# 帮助
docker run --help

# 挂载 -v 宿主机目录:容器目录
docker run --name nginx-server -p 80:80 -v /mydata/nginx/conf:/etc/nginx/nginx.conf -d nginx:latest






5、 查看镜像是否运行
docker ps
# -a 查看所有容器
# -q  查看所有容器ID
docker ps -a
docker ps -a -q

6、进入运行的容器内部
docker exec -it 容器id bash

# 退出容器  exit
7、查看容器的端口
docker inspect 容器的name
8、删除容器
docker rm 容器的id/容器的name  # 只能删除停止的容器

docker rm  容器id  # 不能删除运行的容器
docker  rmi -f   容器id  # (可以删除运行的容器)
docker rmi -f $(docker ps -aq) # 遍历删除所有的

9、打包
docker save 镜像id 
10、解压
docker load 文件名称.tar
11、容器的停止,启动、暂停
# start启动所有停止的容器
 docker start $(docker ps -a -q) 
# stop停止所有容器
 docker stop $(docker ps -a -q) 
# remove删除所有容器
 docker rm $(docker ps -a -q) 
12、查看日志
docker logs  --help

docker logs -f -t --tail  条数  容器id

# -tf 显示日志

# --tail number  显示日志的行数

四、打包镜像

1、准备DockerFile
FROM java:8  # 拉取一个jdk为1.8的docker image
MAINTAINER 作者名称  <作者邮箱>  # 作者信息 ,指令设置生成镜像的 Author 字段
VOLUME /root/dockerfile/data  # 
EXPOSE 8080  # 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
ADD zlc-stor-0.0.1-SNAPSHOT.jar zlc-stor.jar  # 就是你上传的jar包 zlc-stor-0.0.1-SNAPSHOT.jar,   替换为jar包的名称 zlc-stor.jar
ENTRYPOINT ["java","-jar","zlc-stor.jar"]  # 容器启动之后执行的命令,java -jar zlc-stor.jar 即启动jar


#  form:  这个镜像是谁写的;
#  MAINTAINER:告诉别人谁在维护:姓名,邮箱
#  RUN:
#  ADD:   就是你上传的jar包 zlc-stor-0.0.1-SNAPSHOT.jar,   替换为jar包的名
#  WORKDIR:镜像的工作目录
#  VOLUME:挂载的目录
#  EXPOSE: 保留端口配置
#  CMD:指定容器启动的时候的指令
#  COPY:
#  ENV: 构建的时候设置环境变量

2、将jar包和Dockerfile文件放到同一个目录下

在这里插入图片描述

3、开始生成镜像
docker build -t zlc-stor .
4、查看镜像是否生成
docker images
5、运行镜像
 docker run -d  --name zlc-demo -p 8080:8080  zlc-stor 
6、查看镜像日志
docker logs --tail  300 -f  zlc-demo

五、可视化界面管理平台

1、 简介

Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

官方网站: https://www.portainer.io/

2.Protainer 的安装

https://www.portainer.io/installation/

3、使用docker安装
# 1、 搜索镜像
docker search Portainer
# 2、拉取镜像
docker pull portainer/portainer
# 3、查看镜像
docker images
# 4、运行镜像
docker run --name portainer8080 -p 9000:9000  -v /var/run/docker.sock:/var/run/docker.sock -d  portainer
# 5、网页访问:
http://localhost:9000


初次写学习的笔记,可能有很多的不足,请多多关照

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值