Docker系列第04部分:查看容器+创建容器+启动容器+文件挂载+删除容器_docker 怎么启动之前启动过的容器-程序员宅基地

技术标签: kubernetes  容器  运维  后端  # Docker全系列讲解  docker  

容器的创建和启动

1.1 虚拟机的生命周期

1.2 容器的生命周期

2、容器操作

2.1 查看容器

  • 查看正在运行容器:

docker ps
  • 查看所有的容器(启动过的历史容器)

docker ps –a

  • 查看最后一次运行的容器:

docker ps -l
  • 查看停止的容器

docker ps -f status=exited

2.2 创建与启动容器

# 作用:
	利用镜像创建出一个Created 状态的待启动容器
# 命令格式:
	docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

创建容器常用的参数说明:

创建容器命令:docker run

   -i --interactive:表示运行容器

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

   --name :为创建的容器命名。

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

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

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

    
# 命令参数(COMMAND\ARG):
	COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令
	ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等

    
# 创建容器命令演示:
docker create --name test-container centos:centos7 ps -A
# 我们创建了一个容器,并指定在启动容器的时候执行:docker ps -a
docker create -ti --name test-container2 centos /bin/bash

2.2.1 创建交互式容器

创建一个交互式容器并取名为mycentos

docker run -it --name=mycentos centos:7 /bin/bash

 开启另外一个终端来查看状态:

docker ps 

# 1.如果是一个夯在哪里得命令,则使用exit退出容器
# 2.如果不是则会自动退出容器

 退出当前容器:

exit

然后用ps -a 命令查看发现该容器也随之停止:

2.2.2 守护式容器

创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器

命令如下(容器名称不能重复):

docker run -di --name=mycentos2 centos:7

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

 登录守护式容器:

docker exec -it container_name (或者container_id)/bin/bash(exit退出时,容器不会停止)

 命令如下:

docker exec -it mycentos2 /bin/bash

2.2.4 容器创建并启动 – 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

进入容器内部和退出容器

3.1 进入容器

# 方式1:
	1.查询机器上运行的容器
	docker ps
    2.进入容器
	docker exec -it 容器id/bin/bash
    docker exec -it 427 /bin/bash
    
# 第二种:ssh连接(容器内部装ssh服务端)(不常用)    

​​​​​​​

#  exec真正的作用是在容器内执行命令,而不是真正的进入到容器内部
1.因为 /bin/bash这个命令,就相当于与这个容器建立了连接,所以我们可以和容器做交互,当我们关闭这个连接的时候,就会自动结束掉这个容器。
 
2.执行exec命令:
	docker exec -it 容器id ls  # 查询根路径所有文件

# top 命令(容器内部执行查询进程)

# 容器内部是纯净的空间,安装:vim 

3.2 (-it 进入容器退出) 与 (-id 进入容器退出)区别

# -it 进入容器退出(前台容器自动结束【后台停止运行】)
1.在我们使用 -it 参数直接进入该容器的时候,使用exit退出的时候这个容器就会自动结束。
	- 此时后台就没有该运行中的容器。
 
# -id 进入容器退出(前台容器自动结束【后台正常运行】)    
2.如果使用 -id 后台运行容器的时候,使用 docker exec进入该容器,此时使用exit退出该容器的话,只是退出该容器,并没有从后台结束该容器,该容器还会在后台运行这。

4 停止与启动容器

  • 停止正在运行的容器:docker stop $CONTAINER_NAME/ID

docker stop mycentos2

  • 启动已运行过的容器:docker start $CONTAINER_NAME/ID

docker start mycentos2

3  文件拷贝

3.1 如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 宿主机文件 容器id:容器路径
        
docker cp /home/a.txt 427:/home  

3.2 也可以将文件从容器内拷贝出来

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

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

解释:cp 当前目录下的a文件到 容器中的/usr/local/下的a文件

[root@localhost ~]# docker exec -it mycentos2 /bin/bash
[root@32400e14bea6 /]# cd /usr/local/
[root@32400e14bea6 local]# ll

4 目录挂载(映射)

可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器里所对应的目录。

4.1 创建容器 并挂载宿主机目录 到容器中的目录下


docker run -di --name=mycentos99 -v /宿主机要挂载目录:/容器要挂载路径 指定镜像

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

# -v 	: 映射
 
# 挂载作用:
1.一旦挂载,以后宿主机目录内修改,同样影响容器内部
2.容器内修改同样影响宿主机

 如果你共享的是多级的目录,可能会出现权限不足的提示。这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数--privileged=true来解决挂载的目录没有权限的问题。

docker run -di --privileged=true -v /root/test:/usr/local/test --name=mycentos4 centos:7

 

5 查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据:

# 命令:
# 查看容器详细信息
	- docker inspect 容器id
# 只查看容器ip地址
	- docker inspect --format='{
   {.NetworkSettings.IPAddress}}' 容器名称/容器ID

docker inspect mycentos2

 

也可以直接执行下面的命令直接输出IP地址:

docker inspect --format='{
   {.NetworkSettings.IPAddress}}' mycentos2
# 其实宿主机与容器之间是通过网关进行通信的
	- 查看网关
    	# 容器内下载该命令:
    	- 下载查看ip信息的命令:yum install net-tools
        - ifconfig:查看网络相关信息

# 所以此时我们在连接redis的时候就有两种方式
	- 第一种:
    	- 因为我们做了端口映射,所以我们可以通过:云服务器地址:6377连接
     - 第二种:
    	- 此时我们已经知道了容器的ip地址,所以就可以通过: 容器的ip地址:6379 (此时端口号就是它本身的6379因为是直接通过它本身的ip建立的连接)
# 每个容器都有ip地址,每一个ip地址标志着一台唯一服务器,所以就实现了宿主与容器之间的隔离性,每一个容器就相当于一个虚拟机

 

6 删除容器

  • 删除指定的容器: 这个命令只能删除已经关闭的容器,不能删除正在运行的容器

docker rm $CONTAINER_ID/NAME
  • 删除所有的容器:

docker rm `docker ps -a -q`

 或者:

[root@localhost ~]# docker rm $(docker ps -aq)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39237205/article/details/126501290

智能推荐

【TeeChart .NET教程】(十八):TeeChart工具集合(中)——系列工具-程序员宅基地

文章浏览阅读6.5k次。上一篇:【TeeChart .NET教程】(十八):TeeChart工具集合(上)——其它工具 【下载TeeChart.Net最新版本】(一)介绍本教程重点介绍TeeChart for.NetTools,这是一个易于实现的代码单元,用户可以使用这些代码为TeeCharts添加额外的功能,有十种新工具可供部署:(二)系列工具2.1 光标工具光标工具将光标添加到图表中,该图..._teechart .net

初识Disruptor并发框架_disruptor eventhandlergroup-程序员宅基地

文章浏览阅读206次。一、什么是DisruptorMartin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使`用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一..._disruptor eventhandlergroup

火狐插件(开发者)清空缓存-程序员宅基地

文章浏览阅读4.1k次。在火狐游览器的扩展插件中搜索:Clear Cache and Data

用浏览器AXURE RP生成的文件网站,安装Axure-RP-Extension-for-Chrome-程序员宅基地

文章浏览阅读3.3k次。当我们打开AXURE RP生成的文件网站时,一般的浏览器会提示我们使用Google的浏览器,使用了Google浏览器又会提示我们需要安装一个Axure-RP-Extension-for-Chrome插件,但是这个插件时Google提供的,然而现在国内是把谷歌屏蔽了的,所以无法在线正常安装。但是我们可以使用离线安装。下面地址为Axure-RP-Extension-for-Chrome插件的百

laravel自动验证功能抛出问题render处理_laravel 验证抛出error-程序员宅基地

文章浏览阅读2k次。laravel有表单自动验证功能。不用不久可惜了么。但是这对前后台分离的项目不太适配,因为接口错误信息不一致。主要修改错误抛出问题的格式,为了保持给前端的错误信息一致。。修改这个文件。修改这个方法。 public function render($request, Exception $exception) { if ($exception instanceof V..._laravel 验证抛出error

字典树-程序员宅基地

文章浏览阅读105次。4189 字典题目描述最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1<=n<=200000)现在skyzhong需要在字典里查询以某一段字母开头的单词如:skyzhong想查询a那么只要是a开头的单词就可以了skyzhong只想知道里面有没有这一个单词(因为没有他就不查了)若有,请输出YES。若没有,请输出NO输入描述..._字典树

随便推点

ASP.NET MVC5 采用Unity(代码和配置文件两种方式)实现IOC_.net mvc unity 配置-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏4次。Unity是微软Patterns & Practices团队所开发的一个轻量级的,并且可扩展的依赖注入(Dependency Injection)容器,它支持常用的三种依赖注入方式:构造器注入(Constructor Injection)、属性注入(Property Injection),以及方法调用注入(Method Call Injection).现在Unity最新的版本的1.2版,可以在微软的开源站点http://unity.codeplex.com下载最新的发布版本和文档。通过使用Unity_.net mvc unity 配置

在树莓派上安装vim并配置_在树莓派上编程必备ide-程序员宅基地

文章浏览阅读2.1k次。先安装vim的升级版:sudo apt install vim-gtk然后进入配置文件:vim .vimrc输入以下命令后保存:set numberfiletype onset history=1000set nocompatibleset shiftwidth=4color eveningsyntax onset autoindentset smartindents..._在树莓派上编程必备ide

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨_高德地图 .circleeditor用法-程序员宅基地

文章浏览阅读1.1k次。http://www.cnblogs.com/milkmap/p/3707711.html摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口。除了官方通用的鱼骨、鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib。当然本文还会介绍自定义插件的使用。 --------------------_高德地图 .circleeditor用法

解决移动端line-height不居中问题-程序员宅基地

文章浏览阅读3.2k次。问题:在移动端中使用line-height=height实现文字垂直居中时,在安卓手机会发现文字偏上!解决:1、利用flex布局中的垂直居中属性实现垂直居中,父元素设置display:flex;height:1rem;align-items: center;子元素 transform: scale(0.5); transform-origin: le..._line-height不居中,display:flex不居中

第九届蓝桥杯——第六题-递增三元组_java递增三元组 给定三个整数数组 a = [a1, a2, ... an], b = [b1, -程序员宅基地

文章浏览阅读5.6k次,点赞3次,收藏2次。标题:递增三元组给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, k) 满足:1. 1 &lt;= i, j, k &lt;= N 2. Ai &lt; Bj &lt; Ck 【输入格式】 第一行包含一个整数N。第二行包含N个整数A1, A2, ... AN。第三..._java递增三元组 给定三个整数数组 a = [a1, a2, ... an], b = [b1, b2, ... bn], c = [c1, c2, ... cn], 请你统计有多少个三元组(i, j, k) 满足: 1. 1 <= i, j, k <= n 2. ai < bj < ck 【输入格式】 第一行包含一个整数n。 第二行包含n个整数a1, a2, ... an。 第三行包含n

freeswitch xml_curl模块使用_freeswitch mod_xml_curl 功能-程序员宅基地

文章浏览阅读3.2k次。freeswitch xml_curl模块使用 替换掉directory,ivr,dialplan,等各种本地配置xml文件freeswitch 数据库生成xml文件部分代码 &lt;?php/** * @package FS_CURL *//** * define for the time that execution of the script started ..._freeswitch mod_xml_curl 功能

推荐文章

热门文章

相关标签