Docker简述

Docker简介

Docker是一个基于Go语言编写的用于软件或程序环境迁移的利器,解决了程序开发中开发环境、测试环境以及运行环境版本不一导致测试异常的尴尬窘境,为开发人员提供了更加方便快捷的解决方案;

Docker可以理解为一个巨大的容器,而我们的各个需要的技术栈的软件都可以随时随地从Docker上下载,但是Docker中引用的并不是直接的我们需要的环境的对象,而是类似Spring工厂,Docker中的大量的不同技术栈软件的文件称为镜像,即类似Java中的类文件,而当我们需要这个软件时,拉取镜像的同时,Docker会为我们创建对应的软件容器,也可以理解成创建了镜像的对象,这样也更好理解;
在这里插入图片描述
在这里插入图片描述

Docker架构

在这里插入图片描述
在这里插入图片描述

Docker安装

1.卸载旧版docker

yum remove docker \
   docker-client \
   docker-client-latest \
   docker-common \
   docker-latest \
   docker-latest-logrotate \
   docker-logrotate \
   docker-selinux \
   docker-engine-selinux \
   docker-engine \
   docker-ce

2.安装docker依赖

# 安装基本依赖库
yum install -y yum-utils  device-mapper-persistent-data  lvm2 --skip-broken
# 更新XFS文件系统管理工具
yum update xfsprogs -y

3.安装docker

# 更新本地镜像源
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 更新镜像源缓存
sed -i 's/download.docker.com/mirrors.ustc.edu.cn\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 更新镜像源缓存
yum makecache fast
# 安装Docker
yum install -y docker-ce

4.启动docker服务

# 查看防火墙状态
systemctl status firewalld
# 关闭本地防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 启动docker服务
systemctl start docker
# 设置开机自启动
systemctl enable docker

5.配置镜像加速

Docker官方镜像仓库网速较差,我们需要设置国内镜像:

​ 参考阿里云的镜像加速文档:阿里云镜像管理地址(https://www.aliyun.com/)

# 创建配置文件
mkdir -p /etc/docker
# 配置镜像加速地址 (填写自己阿里云下的镜像加速地址)
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://91oqc1nv.mirror.aliyuncs.com"]
}
EOF
# 重新加载配置并重启Docker
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Docker相关命令

镜像操作

相关命令

操作Docker镜像的常用命令有:
	docker --help : 查询帮助
	docker xxx --help : 查询xxx命令的作用和使用方式★★★★★
  docker search 镜像名称 : 在镜像仓库搜索镜像
  docker pull 镜像名称:tag : 从镜像仓库拉取镜像
  docker push : 将本地镜像推送到远程镜像库
  docker images : 查看本地镜像列表
  docker rmi 镜像名称:tag : 删除本地镜像
  docker save -o xxx.tar 镜像名1 镜像名2 : 保存镜像为一个tar文件
  docker load -i xxx.tar : 加载本地tar文件中包含的镜像
  docker build : 构建一个镜像(我们自己制作镜像)
  docker tag 镜像名:tag 新镜像名:tag : 给镜像打新标签(重命名)

容器操作

将一个镜像运行起来,就可以得到镜像对应的容器.

相关命令

操作Docker容器的常用命令有:
  docker run --name 容器名称 -p 80:80 -d 镜像名称 : 创建并运行容器
  	--name 容器名称
  	-p 端口映射
  	-d 后台运行
  docker stop 容器名称 :停止容器
  docker start 容器名称:启动容器
  docker ps :查看运行中的容器
  docker ps -a : 查看所有容器
  docker rm 容器名称:删除容器
  docker rm -f 容器名称 : 强制删除容器(无论运行与否) 
  docker exec :执行容器内的指定指令
  docker commit :提交一个容器为镜像

数据卷

概述

为什么需要数据卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作数据卷命令

数据卷是一个虚拟的概念,一个数据卷指向宿主机上的一个文件夹:
	每创建一个数据卷就会在/var/lib/docker/volumes目录下新建一个对应的文件夹
#创建数据卷
	docker volume create 数据卷名称 
#查询数据卷信息
	docker volume inspect 数据卷名称
#查询所有数据卷基本信息
	docker volume ls
#删除未使用的数据卷
	docker volume prune
#删除数据卷
	docker volume rm 数据卷名称
#挂载数据卷 (建立数据卷与容器目录的对应关系)
	docker run \ 
  --name mn \
  -v html:/usr/share/nginx/html \
  -p 8080:80 \
  -d \
  nginx
  # 说明:
  # 		docker run :就是创建并运行容器
  #   	--name mn :给容器起个名字叫mn
  #   	-v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
  #  	 	-p 8080:80 :把宿主机的8080端口映射到容器内的80端口
  #   	nginx :镜像名称

网络管理

当我们要部署基于docker的微服务群时,往往会需要容器之间互相连接。这时就需要用到Docker中的网络配置了

集群: 多台服务器做相同的事情
分布式: 多台服务器做不同的事情,在共同协作下完成一个具体的业务

#创建一个名为my-net的网络(名称可以自定义)
docker network create my-net
#将指定容器加入到my-net网络
docker network connet my-net 容器名称
#将一个容器退出指定的网络
docker network disconnect 网络名称 容器名称
#查看网络的详细信息,如IP网段等
docker network inspect 网络名称
#列出所有的网络
docker network ls
#删除所有未使用的网络
docker network prune
#删除所有指定的网络
docker network rm	网络名

常用镜像

安装mysql

==========================
# 关闭或禁用Linux上已经安装的mysql,因为端口被占用了
# 关闭
systemctl stop [mysql/mysqld]
# 禁用
systemctl disable [mysql/mysqld]
===========================
#1.拉取或从本地加载MySQL镜像。因为镜像文件较大,推荐从本地加载
	docker pull mysql:5.6
#2.创建两个数据卷mysql-data、mysql-conf
	docker volume create mysql-data
	docker volume create mysql-conf
#3.进入mysql-conf数据卷所在目录,新建一个my.cnf文件
	# 查看数据卷对应目录
	docker volume inspect mysql-conf
	# 进入
	cd /var/lib/docker/volumes/mysql-conf/_data
	# 创建核心配置文件  my.cnf(Linux环境下mysql的核心配置文件)
	touch my.cnf
#4.编辑my.cnf文件,设置mysql编码等配置属性
	--------------
    # mysql配置文件内容:
    [mysqld]
    skip-name-resolve
    character_set_server=utf8
    datadir=/var/lib/mysql
    server-id=1000
	---------------
#5.创建并运行容器。【具体参数及挂载目录参考DockerHub网站的说明】
docker run \
--name mysql \
-p 3306:3306 \
-d \
-e MYSQL_ROOT_PASSWORD=root \
-v mysql-data:/var/lib/mysql \
-v mysql-conf:/etc/mysql/conf.d \
--privileged \
mysql:5.6

DockerFile自定义镜像

dockerFile概述

回顾之前镜像原理的章节,我们可以了解到,镜像的本质是一层层的Layer。基于一个rootfs这个基础的Layer定制每一层所添加的配置、文件,要执行的操作等。
如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么这个脚本就是 Dockerfile。
因此,Dockerfile就是一个描述镜像构建的文件。其中一定会有一个基础镜像(BaseImage),然后在基础镜像上每完成一次修改或安装命令,就形成一层新的Layer,直到镜像构建完成。

常用命令(参考)

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录
EXPOSE port1 prot2用来指定端口,使容器内的应用可以通过端口和外界交互
CMD argument在构建容器时使用,会被docker run 后的argument覆盖
ENTRYPOINT argument入口点,容器启动后会执行的命令,比如启动mysql。效果和CMD相似,但是并不会被docker run指定的参数覆盖
VOLUME将本地文件夹或者其他容器的文件挂载到容器中

Docker镜像服务

之前当我们需要使用镜像时都是从阿里云上或DockerHub上下载.
也可以自己通过Dockerfile做镜像.
我们能不能将我们自己做的镜像上传到阿里云或DockerHub?

镜像服务地址: https://cr.console.aliyun.com/

1.找到个人实例
2.创建命名空间(阿里云域名/你的命名空间)
3.设置登录的密码阿里云镜像服务

在这里插入图片描述

私有镜像仓库

# 安装镜像仓库镜像
docker run -d \
  --restart=always \
  --name registry	\
  -p 5000:5000 \
  -v registry-data:/var/lib/registry \
  registry
# 镜像仓库默认会自动启动,如何查看镜像仓库中有哪些镜像呢?
	访问: http://你的宿主机地址:5000/v2/_catalog
# 配置允许指定ip向本地镜像仓库提交镜像
# 打开要修改的文件
		vi /etc/docker/daemon.json
# 添加内容: json格式,需要加 逗号 
		"insecure-registries":["http://宿主机ip地址:5000"]
# 重加载
		systemctl daemon-reload
# 重启docker
		systemctl restart docker
# 推送
	docker push 宿主机ip地址:5000/nginx:1.0
# 拉取
	docker pull 宿主机ip地址:5000/nginx:1.0
# 镜像若想存放到本地镜像仓库,需满足本地仓库的格式
	格式: docker tag nginx:latest 宿主机ip地址:5000/nginx:1.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值