一 Docker简介
参考网址:https://www.cnblogs.com/xiaoyuanqujing/p/11774978.html
1.虚拟化
虚拟化(Virtualization)是一种资源管理技术,打破实体结构间的不可切割的障碍,虚拟化技术种类很多,例如:软件虚拟化,硬件虚拟化,内存虚拟化,网络虚拟化,桌面虚拟化,服务虚拟化,虚拟机等
2.docker
Docker是一个go语言编写的(C/S)架构软件,可以在宿主机上虚拟化出一个个操作系统。
镜像:
当作容器的“源代码”,类比面向对象中的:类,每运行一次镜像就会产生一个容器。
简单来说:就是关机状态的系统安装了某个软件。
容器:
就是一个一个的操作系统,类比面向对象中的:对象。
简单来说:就是运行的系统安装了某个软件。
3.docker特点
可以将应用以及依赖包到一个轻量级、可移植的容器中,容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
二 Docker的使用
1.前期准备工作(可以不做前期准备工作视情况而定)
1.查看是否安装过docker(该示例为安装过,卸载docker服务端若客户端卸载百度)
2.卸载docker
yum remove docker docker-common docker-selinux docker-engine
rm -rf /var/lib/docker #删除docker文件夹
3.准备工作
1.yum 包更新到最新 sudo yum update 2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的(一般新机器才需要执行这条命令) sudo yum install -y yum-utils device-mapper-persistent-data lvm2 3.设置yum源为阿里云,提升下载速度 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.docker安装与启动
1.安装docker
sudo yum install docker-ce
或
sudo yum install docker-ce -y #这条命令就不需要一直选择yes了
2.查看版本和启动
2.安装后查看docker版本 docker -v或 docker --version 3.启动docke服务端 systemctl start docker
3.其他命令
4.停止docker systemctl stop docker 5.查看docker状态 systemctl status docker 6.开机启动 systemctl enable docker 7.查看docker概要信息 docker info 8.查看docker帮助文档 docker --help 9.重启docker systemctl restart docker
4.设置ustc的镜像(换源一个意思,设置docker镜像从阿里或豆瓣下载,可以不设置用官方的)
1.编辑该文件,改文件默认没有: vi /etc/docker/daemon.json 2.在该文件中输入如下内容具体地址,清华源: { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
4.镜像相关吗命令
4.1搜索镜像
docker search 镜像名称
'''
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
'''
注意:一般在https://hub.docker.com/地址里搜镜像
4.2下载镜像
docker pull 镜像名称:版本号 ''' docker pull centos:centos7.7.1908 docker pull centos #下载最新版本 '''
4.3查看镜像
docker images ''' NAME:仓库名称 DESCRIPTION:镜像描述 STARS:用户评价,反应一个镜像的受欢迎程度 OFFICIAL:是否官方 AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的 '''
4.4删除镜像
1.按镜像ID删除镜像 docker rmi 镜像ID 2.删除所有镜像 docker rmi `docker images -q`
注意:要删除镜像,必须要删除所有相关的容器
5.容器相关操作
5.1查看容器
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
查看最后一次运行的容器
docker ps -a
查看停止的容器
docker ps -f status=exited
5.2创建与启动容器
启动容器(基于image启动) docker run -i:表示运行容器 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 --name :为创建的容器命名。 -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。 -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 启动centos7
docker run 参数们 镜像名:版本号 -docker run -id --name mycentos7 centos:centos7.7.1908
5.3停止容器
docker stop 容器名称或者容器ID
5.4启动已有的容器
docker start 容器id/名字
5.5进入容器内部
方式1: docker exec -it 容器名称 (或者容器ID) /bin/bash 方式2: docker exec -it 容器名称 (或者容器ID) sh
5.6退出容器
exit
5.7文件拷贝:容器和宿主机之间的文件复制粘贴
-文件拷贝 -向里拷贝(从宿主机---》容器) docker cp 需要拷贝的文件或目录 容器名称:容器目录 -向外拷贝(从容器---》宿主机) docker cp 容器名称:容器目录 需要拷贝的文件或目录
注意无论拷贝到何处,都是在容器外部拷贝
5.8目录映射挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机或容器某个目录的文件从而去影响对方。 创建容器 -v 宿主机目录:容器目录 其他参数 镜像名:版本号 例如: docker run -di -v /home/test:/home/test --name=mycentos3 centos:centos7.7.1908
5.9查看容器信息和IP地址
1.我们可以通过以下命令查看容器运行的各种数据 docker inspect 名字/id 2.也可以直接执行下面的命令直接输出IP地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
5.10删除容器
docker rm 容器名称(容器ID) 注意正在运行的容器无法删除
六 部署mysql
1.下载mysql镜像
docker pull mysql:5.7
2.创建并运行容器
docker run -di --name=mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
'''
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量
MYSQL_ROOT_PASSWORD 是root用户的登陆密码
'''
注意:有些版本不是这个命令 百度
七 部署redis
1.拉取镜像
docker pull redis
2.宿主机上创建redis设置文件好做文件挂载,用来远程连接
部署redis,支持远程连接
1.宿主机上创建redis文件夹及子文件夹conf和data文件
2.在conf中创建redis.conf文件,内部写入
bind 0.0.0.0 #绑定地址
daemonize NO
protected-mode no #运行远程连接
requirepass 123456 #密码是123456
3.创建并运行容器
docker run -p 6379:6379 --name redis_6379 -v /home/test/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/test/redis/data:/data -d redis:alpine3.11 redis-server /etc/redis/redis.conf --appendonly yes
'''
1.以配置文件启动redis(配置文件路径):redisredis-server /etc/redis/redis.conf
2.使用默认持久化方案:--appendonly yes
'''
八 迁移备份
1.容器保存为镜像
docker commit 容器名 镜像名
docker commit mynginx mynginx_i
2.镜像备份
我们可以通过以下命令将镜像保存为tar 文件
docker save -o 打包名.tar 镜像名 docker save -o mynginx.tar mynginx_i
'''
压缩,传到别的机器
'''
3.镜像恢复与迁移
docker load -i 镜像打包名.tar docker load -i mynginx.tar
九 Dockerfile
1.简介
dockerfile能生成镜像
2.命令参数详解
文件名字必须交Dockerfile 命令: FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ENV key value 设置环境变量 (可以写多条) RUN command 是Dockerfile的核心部分(可以写多条),linux命令 RUN wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz RUN tar -xzf Python-3.6.10.tgz ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压 WORKDIR path_dir 设置工作目录,即下载到那个目录
案例,在python下安装django 1.11.9 和requests模块
FROM python:3.6
MAINTAINER lqz
RUN pip3 install django==1.11.9
RUN pip3 install requests
WORKDIR /home
示例:
十 Docker私有仓库
1.拉取私有仓库镜像
docker pull registry
2.启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3.测试是否启动成功
打开浏览器 输入地址http://192.168.1.12:5000/v2/_catalog看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空 ''' ip地址视情况而定 ''''
4.修改daemon.json
vi /etc/docker/daemon.json
添加以下内容,保存退出。
{"insecure-registries":["192.168.1.12:5000"]} ''' ip地址视情况而定 '''
5重启docker 服务
systemctl restart docker
6.镜像上传至私有仓库
6.1标记此镜像为私有仓库的镜像
docker tag 镜像名 ip:端口 /起标签名
docker tag django2.0 192.168.1.12:5000/django2.0
6.2再次启动私服容器
docker start registry
6.3上传标记的镜像
docker push ip:端口/标签名
docker push 192.168.1.12:5000/django2.0
6.4拉取
1.本机拉取 docker pull 39.100.80.124:5000/django2.0 2.别的机器拉取 先配置: 2.1修改daemon.json vi /etc/docker/daemon.json 添加以下内容,保存退出。 {"insecure-registries":["192.168.1.12:5000"] 2.2拉取 docker pull 39.100.80.124:5000/django2.0
Nginx部署
(1)拉取镜像
docker pull nginx
(2)创建Nginx容器
docker run -di --name=mynginx -p 80:80 nginx