当前位置: 首页 > news >正文

Linux操作系统之docker基础

目录

一、docker

        1.1 简介

        1.2 安装配置docker 

二、dockerfile

1.1、简介

 1.2、dockerfile 关键字


一、docker

        1.1 简介

容器技术
容器其实就是虚拟机,每个容器可以运行不同的系统【系统是以linux为主的】 

为什么要使用docker?

docker容器之间相互隔离,可以提高安全性
通过使用docker可以做靶场 

        1.2 安装配置docker 

方法1:yum安装
方法2:编译安装 

        配置yum源

需要三个源,请安装前配置好
        BASE  baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/

        EXTRA   baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/extras/x86_64/

      UPDATE baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/updates/x86_64/

安装组件  (我用的是写了一个shell脚本docker安装,所以我们先需要安装一些上传文件的组件)

yum install irzsz unzip -y
将soft.zip 和 install_docker.sh,然后运行install_docker.sh
下载链接在下面

注意:关于防火墙

使用docker需要注意iptables防火墙

建议:关闭firewad   启动iptables

具体操作命令:yum install iptables-services -y

在这里我安装的时候出现了一些问题, 无法进行安装,后来我发现是我的yum命令用不了了
    Another app is currently holding the yum lock; waiting for it to exit...
          另一个应用程序是:PackageKit
            内存:116 M RSS (568 MB VSZ)
            已启动: Sun Apr  7 13:48:24 2024 - 00:59之前
            状态  :睡眠中,进程ID:50687
像这样,我是这样解决的   rm -f /var/run/yum.pid   然后就OK了

我们继续,关闭防火墙,开启iptables

systemctl stop firewalld

systemctl disable firewalld

systemctl start iptables

systemctl enable iptables

关闭selinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

启动docker容器,需要用docker镜像【docker镜像是一个操作系统】

默认docker镜像都是在国外,访问速度特别慢,所以需要配置加速

vim /etc/docker/daemon.json
{

#云服务器一般都会提供

}

systemctl daemon-reload

systemctl restart-docker

 下载镜像:docker pull 镜像名:版本

案例:下载centos 的镜像  docker pull centos:7

查看现有容器:docker images

删除镜像:docker images --rm 镜像名/镜像ID   |  docker rmi 镜像名/镜像ID

查看容器:docker ps | docker ps -a

启动一个容器:docker run --name c1 -it 容器ID

启动容器时选项
-t 这里是指定一个终端,如果没有终端,是无法登录这个容器的
-i  --interactive : 如果想用交互式访问,就需要用这个选项
--name string : 这里是指定容器的名字
--rm 当容器停止的时候,自动删除容器对象
-d  --detach  让当前的这个容器工作在后台
--network 指定容器加入到哪个网络,如果不加的话,默认是一个bridge网络
-p  暴露容器的端口,将容器中的端口和宿主机的任意端口进行端口映射
-P  宿主机的端口:容器的端口   可以将宿主机的指定端口和容器的端口进行映射
-v :逻辑卷

停止容器:docker stop 容器ID
删除容器:docker rm -f 容器名/容器ID
关闭所有容器:docker rm -f `docker ps -a | awk 'NR>=2{print $1}'`

链接:https://pan.baidu.com/s/1xjABgcoc6KNc7YbNmuaKng 
提取码:8023 

二、dockerfile

1.1、简介

dockerfile是一个脚本文件

通过这个脚本文件可以快速做新的镜像

在dockerfile中包含了各种关键字

 1.2、dockerfile 关键字

FROM 指定基础镜像
RUN 在基础镜像中执行的命令
ADD 镜宿主机中的文件发送到docker容器中
如果ADD发生的文件是一个tar.gz的包,那么ADD会自动进行解压
COPY:将宿主机中的一个文件复制到容器中
EXPOST 将容器的端口暴露出去
ENTRYPOINT 在容器中去执行一个shell脚本

#指定镜像

FROM centos:7


#执行命令安装编译库文件
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel zlib-devel  ncurses-devel iproute

#安装php环境
RUN yum install epel-release -y

添加解压nginx包到/tmp 目录下
ADD nginx-1.18.0.tar.gz /tmp

#进入目录进行编译安装
RUN cd /tmp/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx && make -j 2 &&
make install

#删除容器内置配置文件
RUN rm -f /usr/local/nginx/conf/nginx.conf


#复制本地配置文件到容器内
copy nginx.conf /usr/local/nginx/conf

#复制启动脚本
COPY run.sh /tmp

RUN cd /tmp
RUN chmod +x /tmp/run.sh

#fuzhiweb代码到容器
COPY s.html /usr/local/ngix/html/

#声明暴露端口
EXPOSE 80

#启动容器nginx服务,指定全局命令daemon off 保证服务在前台运行不会关闭
ENTRYPOINT ["/tmp/run.sh"]

案例:用centos作为基础镜像,安装上nginx

第一步:先准备一个目录
第二步:在目录中创建dockerfile文件 
第三步:根据dockerfile中的内容,去逐一准备文件

  •         nginx-1.18.0.tar.gz
  •         nginx.conf
  •         run.sh
  •         s.htm

第四步:创建镜像文件 docker build -t 镜像名 .
第五步:用自己的镜像启动或容器

http://www.lryc.cn/news/336225.html

相关文章:

  • 35-3 使用dnslog探测fastjson漏洞
  • Qt——示波器/图表 QCustomPlot
  • 《图解Vue3.0》- 调试
  • 【PyQt5篇】和子线程进行通信
  • JavaScript数组操作方法全录
  • 8.排序(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序)的模拟实现
  • (详解)python调用另一个.py文件中的类和函数或直接运行另一个.py文件
  • 每日一题:修改后的最大二进制字符串
  • Redis 5种数据结构常用命令
  • 23、区间和
  • Python零基础从小白打怪升级中~~~~~~~文件和文件夹的操作 (1)
  • Qt plugin 开发UI界面插件
  • Android查看SO库的依赖
  • 麒麟KOS删除鼠标右键新建菜单里不需要的选项
  • DPDK系列之四十二DPDK应用网络编程UDP编程
  • 金三银四面试题(十九):MySQL中的锁
  • 【JavaScript】原型链/作用域/this指针/闭包
  • Python的MATLAB使用
  • 文件输入/输出流(I/O)
  • docker,schedule job和environment variables三者的含义与区别
  • 90天玩转Python—16—基础知识篇:面向对象知识详解
  • python 标准库之openpyxl的常规操作
  • 90天玩转Python—12—基础知识篇:Python自动化操作Email:发送邮件、收邮件与邮箱客户端操作全解析
  • 利用lidar_align来进行lidar和imu标定
  • 牛客NC93 设计LRU缓存结构【hard 链表,Map Java】
  • 机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)
  • 低功耗全极霍尔开关芯片 D02,磁性开关点精确,对工艺和温度变化不敏感
  • 初识--数据结构
  • 人工智能前沿成科技竞争新高地
  • 【算法刷题day23】Leetcode:669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树