从零开始学Docker(二):启动第一个Docker容器

news2024/11/16 0:01:19

宿主机环境:RockyLinux 9

这个章节不小心搞成命令学习了,后面在整理成原理吧

Docker生命周期

拉取并启动Nginx容器

# 查找镜像 例如:nginx
[root@192 ~]# docker search nginx

我们可以看到,第一个时官方认证构建的nginx 

# 拉取下载镜像 docker pull nignx,这个和git很像,git pull xxx
[root@192 ~]# docker pull nginx

如下,这里我们使用的是简单的pull操作,默认下载的是最新版本 latest

 拉取镜像后查看镜像列表 

运行该nginx镜像,创建一个具体的容器,然后在这个容器中,就跑着一个nginx服务了

# 运行镜像的命令,格式:docker run 参数 镜像的名字/ID
# -d:后台运行容器,-p:端口映射,宿主机端口:容器内端口,
# 当我们访问宿主机端口时,也就时访问容器内的端口
[root@192 ~]#  docker run -d -p 80:80 nginx

#在我们运行完容器后,会返回一个容器ID
[root@192 ~]# docker run -d -p 80:80 nginx
870be1725361eb35588a55641b9637f6b395741ad642e6afeeeda2edbd23c5c3

 执行命令 docker ps 我们可以查看到当前的容器列表,此时能看到容器80端口已经映射到宿主机上面了 

 在浏览器访问宿主机的80端口,就能看到容器内80端口运行的是什么

 查看宿主机的网络配置,能够看到80端口,这里显示进程名称的并不是nginx,而是docker-proxy,这是docker启动的代理程序,将宿主机的80端口,代理到容器内的80端口

停止容器,docker stop 容器ID,停止容器后再去docker ps查看容器,之前的nginx已经没有了

 进入正在运行的容器内,查看容器的运行系统,执行命令:docker exec -it 容器ID bash

 Docker命令学习

# 默认的docker仓库是dockerhub,有大量优质的镜像,以及用户自己上传的镜像

[root@192 ~]# docker search 镜像名:tag,tag就是具体的标签版本

# 查看当前docker版本:
[root@192 ~]# docker version

#查看当前docker镜像文件:
[root@192 ~]# docker images 或 docker image ls

# 查看当前docker运行中的容器:
[root@192 ~]# docker ps

# 下载docker镜像:
docker pull 镜像名, # 默认的是 latest,
# 还可以指定版本
[root@192 ~]# docker pull 镜像名:版本号

# 查看docker服务信息
[root@192 ~]# docker info

# 查看docker的数据目录
[root@192 etc]# docker info | grep Root
 Docker Root Dir: /var/lib/docker

[root@192 ~]# ls /var/lib/docker
buildkit  containers  engine-id  image  network  overlay2  plugins  runtimes  swarm  tmp  volumes

# 存放docker镜像文件的目录
[root@192 sha256]# ll /var/lib/docker/image/overlay2/imagedb/content/sha256
total 8
-rw------- 1 root root 8149 Jul 29 08:50 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287
[root@192 sha256]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   24 hours ago   187MB

# 当我们查看镜像文件时,可以看到是JSON数据类型的文件,其作用是记录 镜像和容器的配置关系
[root@192 sha256]# cat 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287 

#-it:开启一个交互式的终端, --rm 容器退出时删除该容器
[root@192 sha256]# docker run -it --rm --name nginx01 nginx bash

# 查看镜像列表
[root@192 sha256]# docker images

# 查看某个镜像信息
[root@192 sha256]# docker images nginx

# 查看某个镜像信息,具体到某个tag
[root@192 sha256]# docker images nginx:tag名

# 格式化显示镜像列表,--format后跟docker的模板语言
[root@192 sha256]# docker images --format "{{.ID}}--{{.Repository}}"

# 以表格形式显示镜像信息
[root@192 sha256]# docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

# 下载镜像
[root@192 sha256]# docker run hello-world

# 查看当前镜像信息
[root@192 sha256]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    89da1fb6dcb9   24 hours ago   187MB
hello-world   latest    9c7a54a9a43c   2 months ago   13.3kB

# 删除镜像:名称、ID
[root@192 sha256]# docker rmi hello-world
[root@192 sha256]# docker rmi 9c7a54a9a43c

# 导出镜像,并重定向至/opt目录
[root@192 sha256]# docker image save nginx > /opt/nginx001.taz
[root@192 sha256]# ls /opt/
containerd  nginx001.taz

# 导入镜像
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@192 opt]# docker image load -i /opt/nginx001.taz 
c6e34807c2d5: Loading layer [==================================================>]  77.81MB/77.81MB
24ee1d7d6a62: Loading layer [==================================================>]  113.2MB/113.2MB
4deafab383fa: Loading layer [==================================================>]  3.584kB/3.584kB
8aedfcd777c7: Loading layer [==================================================>]  4.608kB/4.608kB
c88d3a8ff009: Loading layer [==================================================>]   2.56kB/2.56kB
abc3beec4b30: Loading layer [==================================================>]   5.12kB/5.12kB
922d16116201: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   25 hours ago   187MB

# 查看docker镜像详细信息 
[root@192 opt]# docker image inspect 镜像ID


Docker容器管理

# docker run 镜像名,如果镜像不存在本地,则会在线区下载镜像
# 容器内的进程必须处于前台运行状态,否则容器就会直接退出

# 运行容器,切进入容器内
[root@192 ~]# docker run -it nginx bash

# 查看docker容器的运行日志
[root@192 ~]# docker logs 容器ID
# -f 实时打印日期
[root@192 ~]# docker logs -f 容器ID
# 使用管道符,查看最新的5条日志
[root@192 ~]# docker logs  容器ID| tail  -5

# 进入到正在运行的容器内
[root@192 ~]# docker exec -it 容器ID bash

# 查看容器的详细信息
[root@192 ~]# docker container inspect 容器ID

# 后台运行docker容器,容器名称为nginx001,且端口映射宿主机的85端口,访问到容器内的80端口
[root@192 ~]# docker run -d -p 85:80 --name nginx001 nginx 
6627aa9383d993ed1be7031841daf7cecaefadea8cf1ea678fd3b8121aed2c15
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
6627aa9383d9   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 8 seconds   0.0.0.0:85->80/tcp, :::85->80/tcp   nginx001
[root@192 ~]# docker port 6627aa9383d9
80/tcp -> 0.0.0.0:85
80/tcp -> [::]:85

# docker 容器提交
[root@192 ~]# docker commit 6627aa9383d9 nginx_hunter
sha256:53807fe50cade428944877195e5db131a0868052770f0b393d424f14fbe3ba03
[root@192 ~]# docker images 
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
nginx_hunter   latest    53807fe50cad   5 seconds ago   187MB
nginx          latest    89da1fb6dcb9   25 hours ago    187MB

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

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

相关文章

beego通过gorm访问mysql数据库

一、下载golang 二、解压下载包到C盘 三、配置golang系统环境变量 四、进入新建的工作目录C:\project下载并安装beego 五、将新生成的bee.exe所在的路径c:\project\bin加入到系统变量path里面 六、下载并安装mysql 例如在上图中, 选“No thanks,just start my down…

iOS开发-实现上下翻转轮播循环信息播报效果

iOS开发-实现上下翻转轮播循环信息播报效果 在开发中经常遇到需要实现轮播信息播报,例如以下效果 一、使用UITableView实现展示列表 UITableView 定义UITableView的实例,并让当前视图遵守UITableView的两个协议 property (nonatomic, weak, nullable)…

【Linux多线程】线程的互斥与同步(附抢票案例代码+讲解)

线程的互斥与同步 💫 概念引入⭐️临界资源(Critical Resource):🌟临界区(Critical Section):✨互斥(Mutex): ⚡️结合代码看互斥☄️ 代码逻辑&a…

无涯教程-jQuery - Progressbar组件函数

小部件进度条功能可与JqueryUI中的小部件一起使用。一个简单的进度条显示有关进度的信息。一个简单的进度条如下所示。 Progressbar - 语法 $( "#progressbar" ).progressbar({value: 37 }); Progressbar - 示例 以下是显示进度条用法的简单示例- <!doctype …

appium的基本使用

appium的基本使用 一、appium的基本使用appium环境安装1、安装Android SDK 2、安装Appium3、安装手机模拟器4、Pycharm安装 appium-python-alicent5、连接appium和模拟器6、Python代码调用appium软件&#xff0c;appium软件在通过adb命令调用android操作系统&#xff08;模拟器…

如何在局域网外SSH远程访问连接到家里的树莓派?

文章目录 如何在局域网外SSH远程访问连接到家里的树莓派&#xff1f;如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpol…

详解Mybatis之分页插件【PageHelper】

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一. 什么是分页&#xff1f;二. 为什么使用分页&#xff1f;三. 如何设计一个Page类&#xff08;分…

【Python】Web学习笔记_flask(1)——getpost

flask提供的request请求对象可以实现获取url或表单中的字段值 GET请求 从URL中获取name、age两个参数 from flask import Flask,url_for,redirect,requestappFlask(__name__)app.route(/) def index():namerequest.args.get(name)agerequest.args.get(age)messagef姓名:{nam…

玩转LaTeX(四)【文献引入、自命令】

参考文献BibTeX: 使用最原始的文献导入&#xff1a;&#xff08;正文区&#xff09; \begin{document}%参考文献bibtex %一次管理一次使用 %参考文献格式&#xff1a; %\begin{thebibliography}{编号样本} % \bibitem[记号]{引用标志}文献条目1 % \b…

Java 程序员:本是为了跳槽刷完 1000 道真题,想不到被老板知道直接给我升职

同事&#xff1a;前阵子听说你要跳槽&#xff0c;现在准备得怎么样啊&#xff1f; 程序员 T&#xff1a;不跳了 同事&#xff1a;啊&#xff1f;为什么&#xff1f; 程序员 T&#xff1a;涨薪了呗&#xff1f; 同事&#xff1a;真的吗&#xff1f;涨了多少&#xff1f;你自…

IT类技术面试:从小白到高手的进阶指南

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

ElasticSearch基础篇-Java API操作

ElasticSearch基础-Java API操作 演示代码 创建连接 POM依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

golang interface类型的nil

golang中interface变量&#xff0c;底层两个对象来存&#xff0c;一个是type、一个是value&#xff0c;只有type、value都为nil时&#xff0c;interface变量才是nil package mainimport ("fmt""reflect" )type People interface {Show() }type Student str…

(杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(4)

1003 Simple Set Problem 双指针的思想,双端队列 先从小到大排个序 一个一个放到双端队列里,一边放一边维护集合个数为k个 利用滑动窗口,当滑动窗口中集合个数为k时,只需算出滑动窗口最后一个数减去第一个数,然后每次取min就行了 AC代码&#xff1a; #include<iostream>…

电子元器件选型与实战应用—专栏介绍

文章目录 背景专栏内容专栏特色学习收获适用人群 背景 大家好&#xff0c;我是记得诚。 我新开了一个专栏&#xff0c;名字叫《电子元器件选型与实战应用》&#xff0c;选取20个最常用的电子元器件。 这是一个只讲如何选型&#xff0c;在实际电路中如何应用的专栏。 作为硬…

软考A计划-系统集成项目管理工程师-项目采购管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

机器学习笔记之优化算法(四)线搜索方法(步长角度;非精确搜索)

机器学习笔记之优化算法——线搜索方法[步长角度&#xff0c;非精确搜索] 引言回顾&#xff1a;精确搜索步长及其弊端非精确搜索近似求解最优步长的条件反例论述 引言 上一节介绍了从精确搜索的步长角度观察了线搜索方法&#xff0c;本节将从非精确搜索的步长角度重新观察线搜…

flask 点赞系统

dianzan.html页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点赞系统</title> </head> <body><h2>这是一个点赞系统</h2><table border"1"><…

非线性优化的数值方法小结——梯度下降法,牛顿法,高斯牛顿法,LM法

非线性优化的数值方法小结——梯度下降法&#xff0c;牛顿法&#xff0c;高斯牛顿法&#xff0c;LM法 在非线性优化领域中&#xff0c;我们常采用一系列数值方法对构造的问题进行求解&#xff0c;各方法彼此联系&#xff0c;本文将对这些数值处理方法进行梳理构造。 问题描述…

Win系统如何下载安装使用cpolar内网穿透工具?

文章目录 概述什么是cpolar&#xff1f;cpolar可以用在哪些场景&#xff1f; 1. 注册cpolar帐号1.1 访问官网站点&#xff1a;[https://www.cpolar.com](https://link.zhihu.com/?targethttps%3A//www.cpolar.com/) 1.2 注册帐号 2. 下载Windows版本cpolar客户端2.1 下载并安装…