Docker学习笔记

目录

一.初识Docker

1.1 为什么使用Docker

1.2 Docker架构

1.3 安装Docker

二.Docker命令

2.1 Docker镜像

2.2 Docker容器

2.3 Docker数据卷

 三.自定义镜像

 四.DockerCompose集群部署


一.初识Docker

1.1 为什么使用Docker

(1)Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

        1.Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

        2.Docker应用运行在容器中,使用沙箱机制,相互隔离

(1)Docker如何解决开发、测试、生产环境有差异的问题

        1.Docker镜像中包含完整运行环境、包括系统函数库,仅以依赖系统的Linux内核,因               此可以在任意Linux操作系统上运行。

小结:

Docker是一个快速交付应用、运行应用的技术,具备下列优势:

  • 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统

  • 运行时利用沙箱机制形成隔离容器,各个应用互不干扰

  • 启动、移除都可以通过一行命令完成,方便快捷

1.2 Docker和虚拟机的差异

  • docker是一个系统进程;虚拟机是在操作系统中的操作系统

  • docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

1.2 Docker架构

镜像:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。

容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见 。就是将镜像文件中编写的程序、函数加载到内存中,形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。

DockerHub:DockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry。类似Gitee的作用。

Docker是一个CS架构的程序,由两部分组成:

  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等

  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

1.3 安装Docker

(1)如果之前安装旧版本Docker,卸载旧版本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)安装yum工具

yum install -y yum-utils \
                device-mapper-persistent-data \
                lvm2 --skip-broken

(3)更新本地就像源

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

(4)安装Docker

yum install -y docker-ce

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

 (5)配置镜像加速器

sudo mkdir -p /etc/docker #创建文件夹

sudo tee /etc/docker/daemon.json <<-'EOF' #新建daemon.json并且在文件中输入以下内容
{
    "registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload #重新加载文件

sudo systemctl restart docker #重启Docker

二.Docker命令

命令总纲:

docker --help

2.1 Docker镜像

命名规范:

镜像名分为两部分:[repository(镜像名)]:[tag(镜像版本)]

docker build构建镜像
docker images查看镜像
docker rmi删除镜像
docker push把镜像推送到服务器
docker pull从服务器拉取镜像
docker save把镜像保存为压缩包
docker load加载压缩包为镜像

2.2 Docker容器

docker ps查看所有运行容器及状态
docker logs查看容器日志
docker exec进入容器执行命令
docker run使用镜像生成容器
docker pause暂停运行的容器
docker unpause恢复暂停运行的容器
docker stop停止容器
docker start运行容器
docker rm删除指定容器

2.3 Docker数据卷

数据卷:一个虚拟目录,指向宿主机文件系统中的某个目录。

注:数据卷和容器关系类似java与MySQL。

docker volume create创建一个数据卷
docker volume inspect显示一个或多个数据卷信息
docker volume ls列出所有数据卷
docker volume prune删除未使用的数据卷
docker volume rm删除一个或多个指定的数据卷

 三.自定义镜像

指令说明
FROM指定基础镜像
EVN设置环境变量,可在后面指令使用
COPY拷贝本地文件到镜像指定目录
RUN执行Linux的shell命令,一般是安装过程的命令
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的
ENTRYPOINT镜像中应用的启动命令,容器运行时调用

1.dockerfile的本质是一个文件,通过指令描述镜像的构建过程

2.dockerfile的第一行必须是FROM,从一个基础镜像来构建

3.基础镜像可以是操作系统。如:Contos。也可以是其他制作好的镜像,如:java:8-apline

 四.DockerCompose集群部署

DockerCompose可以基于Compose文件帮助快速的部署分布式应用

Compose文件是一个文本文件,通过指令定义集群中每个容器如何运行(docker run指令转化)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值