lab2:docker基础实战

一、实验目的

1.通过本次实验,完成Docker主机的安装和配置、镜像的搜索和下载、容器生命周期的基本管理、容器网络的管理。

2.通过Dockerfile来构建nginx镜像,了解Dockerfile镜像构建过程。

二、实验内容与实验要求

1.完成Docker的安装和配置。

2.完成Docker镜像的基本操作。

3.完成Docker Hub的基本操作。

4.完成Docker容器的基本操作。

5.掌握通过Dockerfile构建镜像。

三、实验过程与结果

1. 预备工作

创建1核2G的服务器

# xxx为姓名拼音
hostnamectl set-hostname xxx

检查内核版本并移除旧版本,安装docker依赖工具:

uname -rsudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. Docker的安装

截图:查看hello-world镜像

安装docker并下载hello-world镜像:

# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker
systemctl enable docker --nowsudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://rixj4ohf.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 测试运行hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
若能正常输出信息,则说明安装成功。
docker run hello-world# 查看下载的hello-world镜像
docker images

3. Docker镜像的基本操作

# 获取镜像
docker pull nginx# 查询镜像
docker images# 查询部分镜像
docker image ls nginx# 查看镜像的大小
docker system df

(1)镜像查询:

查询镜像:

查看镜像大小:

(2)镜像删除:

通过短ID或镜像完整ID删除镜像:

查看删除后镜像:

通过仓库名+标签删除镜像,-f强制删除

  1. Docker容器的基本操作

(1)容器的创建与启停

创建一个基于httpd镜像的新容器。(若本地没有会拉取)

docker create httpd

查看容器信息:

docker ps -a

根据显示的容器ID或容器名称启动容器。

停止容器运行:

重启容器:

暂停容器:

恢复暂停的容器:

杀掉容器进程,强制停止容器:

启动容器,给容器重新命名:

(2)容器的运行

运行一个新容器,该容器基于ubuntu:14.04:

docker run ubuntu:14.04 /bin/echo 'Hello world'

启动一个 bash 终端,执行exit,退出容器:

docker run -it ubuntu:14.04 /bin/bash

不使用-d参数:

docker run ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

使用-d参数:

docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

通过docker logs [container ID or NAMES]获取容器的输出信息:

(3)进入容器

启动一个容器:

docker run -dit ubuntu:14.04

使用attach命令,直接进入容器启动命令的终端:
执行exit
再启动一个容器:

docker run -dit ubuntu:14.04

通过docker exec进入容器:

docker exec -it <container ID> bash

退出容器

(4)删除容器

删除一个处于终止状态的容器。若容器没有退出则无法删除,需要先停止容器。

使用docker rm -f来删除一个处于运行状态的容器。

删除所有已终止容器:

docker rm -v $(docker ps -aq -f status=exited)
  1. 私有镜像仓库搭建

​ 安装运行docker-registry:

# 获取官方registry 镜像并运行容器
docker run -d -p 5000:5000 --restart=always --name registry registry

​ 查看本机已有镜像:

​ 通过docker tag命令将基础镜像ubuntu:14.04镜像进行标记。

docker tag ubuntu:14.04 127.0.0.1:5000/myubuntu:14.04
docker images

​ 上传标记的镜像:

docker push 127.0.0.1:5000/myubuntu:14.04

​ Curl查看仓库中的镜像:

curl 127.0.0.1:5000/v2/_catalog

​ 删除已有镜像,再尝试从私有仓库中下载这个镜像:

docker image rm 127.0.0.1:5000/myubuntu:14.04
docker images
docker pull 127.0.0.1:5000/myubuntu:14.04
docker images

6. Dockerfile文件构建

​ 添加端口TCP:81

​ 下载centos 7:

docker pull centos:7

​ 进入nginx_demo,下载nginx源码压缩包:

mkdir nginx_demo# 进入文件夹,下载nginx源码压缩包。
cd nginx_demo
wget http://nginx.org/download/nginx-1.12.2.tar.gz

​ 创建Dockerfile文件,并通过Dockerfile创建nginx镜像:

vim Dockerfile# 编辑如下内容到Dockerfile中
# base image
FROM centos:centos7# MAINTAINER
MAINTAINER jrzhang@stu.ecnu.edu.cn# 修改 yum 的源配置来解决镜像源无法访问的问题
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo && \yum clean all && yum -y makecache# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12.2.tar.gz /usr/local/src# running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel 
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2# execute command to compile nginx
RUN ./configure \
--user=nginx --group=nginx \
--prefix=/usr/local/nginx --with-file-aio \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module \
--with-http_image_filter_module \
--with-http_geoip_module \
--with-http_sub_module  \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \ 
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module  \
--with-http_secure_link_module \
--with-http_degradation_module  \
--with-http_stub_status_module && make && make installRUN chmod -R 755 /usr/local/nginx/EXPOSE 80

# 通过Dockerfile创建nginx镜像
docker build -t my_nginx:v1 .

​ 查看构建的镜像:

docker images

​ 镜像名称:my_nginx,标签v1,镜像ID 53e3162421c7

7. Nginx镜像验证

​ 通过构建的镜像,运行一个容器,将端口进行映射:

docker run -d -p 80:80 my_nginx:v1 /usr/local/nginx/sbin/nginx -g "daemon off;"# -p 80:80 : 将容器的80端口映射到主机的80端口
# /usr/local/nginx/sbin/nginx -g "daemon off;" : 设置nginx非daemon守护进程,否则容器会自动退出

​ 查看容器状态:

​ 打开浏览器,输入ecs-docker弹性IP地址,默认端口为80,进行验证,显示“Welcome to nginx!”,说明容器运行正常:

8. Dockerfile指令添加

编辑Dockerfile文件:

# 在原有Dockerfile基础上,增加如下内容到Dockerfile最后一行
CMD /usr/local/nginx/sbin/nginx -g "daemon off;"

通过Dockerfile创建新的nginx镜像:

docker build -t my_nginx:v2 .
docker images

通过镜像,运行一个容器,将端口进行映射,将容器的80端口映射到主机的81端口:

docker run -d -p 81:80 my_nginx:v2
docker ps

打开浏览器进行验证,输入弹性IP地址,端口为81,进行验证,显示“Welcome to nginx!”,说明容器运行正常:

9. 删除相关资源!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16596.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 LeetCode 1047. 删除字符串中的所有相邻重复项(Day5:栈与队列)

解题思路&#xff1a; 方法一&#xff1a;栈 class Solution {public String removeDuplicates(String s) {Deque<Character> stack new ArrayDeque<>();for (char c : s.toCharArray()) {if (stack.isEmpty() || stack.peek() ! c) stack.push(c);else stack.p…

无人机检测车辆——多目标检测

目录 YOLOv3&#xff08;You Only Look Once version 3&#xff09;简介 YOLOv3 的主要特点 YOLOv3 的结构 1. 特征提取网络&#xff08;Backbone&#xff09; 2. 检测头&#xff08;Head&#xff09; 3. 输出层 YOLOv3 损失函数 YOLOv3 的优势 YOLOv3 的应用 YOLOv3…

集群搭建高可用

contos7.9 部署3节点 hadoop3.4 高可用集群 contos7.9 部署3节点 hadoop3.4 高可用集群环境信息Hadoop与Zookeeper的版本对应关系服务器角色分配使用端口服务器配置配置免密登录服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 hadoop 安装环境配置下载安…

网络IP地址会经常换吗?深入解析与实操指南

在互联网的生态系统中&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是每台连接设备的唯一标识符&#xff0c;它在网络通信中起着至关重要的作用。然而&#xff0c;不少用户观察到自己的IP地址有时会发生变化&#xff0c;这引发了诸多疑问。本文旨在详细…

AI测试的主要研究方向介绍

随着AI技术的不断进步和应用场景的日益广泛&#xff0c;如何确保人工智能系统的可靠性和安全性&#xff0c; 变得日益重要。人工智能测试作为保障AI系统质量的关键环节&#xff0c;也随着AI技术不断向前发展。本文将介绍当前AI测试的主要研究方向&#xff0c;以期为大家提供一个…

Python3中str和bytes

参考文章&#xff1a;浅析Python3中的bytes和str类型 - Chown-Jane-Y - 博客园 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode&#xff0c;由str类型表示&#xff0c;二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str…

比特币前景再度不明,剧烈波动性恐即将回归

比特币市场降温&#xff0c;波动性增加 自特朗普赢得美国总统大选以来&#xff0c;比特币市场的投机狂热有所降温&#xff0c;现货和衍生品市场的活跃度开始减弱。比特币在上周五跌破87000美元&#xff0c;较之前创下的历史高点低了约6500美元。这一变化受到美联储主席鲍威尔讲…

node对接ChatGpt的流式输出的配置

node对接ChatGpt的流式输出的配置 首先看一下效果 将数据用流的方式返回给客户端,这种技术需求在传统的管理项目中不多见,但是在媒体或者有实时消息等功能上就会用到,这个知识点对于前端还是很重要的。 即时你不写服务端,但是服务端如果给你这样的接口,你也得知道怎么去使用联…

esp32c3安装micropython环境

esp32c3竟然支持micropython环境&#xff0c;真的太让人高兴了。主要是python开发比较友好&#xff0c;开发速度要快于C和C&#xff0c; 可以用来快速创意验证。 下载 首先到官网&#xff1a;MicroPython - Python for microcontrollers 点击“download”进入下载页面&#…

Linux运维工程师推荐学习的开发语言

前言&#xff1a;会开发的运维和不会开发的运维可以说是两个世界的运维。 个人推荐python和go&#xff0c;前者可以做自动化运维&#xff0c;后者可以深挖k8s&#xff1b;最近就不先演示运维服务技术的部署和架构搭建了&#xff0c;在深挖自动化运维&#xff0c;为了让现在的工…

新手小白学习docker第八弹------实现MySQL主从复制搭建

目录 0 引言1 实操1.1 新建主服务器容器1.2 书写配置文件1.3 重启master实例1.4 进入mysql-master容器master容器实例内创建数据同步用户 1.5 新建从服务器容器1.6 书写配置文件1.7 重启slave实例1.8 查看主从同步状态1.9 进入mysql-slave容器1.9.1 配置主从复制1.9.2 查看主从…

我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算

Gonzalez从集合角度定义膨胀和腐蚀&#xff0c;不易理解。 Through these definitions, you can interpret dilation and erosion as sliding neighborhood operations analogous to convolution (or spatial filtering). 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向…

力扣题目解析--合并两个链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff…

基于yolov8、yolov5的鸟类分类系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 &#xff0c; 直接提供最少两个训练好的模型。模型十分重要&#xff0c;因为有些同学的电脑没有 GPU&#xff0…

css:浮动

网页的本质上就是摆放盒子&#xff0c;把盒子摆到相应的位置上 css提供了三种传统的布局方式&#xff1a; 普通流&#xff08;标准流&#xff09;&#xff1a;标签按默认方式排列&#xff0c;最基本的布局方式 浮动 定位 实际开发中&#xff0c;一个网页基本包含了三种这种布局…

Essential Cell Biology--Fifth Edition--Chapter one (6)

1.1.4.4 Internal Membranes Create Intracellular Compartments with Different Functions [细胞膜形成具有不同功能的细胞内隔室] 细胞核、线粒体和叶绿体并不是真核细胞中唯一的膜包围细胞器。细胞质中含有大量的[ a profusion of]其他细胞器&#xff0c;这些细胞器被单层膜…

量子奇异值阈值算法

特征值分解只适用于方阵&#xff0c;如何扩展到任意形状的矩阵呢&#xff1f;奇异值分解能够解决此问题。量子奇异值阈值算法在奇异值分解的基础上将小的特征值设置为0&#xff0c;从而将小的特征值及其对应的特征向量去掉&#xff0c;进而降低矩阵的秩&#xff0c;达到降维的目…

Python_爬虫3_Requests库网络爬虫实战(5个实例)

目录 实例1&#xff1a;京东商品页面的爬取 实例2&#xff1a;亚马逊商品页面的爬取 实例3&#xff1a;百度360搜索关键词提交 实例4&#xff1a;网络图片的爬取和存储 实例5&#xff1a;IP地址归地的自动查询 实例1&#xff1a;京东商品页面的爬取 import requests url …

黑马微项目

目录 1 飞机票 2 生成一个五位数验证码 3 数字加密 4 数字解密 5 抢红包 6 双色球系统 7 用户登录 8 金额转换 9 手机号屏蔽 10 罗马数字转换 11 调整字符串 12 初级学生管理系统&#xff08;学生数据的管理&#xff09; 13 学生管理系统&#xff08;用户的相关操…

基于lighthouse搭建私有网盘Cloudreve【开源应用实践】

基于lighthouse搭建私有网盘Cloudreve【超高性价比】 今天给大家分享一款私人网盘神器&#xff0c;既能存放你的文件文档&#xff0c;也能替你保存那不可告人的秘密~ 香菇今天将手把手教给大家如何在腾讯云轻量应用服务器上搭建个人专属网盘 1. 既爱又恨的网盘存储 很多小伙伴…