docker学习笔记

一 基本概念

docker是开源的应用容器引擎,解决软件跨环境迁移问题

容器是完全使用沙箱机制,相互隔离

容器性能开销极低

二 安装

  1. 卸载原有docker

    yum remove docker \
    >                   docker-client \
    >                   docker-client-latest \
    >                   docker-common \
    >                   docker-latest \
    >                   docker-latest-logrotate \
    >                   docker-logrotate \
    >                   docker-engine
    
  2. 更新yum

    yum update
    
  3. 安装需要的软件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  4. 设置阿里云镜像仓库地址

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  5. 安装docker社区版

    yum install -y docker-ce
    
  6. 查看docker版本

    docker -v
    

参考Centos7安装Docker_玩物丧志的快乐的博客-CSDN博客

三 使用

架构

在这里插入图片描述

配置镜像加速器

配置阿里云镜像加速器

去阿里云-容器镜像服务-镜像加速器

选择使用的操作系统,根据指引配置

在这里插入图片描述

服务命令

# 启动
systemctl start docker
# 停止
systemctl stop docker
# 重启
systemctl restart docker
# 查看状态
systemctl status docker
# 设置开机启动
systemctl enable docker

镜像命令

查看镜像

docker images
# 查看所有镜像id
docker images -q

repository: 镜像

tag: 版本

image id: 镜像id

created: 创建时间

size: 大小

搜索镜像

docker search xxx

下载镜像

# 下载最新版本
docker pull xxx
# 下载指定版本
docker pull xxx:版本

版本去https://hub.docker.com查找镜像的Supported tags

删除镜像

# 删除单个镜像
docker rmi 镜像id
docker rmi 镜像:版本
# 删除所有镜像
docker rmi `docker images -q`

容器命令

创建容器

# 创建完会进入容器
docker run -it --name=xxx 镜像:版本 /bin/bash
# 后台创建容器,创建完不会进入容器
docker run -id --name=xxx 镜像:版本

退出容器:exit

查看容器

# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a

进入容器

docker exec -it xxx /bin/bash

启动容器

docker start xxx

停止容器

docker stop xxx

删除容器

不能删除运行中的容器

docker rm xxx
# 删除所有容器
docker rm `docker ps -aq`

查看容器信息

docker inspect xxx

数据卷

概述

数据卷:宿主机的一个目录或文件

容器目录和数据卷目录绑定后,对方的修改会立即同步

一个数据卷可以被多个容器挂载

一个容器可以挂载多个数据卷

数据卷作用:

  • 容器数据持久化

  • 外部机器和容器间接通信

  • 容器之间数据交换

配置

# docker run ... -v 宿主机目录(文件):容器目录(文件)
docker run -it --name=m1 -v /root/data:/root/data_container mysql:5.7 /bin/bash

目录必须是绝对路径

一个-v可以挂载一个数据卷

数据卷容器

解决多容器数据交换问题

# 配置数据卷容器
docker run -it --name=a -v /volume mysql:5.7 /bin/bash
# 绑定数据卷容器
docker run -it --name=b --volumes-from a mysql:5.7 /bin/bash

通过docker inspect a可以查看Mounts挂载信息

source为宿主机目录,destination为容器目录

"Source": "/var/lib/docker/volumes/0f476522043cbd37350ada6cca948b976e756ad43e7b846699d96cf84b1b0d61/_data",
"Destination": "/volume"

四 应用部署

部署mysql

端口映射:宿主机3307端口映射到容器3306端口

外部机器访问3307端口

docker run -id \
# 端口映射
-p 3307:3306 \
--name=xxx \
# 设置数据卷
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/logs:/logs \
-v /root/mysql/data:/var/lib/mysql \
# 设置root密码
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7 /bin/bash

部署tomcat

docker run -id \
--name=xxx \
-p 8080:8080 \
-v /root/tomcat:/usr/local/tomcat/webapps \
tomcat

部署nginx

宿主机的nginx.conf先准备好

docker run -id \
# 端口映射
-p 80:80 \
--name=xxx \
# 设置数据卷
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/logs/nginx \
# html为资源文件目录
-v /root/nginx/html:/usr/share/nginx/html \
nginx /bin/bash

部署redis

docker run -id --name=xxx -p 6379:6379 redis:5.0

五 dockerfile

镜像原理

docker镜像是由特殊的文件系统叠加而成

最低端是bootfs(内核),使用宿主机的bootfs

第二层是rootfs,可以往上叠加其它镜像

统一文件系统将不同的层整合成一个文件系统

从一个镜像启动容器时,docker在最顶层加载一个读写文件系统作为容器

在这里插入图片描述

镜像制作

容器转为镜像

# 容器转为镜像
docker commit 容器id 镜像名称:版本号
# 镜像转成压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
# 压缩文件转成镜像
docker load -i 压缩文件名称

dockerfile

dockerfile是一个文本文件,包含了一条条指令,基于基础镜像,构建一个新的镜像

dockerfile常用指令参考Dockerfile 详解_万wu皆可爱的博客-CSDN博客_dockerfile

六 docker compose

服务编排:按照一定的业务规则批量管理容器

docker compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动、停止

  1. 用docker file定义运行环境镜像

  2. 用docker-compose.yml定义组成应用的各服务

  3. 运行docker-compose up启动应用

docker compose使用参考docker-compose教程(安装,使用, 快速入门)_pushiqiang的博客-CSDN博客_docker 安装

七 docker容器虚拟化与虚拟机比较

相同点:具有相似的资源隔离和分配优势

不同点:容器虚拟化的是操作系统,虚拟机虚拟化的是硬件;虚拟机可以运行不同操作系统,容器只能运行同一类型操作系统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值