docker容器学习笔记1

docker容器是干什么用的

docker就是一个轻量级的虚拟机,是一个容器,隔离性好,能够确保环境的统一,有效利用系统资源,轻松迁移和拓展。简单的可以理解为容器就是一个小型功能齐全的虚拟机。

 

 实际上是如何使用的呢?

开发的程序包里有创建容器的脚本,我们会根据测试环境的实际情况,修改创建容器的shell脚本,然后部署到服务器上进行测试。就是这么简单。一个程序一个容器,我们有四五十个容器。可以把这些放在一个容器里吗?可以,不过没必要。如果把所有程序放在一个容器里,当这个容器出了问题,整个系统就不能用了。一个程序一个容器的话,当一个容器出现问题,其他容器还是可以正常使用的。再说容器占不了多少系统资源。

 容器和镜像的关系

用了一段时间docker容器后,维护环境的时候,发现docker居然还有一个镜像。什么是docker容器的镜像呢?其实容器的创建是依赖镜像的,镜像跟java中类和对象的关系类似。通俗的来说,镜像和容器的关系就像月饼模型和月饼的关系一样。月饼是根据月饼模型做出来的,容器是根据镜像文件造出来的。一个镜像文件可以创建多个容器。一个月饼模式可以做出很多月饼一样。没有镜像,就没有容器。容器的名称不能重复,否则创建容器就会失败,你去看报错信息,会写:容器已经存在。我们也可以通过容器做一个镜像出来,拿着这个镜像到新的环境部署。

  •  查看镜像

  • 查看宿主机上所有的容器(包括停止的) docker ps -a

  • 创建容器

docker create -it 镜像名称

  • 拉取ubuntu镜像

docker pull python:3.8       #拉取python3.8镜像

docker pull redis                #拉取redis最新镜像

docker pull mysql:5.7        #拉取mysql5.7镜像

docker pull nginx               #拉取 nginx镜像

docker pull centos:centos7

docker pull ubuntu:20.04  #拉取 ubuntu:20.04镜像

  • 启动容器

docker start 容器id/名字   # id号只要能够区分即可无需写全部

  • 新建并启动容器

docker run -it 镜像名称

docker rm -f 容器ID

docker run nginx

docker run -d nginx    #后台运行nginx 

停止容器

docker stop 容器名字/id号

容器的日志

容器在启动和运行过程中是记录日志的。怎么查呢?通过以下命令先查容器列表,找到你要查的容器的id

查到容器的id后,就可以以下命令查看日志,下面的命令是查看2021-11-22容器id的日志

容器的日志在什么路径存放的呢?默认路径是:/var/lib/docker/overlay2这个下面。我一般都是通过命令查看日志,日志路径具体在哪我是不知道的。有一次,服务器的var路径可用空间满了,我一查,原来容器的日志给打满了。它要是不打满,我都不知道它在哪。阿弥陀佛,我是用到哪查到哪,多余的东西都赖得看,docker容器用的多了,越来越觉得不够用,觉得有必要系统的学习下docker了,然后就买了本书。不学不知道,一学吓一跳,东西还真不少。慢慢学吧。

docker是容器,容器就是docker吗?查了下,原来容器世界并不是只有docker,还有别的呢。

转载自:

docker容器的简单使用 (baidu.com)https://baijiahao.baidu.com/s?id=1765038448231587087&wfr=spider&for=pc

虚拟机的生命周期

img

容器的生命周期

img

 重点(容器一直运行的原因)

1.它有一条前台进程,一直在运行

2.以后如果自己制作的镜像,运行起容器,必须有个可以夯住的命令COMMAND

3.如果COMMAND该命令结束,该容器也就结束了

 # 当我们在后台启动的时候

1.比如:docker run -di --name=mycentos centos:centos7

2.这时他会自动启动一个 /bin/bash窗口

3.因为我们并没有关闭这个/bin/bash窗口,所以他会一直在后台运行 

4.我们在使用start或者直接run进入这个镜像的时候,就相当于运行的这个命令:/bin/bash,就进入了这个bash窗口,相当于进入了容器(其实不是进入了容器,可以把他看作是xshell一个远程连接,连接到这个容器。)这里我们看作是进入到了这个容器,当我们使用exit退出的时候,就相当于关闭了/bin/bash这个窗口。所以容器一直会在后台运行的原因就是这个/bin/bash窗口一直在启动这,没有关闭它
容器创建并启动 – docker run

# 创建并启动(run)

# 参数:

    -i:表示运行容器

    -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

    -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

    --name :为创建的容器命名。如果不写,会自动分配一个名字(英文人名)

    -v:表示目录映射关系(前者是宿主机目录,后者是容器目录,映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。(下述单独演示)

    -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 (下述单独演示)

# 例子:run

    docker run -it --name=myredis redis  # 这时就会启动redis容器并进去redis容器 

    docker run -id --name=oursql mysql  # 这时就不会进入mysql容器,再后台运行

# 注意,docker run  镜像

使用该命令:如果本地没有,会先pull,再run

5.进入容器内部和退出容器

5.1进入容器

1.查询机器上运行的容器 docker ps

2.进入容器

docker exec -it 容器id/bin/bash

docker exec -it 427 /bin/bash

 #  exec真正的作用是在容器内执行命令,而不是真正的进入到容器内部

1.因为 /bin/bash这个命令,就相当于与这个容器建立了连接,所以我们可以和容器做交互,当我们关闭这个连接的时候,就会自动结束掉这个容器。

2.执行exec命令:

    docker exec -it 容器id ls  # 查询根路径所有文件

5.2退出容器
# 命令:exit

    1.使用exit退出容器

    2.如果不是则会自动退出容器
-it 进入容器退出) 与 (-id 进入容器退出)区别:
# -it 进入容器退出(前台容器自动结束【后台停止运行】)

1.在我们使用 -it 参数直接进入该容器的时候,使用exit退出的时候这个容器就会自动结束。

    - 此时后台就没有该运行中的容器。

# -id 进入容器退出(前台容器自动结束【后台正常运行】)   

2.如果使用 -id 后台运行容器的时候,使用 docker exec进入该容器,此时使用exit退出该容器的话,只是退出该容器,并没有从后台结束该容器,该容器还会在后台运行这。

文件拷贝(宿主机和容器互相拷贝文件)

# 1.从宿主机拷贝到容器内部

    docker cp 宿主机文件 容器id:容器路径

    docker cp /home/a.txt 427:/home     

# 2.从容器中拷贝到宿主机

    docker cp 容器id:容器路径 宿主机路径(起别名)

    docker cp 427:home/a.txt a.txt

设置容器的IP地址:

  • 使用 Docker 网络命令创建一个自定义的网络,并指定子网和网关。然后,您可以在运行容器时使用 --net 和 --ip 参数来分配静态 IP 地址。例如,您可以执行以下命令1:
docker network create --subnet=192.168.56.0/24 --gateway=192.168.56.1 mynetwork
docker run --net mynetwork --ip 192.168.56.40 -it ubuntu bash

  • 使用 Docker Compose 工具来定义和运行多个容器,并在 docker-compose.yml 文件中配置网络和 IP 地址。例如,您可以使用以下配置2:
version: '3'
services:ubuntu:image: ubuntunetworks:mynetwork:ipv4_address: 192.168.56.40
networks:mynetwork:driver: bridgeipam:driver: defaultconfig:- subnet: 192.168.56.0/24gateway: 192.168.56.1

然后,您可以使用 docker-compose up 命令来启动容器。

在dicker ubuntu容器中如何查看IP地址

查看在docker ubuntu容器中的IP地址,有以下几种方法:

  1. 进入容器内部后,使用`cat /etc/hosts`命令,会显示自己以及(--link)软连接的容器IP¹。
  2. 使用`docker inspect <container id>`或者`docker inspect --format ' { { .NetworkSettings.IPAddress }}' <container id>`或者`docker inspect -f ' { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' container_name_or_id`命令,可以查看容器详细信息,里面包含IP地址信息²³⁴。
  3. 使用`docker inspect -f ' { {.Name}} - { {.NetworkSettings.IPAddress }}' $ (docker ps -aq)`或者`docker inspect -f ' { {.Name}} - { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' $ (docker ps -aq)`或者`docker inspect --format=' { {.Name}} - { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' $ (docker ps -aq)`命令,可以获取所有容器名称及其IP地址²³⁵。

参考链接:

(1) 获取/显示docker容器的ip地址 - CSDN博客. https://bing.com/search?q=%e5%9c%a8docker+ubuntu%e5%ae%b9%e5%99%a8%e4%b8%ad%e5%a6%82%e4%bd%95%e6%9f%a5%e7%9c%8bIP%e5%9c%b0%e5%9d%80.
(2) 如何获取 Docker 容器的 IP 地址 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/474638529.
(3) 查看docker 容器中的IP地址 - halberd.lee - 博客园. https://www.cnblogs.com/halberd-lee/p/12519294.html.
(4) 查看docker 容器的ip地址_查询docker ip_我是大头鸟的博客-CSDN博客. https://blog.csdn.net/datouniao1/article/details/103856583.
(5) docker ubuntu 查看ip_51CTO博客. https://blog.51cto.com/topic/docker-ubuntu-chakanip.html.
(6) 获取/显示docker容器的ip地址 - CSDN博客. https://blog.csdn.net/HaroldPQHaroldPQ/article/details/123459871.
(7)https://blog.csdn.net/2201_75529678/article/details/128113610

如何往dicker ubuntu容器里传文件? 

往docker ubuntu容器里传文件。根据我的搜索结果,有以下几种方法:

  1. 使用`docker cp`命令,可以在宿主机和容器之间复制文件。格式如下:
  2. 宿主机向容器传送文件:`docker cp 本地文件的路径 container_id:容器内的路径`²³⁴。
  3. 容器向宿主机传送文件:`docker cp container_id:容器内的路径 本地保存文件的路径`²³⁴。
  4. 进入容器内部后,使用`rz`命令,可以把本地电脑文件传到容器。输入`rz`就会弹出文件选项框,选择文件上传¹⁵⁶。


(1) 传输文件到docker容器 - 五毛钱的饼 - 博客园. https://www.cnblogs.com/fsong/p/11335251.html.
(2) 将文件从Ubuntu本机上传至Docker容器中_ubuntu传文件到docker容器_鹰KING的博客-CSDN博客. https://blog.csdn.net/weixin_51589360/article/details/122069045.
(3) Docker和Ubuntu主机互传复制文件_软件工程小施同学的博客-CSDN博客. https://blog.csdn.net/u013288190/article/details/103223824.
(4) docker学习13-docker容器的文件导入和导出 - 上海-悠悠 - 博客园. https://bing.com/search?q=%e5%a6%82%e4%bd%95%e5%be%80docker+ubuntu%e5%ae%b9%e5%99%a8%e9%87%8c%e4%bc%a0%e6%96%87%e4%bb%b6.
(5) docker学习13-docker容器的文件导入和导出 - 上海-悠悠 - 博客园. https://www.cnblogs.com/yoyoketang/p/12131002.html.
(6) docker学习13-docker容器的文件导入和导出 - 腾讯云. https://cloud.tencent.com/developer/article/1574278.

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

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

相关文章

DNS部署与安全详解(上)

文章目录 一、DNS二、域名组成1. 域名组成概述2. 域名组成 三、监听端口四、DNS解析种类1. 按照查询方式分类&#xff1a;2. 按照查询内容分类&#xff1a; 五、DNS服务器搭建过程1. 先确保服务器的IP地址是固定的2. 安装DNS软件 一、DNS DNS全称Domain Name Service&#xff0…

大文件裁剪阿里云oss上传 plupload

亲测有效 home/include_upload_maxfile.jsp 效果如下 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%String path request.getContextPath();%><%page import"com.home.base.DBRow"%> &l…

求解n阶勒让德多项式的值

描述 用递归方法求n阶勒让德多项式的值&#xff0c;递归公式为&#xff1a; 在主函数中输入一个整数n和一个实数x&#xff0c;调用函数 legendre(n,x)&#xff0c;并输出其返回值。 输入 第一行输入一个整数n&#xff0c;表示阶数&#xff1b;第二行输入一个实数x。 输出 …

【机器学习】 贝叶斯理论的变分推理

许志永 一、说明 贝叶斯原理&#xff0c;站在概率角度上似乎容易解释&#xff0c;但站在函数立场上就不那么容易了&#xff1b;然而&#xff0c;在高端数学模型中&#xff0c;必须要在函数和集合立场上有一套完整的概念&#xff0c;其迭代和运算才能有坚定的理论基础。 二、贝叶…

Gson:解析JSON为复杂对象:TypeToken

需求 通过Gson&#xff0c;将JSON字符串&#xff0c;解析为复杂类型。 比如&#xff0c;解析成如下类型&#xff1a; Map<String, List<Bean>> 依赖&#xff08;Gson&#xff09; <dependency><groupId>com.google.code.gson</groupId><art…

MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象

书接上文 MyBatis – 执行流程 我们通过SqlSession获取到了UserMapper对象&#xff0c;代码如下&#xff1a; // 获取SqlSession对象 SqlSession sqlSession sqlSessionFactory.openSession();// 执行查询操作 try {// 获取映射器接口UserMapper userMapper sqlSession.get…

vue SKU已知sku.tree算出sku.list类目值和id

已知sku.tree算出sku.list类目值和id <van-skuref"sku"v-model"showBase":close-on-click-overlay"closeOnClickOverlay":goods"skuData.goods_info":goods-id"skuData.goods_id":hide-stock"skuData.sku.hide_stoc…

数据结构---B树

目录标题 B-树的由来B-树的规则和原理B-树的插入分析B-树的插入实现准备工作find函数insert中序遍历 B-树的性能测试B-树的删除B树B树的元素插入B*树的介绍 B-树的由来 在前面的学习过程中&#xff0c;我们见过很多搜索结构比比如说顺序查找&#xff0c;二分查找&#xff0c;搜…

mac安装nacos,M1芯片

第一步&#xff0c;官网下载 》nacos官网 去github中下载对应的版本&#xff0c;本人下载的是1.4.1版本 在这儿选择其他的版本&#xff0c;下面这里选择 tar.gz 压缩包 解压后放到一个非中文的目录下&#xff0c;我选择在 user目录下面创建一个other目录&#xff0c;将使用的环…

[回馈]ASP.NET Core MVC开发实战之商城系统(五)

经过一段时间的准备&#xff0c;新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始&#xff0c;在之前的文章中&#xff0c;讲解了商城系统的整体功能设计&#xff0c;页面布局设计&#xff0c;环境搭建&#xff0c;系统配置&#xff0c;及首页【商品类型&#xff0c;ba…

freeswitch的mod_xml_curl模块动态获取dialplan

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 mod_xml_curl模块支持从web服务获取xml配置&#xff0c;本文介绍如何动态获取dialplan配置。 环境 centos&#xff1a;CentOS release 7.0 (Final)或以上版本 freeswitch&#xff1a;v1.6.20 GCC&#xff1a;4.8.5…

小乌龟(TortoiseGit)连接GitLab

目录 &#x1f35f;写在前面 &#x1f35f;实验目标 &#x1f35f;安装gitlab &#x1f37f;1、安装依赖 &#x1f37f;2、下载清华gitlab包 &#x1f37f;3、安装gitlab &#x1f37f;4、修改配置文件 &#x1f37f;5、管理命令 &#x1f35f;访问gitlab &#x1f35f;界面设置…

【WebRTC---源码篇】(二:一)PeerConnection详解

Track的添加 上图是整体流程图 RTCErrorOr<rtc::scoped_refptr<RtpSenderInterface>> PeerConnection::AddTrack(rtc::scoped_refptr<MediaStreamTrackInterface> track,const std::vector<std::string>& stream_ids) {RTC_DCHECK_RUN_ON(signal…

Spring Cloud Eureka 和 zookeeper 的区别

CAP理论 在了解eureka和zookeeper区别之前&#xff0c;我们先来了解一下这个知识&#xff0c;cap理论。 1998年的加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式有三个指标。Consistency&#xff0c;Availability&#xff0c;Partition tolerance。简称即为CAP。…

AIGC大模型ChatGLM2-6B:国产版chatgpt本地部署及体验

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自然语言任务…

GIS在地质灾害危险性评估与灾后重建中的应用教程

详情点击链接&#xff1a;GIS在地质灾害危险性评估与灾后重建中的实践技术应用 前言 地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质…

【python】使用Selenium和Chrome WebDriver来获取 【腾讯云 Cloud Studio 实战训练营】中的文章信息

文章目录 前言导入依赖库设置ChromeDriver的路径创建Chrome WebDriver对象打开网页找到结果元素创建一个空列表用于存储数据遍历结果元素并提取数据提取标题、作者、发布时间等信息判断是否为目标文章提取目标文章的描述、阅读数量、点赞数量、评论数量等信息将提取的数据存储为…

Django使用uwsgi+nginx部署,admin没有样式解决办法

Django使用uwsginginx部署,admin没有样式解决办法 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径&#xff0c;没有使用虚拟环境则改为你python安装路径下的static server {listen 8008;server_name location; #改为自己的域名&#xff0c;没域名…

【Linux】五种IO模型

文章目录 1. IO基本概念2. 五种IO模型2.1 五个钓鱼的例子2.2 五种IO模型2.2.1 阻塞IO2.2.2 非阻塞IO2.2.3 信号驱动IO2.2.4 IO多路转接2.2.5 异步IO 1. IO基本概念 认识IO IO就是输入和输出&#xff0c;在冯诺依曼体系结构中&#xff0c;将数据从输入设备拷贝到内存就叫输入&am…

中国1km分辨率月最低温度数据集(1901-2021年)介绍

该数据为中国逐月最低温度数据&#xff0c;空间分辨率为0.0083333&#xff08;约1km&#xff09;&#xff0c;时间为1901.1-2021.12。数据格式为NETCDF&#xff0c;即.nc格式。数据单位为0.1 ℃。该数据集是根据CRU发布的全球0.5气候数据集以及WorldClim发布的全球高分辨率气候…