目 录CONTENT

文章目录

docker的学习

在水一方
2021-12-17 / 0 评论 / 0 点赞 / 1,044 阅读 / 2,805 字 / 正在检测是否收录...

前言

在云原生一体化的今天,容器化技术在企业的应用中越来越广泛,本文章主要学习docker的基本的应用

docker是什么

Docker 是一个开源的应用容器引擎,基于 Go 语言

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了

应用场景:

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

基本概念

  • 镜像(Image)
    Docker 镜像是用于创建 Docker 容器的模板

  • 容器:
    镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等

  • 仓库
    仓库可看成一个代码控制中心,用来保存镜像

docker的安装

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker

uname -r : 显示操作系统的发行版号

查看系统信息:cat /etc/os-release
image.png

ID_LIKE="rhel fedora" rhel的全称:Red Hat Enterprise Linux 是Red Hat公司发布的面向企业用户的Linux操作系统。

docker的安装

centos的安装官网地址:https://docs.docker.com/engine/install/centos/

本文的centos版本为centos7

1 先删除
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

image.png

2 需要的一些安装包

yum install -y yum-utils

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 更新软件包索引

yum makecache faster

安装docker

 // docker-ce是社区版
yum install docker-ce docker-ce-cli containerd.io

这里如果不想安装最新版本可以选择版本命令为: sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

image.png

启动docker

 systemctl start docker

停止docker命令:systemctl stop docker

服务器重启docker ps找不到某个容器时可以执行命令:

docker container ls -a

查看安装版本:

docker version

image.png

运行docker run hello-world出现下图提示表示安装成功了
image.png

docker 的镜像与容器等信息都存储在 /var/lib/docker下面

由于刚刚设置的是阿里云内部的镜像不够快,这里再配置一下阿里云镜像加速

1 阿里云镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

image.png

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0fbrnc4v.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

image.png

run的执行过程
docker.png

docker启动某个停止的容器命令:
docker restart 容器id

问题一:
1 docker为什么比VM(虚拟机)快

关闭虚拟机时选择休眠,下次启动时原有的配置仍然是在的,这一点需要注意,以后尽量不要选关机

image.png

docker 安装mysql

这里要考虑一下数据的挂载问题以及密码的设置问题

官方给出运行指令:

 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

实际的命令为:

docker run -d -p3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:latest 

这个是测试有效的:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:5.6

image.png

docker file

实际项目中如何来构建docker镜像以及如何执行脚本呢,dockerfile可以来实现。

先来看一个小的demo例子:
先创建一个dockerfile文件:

  • vim dockerfile
  • 添加命令:
FROM centos
maintainer jxy<840204799@qq.com> 
ENV MYPATH  /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo end
  • 执行dockerfile
docker build -f dockerfile  -t mycentos:1.0 .

当看到complete successful之后执行docker images 查看所有的镜像看到了刚刚创建的镜像
image.png

启动并进入镜像后发现自动到了刚刚环境变量中创建的路径/usr/local中

image.png

  • 验证
    执行vim --help和ifcoinfig看到都可以执行

还可以通过docker history来查看某个镜像的历史

docker history 镜像id

通过docker history命令可以让我们平时拿到一个镜像来研究这个镜像是怎么做出来的

CMD和EntryPoint的区别

0

评论区