Docker系列第04部分:查看容器+创建容器+启动容器+文件挂载+删除容器

容器的创建和启动

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做多个端口映射 (下述单独演示)# 例子:rundocker run -it --name=myredis redis  # 这时就会启动redis容器并进去redis容器  docker run -id --name=oursql mysql  # 这时就不会进入mysql容器,再后台运行# 注意,docker run  镜像 
使用该命令:如果本地没有,会先pull,再run

进入容器内部和退出容器

3.1 进入容器

# 方式1:1.查询机器上运行的容器docker ps2.进入容器docker exec -it 容器id/bin/bashdocker 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}}' 容器名称/容器IDdocker 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)

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

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

相关文章

嵌入式软件面试(基础题)总结,不断更新

C/C/各种基础啊 1. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 2. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改…

java程序设计及实践实践代码_杭+新闻:姚争为老师把程序设计讲“活”了,满是代码的枯燥课程被学生“秒杀”...

通讯员 陈鑫 杨鹏飞记者 方秀芬作为专业选修课,Java程序设计和Web程序设计,这两门满是代码的课程,看似很枯燥,但在杭师大信息科学与工程学院却爆红,每学期都遭“秒杀”,以前线下课,提前20分钟准…

Docker系列第05部分:实战部署应用全流程

1 MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像: 1.2创建MySQL容器 docker run -di --namepinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:5.7 # -p 代表端口映射,格式为 宿主机映射端口:容器运行端口 # -e 代表添加…

SQL-ALTER-change和modify区别

ALTER 对于列的应用:1.更改列名格式:CHANGE old_col_name new_col_name column_definition保留old和new列名列名:a ---->b 列类型ALTER TABLE t1 CHANGE a b INTEGER;2.更改列类型,不改列名保留old和new的列名,即使…

Vim安装插件在命令行下看代码

这几天我又想抛弃source insight 了,主要是太慢了 安装如下 VIM万能插件 或者使用 sudo apt-get installexuberant-ctags 安装 我主要是使用函数跳转功能,需要记住几个指令 1、生成tags用来实现函数跳转 这样会生成一个tags文件,作为跳…

Docker系列第06部分:备份与迁移+dockerfile

1 备份与迁移 1.1 容器保存为镜像 docker commit pinyougou_nginx mynginx# pinyougou_nginx是容器名称 # mynginx是新的镜像名称 # 此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器1.2 镜像备份 docker save -o mynginx.tar mynginx #…

流浪地球开机动画包zip_影视日报|合家欢动画电影quot;许愿神龙quot;定档1.15;流浪地球加长版定档11.26...

1、合家欢动画电影"许愿神龙"定档1.15动画电影《许愿神龙》正式定档2021年1月15日,并发布定档海报。2、白客等万万兄弟助力易小星"沐浴之王"由易小星执导,彭昱畅、乔杉领衔主演,卜冠今、苇青主演,金世佳友情出…

Git 分布式版本控制工具01:Git介绍+下载+安装

1. 前言 1.1 什么是Git Git 是一个分布式版本控制工具,通过Git 仓库来存储和管理源代码文件文件。 在IDEA开发工具中可以集成Git: 集成后在IDEA中可以看到Git相关图标: 可以通过启动两个IDEA窗口模拟两个开发人员来展示Git的使用&#xf…

无法解析的外部符号,无法解析的外部命令

1.这个是因为有相关的lib包没有被引用进去 解决办法: 1. 2. 转载于:https://www.cnblogs.com/hcfan/p/6638980.html

Android Adb 源码分析

扭起屁股得意洋洋 最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔 谁知,好景不长,user版本…

kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr

前文《KVM 虚拟化环境搭建 - ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统,PVE 是方便,但还是有几点问题:第一:始终是商用软件,虽然可以免费用,但未来版本还免费么?商用的法律风险呢&#x…

Git 分布式版本控制工具02:Git代码托管服务列表与使用

1常用的Git代码托管服务 Git中存在两种类型的仓库,即本地仓库和远程仓库。 Git远程仓库中比较常用的有GitHub、码云、GitLab等。 名称网址说明gitHubGitHub: Where the world builds software GitHub一个面向开源及私有软件项目的托管平台,因为只支持…

Android系统root破解原理分析

上一篇文章 Android adb 源码分析 理论基础 root破解过程的终极目标是替换掉系统中的su程序。但是要想替换掉系统中su程序本身就是需要root权限的,怎样在root破解过程中获得root权限,成为我们研究的重点了。下面我们先清点一下我们需要破解系统情况&a…

常见字母缩写

1、ODBC:Open Database Connectivity,开放数据库连接; 2、TCP:Transport Control Protocol,传输控制协议; 3、URL:统一资源定位器; 4、HTTP:Hypertext Transfer Protoco…

基于Springboot外卖系统19:用户地址+默认收货地址

1. 用户地址簿功能 1.1 需求分析 地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。 同一个用户可以有多个地址信息,但是只能有一个默认地址。 对于地址簿管理,我们需要实现以下几个功能&#…

python获取返回值_python 调用 shell ,获取返回值和返回信息

网络上有各种方案解决python调用shell的解决方案,但是没有一个完美的,以下是本人整理的一个方案,比较完美地解决了同时解决获取返回值和返回信息。 def run_linux_cmd_quiet(i_cmd, i_nohup0): l_func_name__name__ . sys._getframe().f_cod…

基于Springboot外卖系统20:前端菜品展示+菜品数量查询

1 菜品展示 1.1 需求分析 用户登录成功后跳转到系统首页,在首页需要根据分类来展示菜品和套餐。如果菜品设置了口味信息,需要展示 按钮,否则显示按钮。 1.2 前端页面分析 在开发代码之前,需要梳理一下前端页面和服务端的交互过…

python 播放声音_如何用Python播放声音?

对于Windows,可以使用winsound。它内置import winsound winsound.PlaySound(sound.wav, winsound.SND_FILENAME) 应该能够在Linux上使用ossaudodev:from wave import open as waveOpen from ossaudiodev import open as ossOpen s waveOpen(tada.wav,rb…

Android Flash分区大小查看

正常的8G Flash有多少可以用的 这样算吧: 硬盘和U盘厂家的算法:8GB*10008000MB*10008000000KB*10008000000000B电脑系统的算法:8000000000B/10247812500KB/10247629.4MB/10247.45GB 所以U盘在7.4G左右是正常的,是电脑系统算法和厂…