Docker笔记

一、Docker安装

1、yum包更新

        yum update

        

2、安装需要的软件包

        yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

        yum install -y yum-utils device-mapper-persistent-data lvm2

3、设置yum源

        yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、安装docker

        yum install -y docker

5、查看docker版本,验证是否验证成功

        docker -v

二、Docker架构

1、镜像(Image)

        Docker镜像,就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就是包含了完整的一套Ubuntu16.04最小系统的root文件系统。

2、容器(Container)

        镜像和容器的关系,就像是面向对象程序设计中的类和对象一样,镜像静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停。

3、仓库(Repository)

        仓库可看成一个代码控制中心,用来保存镜像。

4、中央仓库

        https://hub.docker.com

三、配置镜像加速度

        阿里云

四、Docker操作

1、Docker服务操作

        (1)启动docker

                systemctl start docker

        (2)查看docker状态

                systemctl status docker

        (3)关闭docker

                systemctl stop docker

        (4)重启docker

                systemctl restart docker

2、镜像的操作

        (1)拉取镜像

                docker pull 镜像名称

                docker pull 镜像名称:版本

        (2)查看全部镜像

                docker images

                docker images -q (查看全部镜像的编号)

        (3)删除镜像

                docker rmi 镜像的标识

                docker rmi `docker image -q` (删除全部镜像)

        (4)镜像的导出

                docker save -o 导出的路径 镜像id

        (5)镜像的导入

                docker load -i 镜像文件

        (6)镜像重命名

                docker tag 镜像id 镜像名:标识

        (7)搜索镜像(联网)

                docker search 镜像名称

        (8)提交修改

                docker commit 镜像id

3、容器的操作

        (1)启动容器

                docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像标识 | 镜像名称[:tag]

                        -d :代表后台运行容器

                        -p 宿主机端口:容器端口 :做端口映射

                        --name 容器名称 :指定容器的名称

        (2)查看容器

                docker ps [-qa]

                        -a : 查看全部的容器,包括没有运行的

                        -q :只查看容器的标识

        (3)查看容器日志

                docker logs -f 容器id

                        -f :可以滚动查看日志的最后几行

        (4)进入容器内部

                docker exec -it 容器id bash

        (5)删除容器(删除容器前需要先停止容器)

                docker stop 容器id

                docker rm 容器id

                docker rm $(docker ps -qa) (杀死全部)

        (6)重启容器

                docker start 容器id

        (7)查看容器信息

                docker inspect 容器id

4、数据卷

        将宿主机中的一个目录映射到容器的一个目录中。

        可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会随着改变

        (1)创建数据卷

                docker volume create 数据卷名称

                创建数据卷之后,默认会存放在一个目录下 /var/lib/dpcker/volumes/数据卷名称/_data

        (2)查看数据卷的详细信息

                docker volume inspect 数据卷名称

        (3)查看全部数据卷

                docker volume ls

        (4)删除数据卷

                docker volume rm 数据卷名称

        (5)应用数据卷

                当映射数据卷时,如果数据卷不存在,docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中

                docker run -v 数据卷名称:容器内部路径 镜像id

                直接指定一个路径作为数据卷的存放位置,这个路径下是空的

                docker run -v 路径:容器内的路径 镜像id

5、数据卷容器

        (1)创建数据卷容器

                docker run -it --name=容器名称 -v /volume(容器内路径) 容器名称:版本 /bin/bash

        (2)创建容器使用数据卷

                docker run -it --name=c1 --volumes-form c3 容器名称:版本 /bin/bash

四、Docker原理

1、操作系统组成部分

        进程调度子系统

        进程通信子系统

        内存管理子系统

        设备管理子系统

        文件管理子系统

        网络通信子系统

        作业控制子系统

2、Linux文件系统

        Linux文件系统由bootfs和rootfs两部分组成。

        bootfs:包含bootloader(引导加载程序)和kernel(内核)

        rootfs:root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件

        不同的linxu发行版,bootfs基本一样,二rootfs不同。

3、Docker镜像原理

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

        最低层是bootfs,并使用宿主机的bootfs

        第二层是root文件系统rootfs,称为base image

        然后再往上可以叠加其他的镜像文件。

        docker的同一文件系统即使能够将不同的层整合成为一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度来看,只存在一个文件系统。

        一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像称为基础镜像。

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

五、docker自定义镜像

1、创建一个Dockerfile文件

        Dockerfile文件中常用的内容

                FROM:指定当前自定义镜像依赖的环境

                MAINTAINER:维护者信息

                RUN:执行命令

                COPY/ADD:将相对路径下的内容复制到自定义景象中

                ENV:定义环境变量

                ARG:定义参数

                VOLUME:定义数据卷

                EXPOSE:指定暴露的端口

                USER:指定用户及用户组

                LABEL:定义元数据

                WORKDIR:声明镜像的默认工作目录

                CMD:需要执行的命令(在workdir下执行的,cmd可以写多个,但是指以会后一个为准)

2、启动镜像

        将准备好的Dockerfile和响应的文件拖拽到linux操作系统中,通过docker的命令制作镜像

docker build -f Dockerfile文件 -t 镜像名称:[tag] .

六、docker-compose

        docker-compose可以帮助我们批量的管理容器,只需要通过一个docker-compose.yml文件去维护即可。

1、安装

        (1)去github下载docker-compose 下载1.24.1版本

        (2)将下载好的文件拖入linux

        (3)改变docker-compose名字,增加执行权限

        (4)将docker-compose移动到/usr/local/bin,添加环境变量

        (5)测试,任意目录下数据docker-compose

2、docker-compose.yml文件

        文件示例:

        version: '3.1'

        services:

                mysql: # 服务的名称

                        restart: always # 代表只要docker启动,那么这个容器就跟着一起启动

                        image: mysql:5.7.4 # 指定镜像路径

                        container_name: mysql # 指定容器名称

                        ports:

                                - 3306:3306 # 指定端口号的映射

                        environment:

                                MYSQL_ROOT_PASSWORD: root # 指定MySQL的ROOT用户登录密码

                                TZ: Asia/Shanghai # 指定时区

                        volumes:

                                - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql # 映射数据卷

                tomcat:

                        restart: always

                        image: tomcat:8.5.15-jre8

                        container_name: tomcat

                        ports:

                                - 8080:8080

                        environment:

                                TZ: Asia/Shanghai

                        volumes:

                                - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps

                                - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

3、docker-compose命令

        在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件

        (1)基于ducker-compose.yml启动管理的容器

                docker-compose up -d

        (2)关闭并删除容器

                docker-compose down

        (3)开启|关闭|重启已经存在的有docker-compose维护的容器

                docker-compose start|stop|restart

        (4)查看有docker-compose管理的容器

                docker-compose ps

        (5)查看日志

                docker-compose logs -f

七、Docker容器虚拟化与传统虚拟机比较

1、相同

        容器和虚拟机具有相似的资源隔离和分配优势。

2、不同

        容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。

        传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统。

3、对比

特性

容器

虚拟机

启动

秒级

分钟级

硬件使用

一般为MB

一般为GB

性能

接近原生

弱于容器

系统支持量

单机支持上千容器

一般几十个

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值