docker简单入门
Posted wznn125ml
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker简单入门相关的知识,希望对你有一定的参考价值。
docker
1.虚拟化
虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
目前流行的虚拟化软件
# kvm:开源的免费的 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中
# exsi:vmware商用的,装在裸机上,可以虚拟化出很多机器
# openstack(python开发的,开源的):电信云,华为云 openstack 管理云平台
# 阿里云(自研,阿里飞天):云服务器,到一个网站,点点---》付款--》完成
# docker:容器技术
# k8s:多机容器管理,容器编排
- 一句话就是最大化利用物理硬件,对资源充分利用
2.docker介绍
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。
Docker 项目的目标是实现【轻量级的操作系统虚拟化解决方案】。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的【容器就像操作一个快速轻量级的虚拟机】一样简单。
3.容器与虚拟机的比较
服务器虚拟化后,虚拟机方案需要先给每个虚拟机装操作系统然后再安装app
但是容器方案是使用docker管理后免去了装虚拟机操作系统,直接安装软件
4.详细解释
Docker镜像:镜像是基于一堆文件,相当于虚拟机装了操作系统,又装了软件的一堆文件
Docker容器:镜像运行起来,成为了容器,【当成一台虚拟机上面装了一些软件】
- 一个镜像可以产生多个容器
5.安装
一般都是用在虚拟机、乌班图上
1.如果以前安装过,要先卸载
yum remove docker docker-common docker-selinux docker-engine
rm -rf /var/lib/docker
2.安装
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
建立一个docker远程仓库的下载文件
sudo yum install docker-ce -y
最后安装,ce是社区版本
6.启动以及设置镜像源
查看docker状态
systemctl status docker
启动docker
systemctl start docker
重启docker
systemctl restart docker
开机启动docker
systemctl enable docker
查看docker信息
docker info
这个能看到有几个容器,镜像
======================================
docker的官方下载镜像地址:
https://hub.docker.com
我们可以设置自己的,比如阿里的,登录阿里云后访问这个网址
https://cr.console.aliyun.com/cn-shanghai/instances/mirrors
拿到镜像加速地址
复制这个地址,在虚拟机上cd /etc/docker/,然后创建vim daemon.json 文件,输入
"registry-mirrors": ["你的加速地址"]
保存退出后重新加载docker即可
sudo systemctl daemon-reload
sudo systemctl restart docker
========================================
7.镜像操作相关命令
1.查找下载镜像
直接去官方那个网址搜,然后复制tag中的不同版本的拉取代码即可
docker pull centos:centos7
2.查看所有镜像
docker images
3.删除镜像
docker rmi 镜像ID号
docker rmi `docker images -q` 删除所有
4.可以查看镜像的信息
docker search xxx
二、docker容器
首先,镜像是可以一个一个运行起来,成为容器,一个镜像可以运行出多个容器,就好比如我手里有一个U盘装了win10操作系统的镜像,我可以拿着这个镜像给很多人电脑装出系统。
1.容器相关命令
1.查看正在运行的容器
docker ps
2.查看所有的容器,无论状态
docker ps -a
==========重要============
3.运行容器
run 后面跟着参数
-i 表示运行容器
-d 创建容器后不会直接进去容器,而是创建一个守护神容器在后台
-t 容器启动后进入容器命令行
--name: 为创建的容器命名
所以有
docker run -id / docker run -it
-v 目录映射 非常重要,简单说就是让容器和宿主机的文件目录双向绑定,这样容器就不用再创建相关文件,直接用宿主机的
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
===========================
4.实操创建容器
docker run -it --name=mycentos centos:7
yum install vim -y 在容器中装了vim软件
exit 退出,容器停止了
5.启动容器
docker start 名字或者id号,注意不是进去
6.进入容器内部,本质是容器执行命令
docker exec 容器id 命令
7.删除容器
docker rm 容器ID
=====重要=====
8.docker exec -it 容器id /bin/bash 开启交互,相当于进去了容器内部
=============
2.-v参数详情使用
1.我们重新开一个容器,基于centos7,并且不进入
先在宿主机家目录创建点东西,比如说创建一个aaaa文件夹,在aaaa文件夹里面建立一个1.txt,写点东西,过程就不说了
接着开始新开一个容器,并且带上映射
docker run -id --name=goodday -v /home/aaaa:/aaaa centos:7
2.另外开一个窗口,进入新的容器的命令行模式
docker exec -it 前面创建的容器的ID号 /bin/bash
3.查看容器根目录下文件
ls
4.容器进入aaaa文件夹看到1.txt
5.宿主机改动1.txt,发现容器也能看到同步更新1.txt
6.这就是目录映射
3.-p端口映射详细使用
比如说把容器的3306映射为宿主机的80端口
1.先新搞一个mysql容器,并且开启端口映射,并且传入root用户密码(这个是mysql要求的)
docker run -id --name=mysqlys -p 80:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
这里可能发现服务器80端口被占用,比如说以前自己设置过nginx代理,换一个即可
2.如果建立成功,可以再输入 netstat -nlp |grep 80 查看80是否被docker监控
3.其实这样就已经完成了,以后访问宿主机的80端口就是在访问容器的3306
4.容器操作补充
1.文件相互拷贝(宿主机和容器,或者容器和宿主机)
docker cp 文件路径 文件路径
容器使用ID号
注意容器如果没安装docker那肯定是没命令去执行CP命令的
2.查看容器IP地址
docker inspect 查看容器的描述很多很多东西
过滤查看IP
docker inspect --format=\'.NetworkSettings.IPAddress\' 容器名称(容器ID)
其实就是模板语法然后用了go语言的点的语法
多个容器之间是可以Ping通的!!!
3.删除所有容器
docker rm `docker ps -a -q`
三、使用docker部署应用
1.mysql部署
先说好处,因为做了映射,只要使用同一套配置,容器删除都没关系,可以再生成同一个容器,依旧可以读取到原来的数据
1.创建宿主机这边的mysql文件夹,以及配置文件,为映射做准备
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
2.配置文件,相当于我们mysql的那个my.ini
vim /home/mysql/my.cnf
输入
[client]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
3.开始生成容器,并带上映射,宿主机的端口可自定义
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
2.nginx部署
1.宿主机家目录下创建html路径
cd /home
mkdir html
2.目录下创建nginx首页需要的index.html
vim进去输入点首页摆放的内容
保存退出
3.开始创建容器,开始映射
docker run -id --name mynginx -p 80:80 -v /root/html:/usr/share/nginx/html nginx
4.浏览器直接访问公网ip,会打到80,并且映射到容器的80,即nginx
3.部署redis
1.宿主机家目录下创建redis.conf,同时创建data目录
vim redis.conf mkdir data
给redis.conf输入一些配置(后面学高级部分再细说)
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
2.开始创建容器,后面那句是让redis根据配置文件后台启动并挂起
docker run -id -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -v /root/data:/data redis redis-server /etc/redis/redis.conf
四、迁移和备份
1.容器生成自己的镜像
假如我们在一个容器中又安装了一些东西,我们可以把这个容器直接打包成一个镜像,直接传到远程仓库,这样别人拿到这个镜像其实就能免去再安装那些东西的步骤
docker commit 容器的名字 你打包后镜像的名字
这样我们手里就有了自己打包的镜像
我们现在可以删除原来的容器,然后直接运行自己的这个镜像,就有了!
2.镜像打包备份
不常用,意思就是打包成压缩包
docker save -o centos_vim_image.tar centos_vim_image
3.把备份的镜像包恢复
docker load -i centos_vim_image.tar
五、Dockerfile
介绍
其实也是一种获取镜像的手段,轻量级构建镜像
是由一系列命令和参数构成的脚本文件,可以不用运行镜像后再打包,而是通过命令让某个镜像发生一些变化然后直接被打包
命令
FROM 基础镜像 #基于哪个基础镜像来构建
MAINTAINER gao # 声明镜像的创建者
ENV key value # 设置环境变量 (可以写多条),不用写:和=之类的符号
ARG # 设置只在构建过程中使用的环境变量,构建完成后,将消失
RUN command #执行的命令,是Dockerfile的核心部分(可以写多条)
CMD param1 # 当改镜像构建出容器时执行,可以存在多个,但是仅最后一个生效
ADD source_dir/file dest_dir/file #将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file # 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR DIR # 设置工作目录,运行起这个容器,直接进去来到的路径就是这个路径
USER #指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
EXPOSE # 用于为容器打开指定要监听的端口实现与外部通信
STOPSIGNAL #设置容器退出时发出的关闭信号。
实操
比如说还是打包出一个安装了vim的centos7的镜像
vim Dockerfile #这个必须叫这个名字,不能同一路径下有两个
FROM centos:7
MAINTAINER gao
ENV age 25
RUN yum install vim -y
RUN mkdir /gao
RUN touch /gao/1.txt
ADD /root/redis.conf /gao/a.conf
WORKDIR gao
然后执行
docker build -t=\'你要起的镜像名字\'. #!!!点不能忘记! .的意思就是当前路径下必须要有Dockerfile
加深
1./bin/bash 就相当于开启命令行
2.linux 非centos的容器一般基于debin 用apt-get install 安装拓展
Docker 简单入门
现在主流的容器技术Docker,觉得不学下都跟不上节奏了,这里简单介绍docker的安装以及使用,有问题欢迎指出哈。
这里主要讲以下几点:
- Docker 安装
- Docker 镜像创建
- Docker 容器初探
- 制作镜像
- 上传镜像
Docker 安装
首先我们下载一个ubuntu镜像
docker pull ubuntu:16.04
以上是关于docker简单入门的主要内容,如果未能解决你的问题,请参考以下文章