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简单入门的主要内容,如果未能解决你的问题,请参考以下文章

Docker入门与简单使用

Docker入门到实践——简单操作

docker 简单入门

第一篇:docker 简单入门

docker入门之简单的容器使用

大白话Docker入门