前言
在云原生一体化的今天,容器化技术在企业的应用中越来越广泛,本文章主要学习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
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
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
启动docker
systemctl start docker
停止docker命令:systemctl stop docker
服务器重启docker ps找不到某个容器时可以执行命令:
docker container ls -a
查看安装版本:
docker version
运行docker run hello-world出现下图提示表示安装成功了
docker 的镜像与容器等信息都存储在 /var/lib/docker下面
由于刚刚设置的是阿里云内部的镜像不够快,这里再配置一下阿里云镜像加速
1 阿里云镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
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
run的执行过程
docker启动某个停止的容器命令:
docker restart 容器id
问题一:
1 docker为什么比VM(虚拟机)快
关闭虚拟机时选择休眠,下次启动时原有的配置仍然是在的,这一点需要注意,以后尽量不要选关机
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
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 查看所有的镜像看到了刚刚创建的镜像
启动并进入镜像后发现自动到了刚刚环境变量中创建的路径/usr/local中
- 验证
执行vim --help和ifcoinfig看到都可以执行
还可以通过docker history来查看某个镜像的历史
docker history 镜像id
通过docker history命令可以让我们平时拿到一个镜像来研究这个镜像是怎么做出来的
评论区