• Linux-初学者系列_docker


    Linux-初学者系列_docker

    docker是一个虚拟机,主要应用在Linux和后台一些应用的虚拟机,和常见的VM有很多相似的地方。

    一、概念

    镜像:

    需要下载的系统文件iso…

    容器:

    正在运行中的一个虚拟机
    docker中多了一些tar文件,可以通过指令重新加载成一个镜像。
    dockerfile通过写如何构建的步骤,可以将dockerfile构建成镜像。
    仓库保存了很多镜像,以及第三方镜像,可以通过docker pull下载镜像/push指令上传。

    二、安装docker(可忽略 跳到第三步)

    此处我用到的是centos7,使用yum源安装。

    可以根据开发者社区Docker CE镜像文档配置。

    链接: https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.3e221b11rH6ppU

    在这里插入图片描述

    以下是根据文档配置过程,可忽略。

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 1

    在这里插入图片描述

    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1

    在这里插入图片描述

    sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    
    sudo yum makecache fast
    
    sudo yum -y install docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    sudo service docker start
    
    • 1

    在这里插入图片描述

    vim /etc/yum.repos.d/docker-ce.repo
    
    • 1

    在这里插入图片描述

    yum list docker-ce.x86_64 --showduplicates | sort -r
    
    • 1

    在这里插入图片描述

    sudo yum -y install docker-ce-版本号
    
    • 1

    在这里插入图片描述

    docker version
    
    • 1

    在这里插入图片描述

    systemctl status docker
    
    • 1

    在这里插入图片描述

    三、获取镜像

    从远程仓库上面pull下载,此处列举nginx

    1、下载nginx镜像
    [root@bogon ~]# docker pull nginx
    
    • 1

    在这里插入图片描述

    docker pull nginx等于docker pull nginx:latest

    不指定版本,默认就是最新版本。

    在这里插入图片描述

    此时nginx镜像就已经下载下来了。

    2、查看本地镜像
    docker images
    
    • 1

    在这里插入图片描述

    3、将镜像运行成一个容器

    通过run指令将nginx镜像运行成一个正在运行的容器(虚拟机)。

    在docker的使用中常用docker run指令跑镜像,比较重要的参数:

    -d后台运行

    -p映射内外端口,先写外部端口再写内部端口

    –name容器运行起来后的名字

    -v映射文件

    [root@bogon ~]# docker run -d -p 80:80 nginx
    
    • 1

    在这里插入图片描述

    此时d4…这一串是运行的容器id。

    01-查看运行的容器
    [root@bogon ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
    d42f5d21d47d   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   pensive_mcclintock
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    02-通过ip+端口号访问
    我的虚拟机ip地址是:192.168.18.132
    端口号是80
    浏览器访问:
    192.168.18.132:80
    
    • 1
    • 2
    • 3
    • 4

    我们会发现已经运行起来nginx,说明外部端口映射里面的80,同时也可以启动多个。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    总结:通过pull和run将nginx容器运行起来,例如想对nginx进行修改,可以通过docker exec -it 容器id。

    [root@bogon ~]# docker exec -it d4 bash
    root@d42f5d21d47d:/# 
    
    • 1
    • 2

    index文件放在/usr/share/nginx/html中

    在这里插入图片描述

    直接修改index文件:

    root@d42f5d21d47d:/usr/share/nginx/html# echo hello > index.html
    root@d42f5d21d47d:/usr/share/nginx/html# cat index.html
    hello
    
    • 1
    • 2
    • 3

    80端口会显示:

    在这里插入图片描述

    退出d4容器

    root@d42f5d21d47d:/usr/share/nginx/html# exit
    
    • 1
    03-删除端口

    通过docker rm -f强制删除81端口。

    在这里插入图片描述

    04-指定镜像名字

    通过docker commit指令指定一个镜像的名字,比如说z1。

    [root@bogon ~]# docker commit d4 z1
    sha256:7b9573603d62f9dcd9c68ec72ff7582d1d563651f8edcf8e69ddb6bb6dd0fe77
    [root@bogon ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    z1           latest    7b9573603d62   21 seconds ago   142MB
    nginx        latest    a7be6198544f   19 hours ago     142MB
    [root@bogon ~]# docker run -d -p 90:80 z1
    75e5d60e8a96fc137ea42cef1f07fc66bbc3c32bbfae1fa17370d00cd636ceb5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    通过访问90端口,可以看到页面是hello,说明修改后的容器保存成镜像,重新运行,它可以保持这个变化。

    4、dockerfile构建镜像

    通过dockerfile,新建一个dockerfile文件。

    此时可以学习下dockerfile语法。

    在这里插入图片描述

    通过FROM指定docker构建的基础镜像,是基于nginx镜像,将当前目录下的所有文件拷贝到/usr/share/nginx/html文件夹下,当前我们创建了一个index.html文件,里面可以写外部的文件。

    在这里插入图片描述

    通过docker build -t z2 .指定的是当前目录下的dockerfile去构建。

    在这里插入图片描述

    通过100号端口映射z2

    在这里插入图片描述

    在这里插入图片描述

    5、dockersave构建镜像

    使用dockersave讲z2(镜像名)保存到zhang.tar文件里。

    [root@bogon ~]# docker save z2 >zhang.tar
    
    • 1

    在这里插入图片描述

    删除z2

    因为这个z2有个容器是基于镜像的所以无法删除,需要将这个容器也删除。

    在这里插入图片描述

    6、docker load

    当前z2镜像已经删除,通过docker save

    在这里插入图片描述

  • 相关阅读:
    关于MySQL的30条优化技巧,超实用
    服务器截取有用日志
    js农历与阳历转换使用笔记
    网络编程 - UDP协议
    J2EE--自定义mvc增删改查
    React 状态管理 - Context API 前世今生(下)
    基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)
    springboot-鑫源停车场管理系统 毕业设计 -附源码 290915
    前端报错的时候提示必须为表达式
    完美解决:sh: /usr/bin/xauth: not found
  • 原文地址:https://blog.csdn.net/m0_62181310/article/details/130847746