【云原生】Docker 使用详解

Docker 在隔离的容器中运行进程。之前总结了Docker镜像的使用详解,本篇按照之前测试openGauss容器过程中总结出来使用Docker容器的常用命令。


在这里插入图片描述

一、常用命令

下面按照使用容器中的流程: 创建并启动容器 > 查询容器 > 进入容器 > 退出容器 > 停止容器 > 启动/重启容器 > 删除容器来介绍Dockers常用命令,带领小伙伴快速入门。

在这里插入图片描述

1.创建并启动容器

docer run
当操作者执行docker run时,运行的容器进程是隔离的,因为它有自己的文件系统,自己的网络,以及自己与主机分离的隔离进程树。

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

docker run命令必须指定一个IMAGE来派生容器。image开发人员可以定义与以下相关的默认值:
−分离或前台运行
−容器识别
−网络设置
−CPU 和内存的运行时限制
使用docker run [OPTIONS]操作人以添加或覆盖开发人员设置的image默认值。操作人可以修改image和 Docker 运行时超多参数,–help的时候你会发现列表超长。
以openGauss启动示例:

docker run --name wodexiaoguaiguai --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /enmotech/opengauss:/var/lib/opengauss -p 15432:5432  enmotech/opengauss:3.0.0

--name 表示为启动的容器起个名字,这个名字在宿主机上唯一。所以有时候,容器停止后再用相同的命令启动就会报错,XXX is already in use by container。解决办法参考《使用Docker部署openGauss》的Q&A。
--privileged 表示是否使用特权模式,设置–privileged=true提升系统执行权限。设置为true后,容器内的root用户才是真正的root权限,否则只是一个普通用户。
-d 表示要以分离模式(也就是后台模式)启动容器,这样执行后会返回容器ID,不会进入交互界面。如果想要进入交互界面需要-i 和-t参数。
-e 表示要设置环境变量,多个环境变量就多个 -e ,至于需要什么环境变量就跟镜像息息相关了。
-v 由于容器自身挥一挥衣袖不带走一片云彩的特点,这个参数表示绑定一个卷,实现数据的持久化,冒号前面表示宿主机的目录,后面是容器内目录。目录不存在会自动生成。
-p 端口映射,示例中将宿主机上的15432端口映射到容器的5432端口。还有一种映射参数是大写的P,-P表示容器内部端口随机映射到主机的端口。
最后的enmotech/opengauss:3.0.0表示使用的镜像名称。

2.列出所有容器

docker ps -a
使用docker ps可以查出当前运行(STATUSUP)的容器。而docker ps -a可以查出所有的容器,包括Exited状态的容器,a 表示all的意思。示例:

[root@pekphisprb70593 software]# docker ps 
CONTAINER ID   IMAGE                       COMMAND                  CREATED      STATUS      PORTS                                                 NAMES 
828cc4491684   enmotech/opengauss:latest   "entrypoint.sh -M st…"   7 days ago   Up 7 days   5432/tcp,0.0.0.0:6432->6432/tcp,:::6432->6432/tcp   opengauss_slave1 
7213afbe01df   enmotech/opengauss:latest   "entrypoint.sh -M pr…"   7 days ago   Up 7 days   0.0.0.0:5432->5432/tcp,:::5432->5432/tcp             opengauss_master

这里第一列的CONTAINER ID就是容器ID,最后一列的NAME就是docker run时指定的容器名称。后面会用到。
还可以使用-q 参数只获取容器ID,看起来清爽许多。

[root@pekphisprb70593 software]# docker ps -a -q 
828cc4491684 
7213afbe01df

3.进入容器

docker exec -it 容器名称/ID /bin/bash
容器-d 模式启动后,需要登录容器才能在其中进行操作。docker exec适用于在现有容器中运行命令的情况。此时需要进行交互,所以需要加上熟悉的 -it。

docker exec -it 828cc4491684 /bin/bash

docker exec -it opengauss_master /bin/bash

4.退出容器

exit
做完想做的事情后,退出容器就是很通用的 exit。

5.停止容器

docker stop 容器名称/ID
需要停止容器的时候可以通过该命令完成,指定容器ID或容器名称都可。
停止单个容器

docker stop opengauss_master

停止所有容器

docker stop $(docker ps -a -q)

6.启动/重启一个已停止的容器

docker start/restart 容器名称/ID
这种启动适用于之前已经通过docker run创建好容器的场景。用法和stop 类似,都比较简单。示例

docker start 828cc4491684

7.删除容器

docker rm 容器名称/ID
容器用完后就需要删除释放资源。
删除单个容器

docker rm opengauss_master

删除所有容器

docker rm $(docker ps -a -q)

二、使用帮助

Docker有大量的命令,大概有40+,很难把所有的都记住。

在这里插入图片描述

一般我们只需要记住常用的一些,对于其他可以运行Docker --help。

[root@pekphisprb70593 software]# docker --help 

Docker 1.13+引入了子命令来帮助管理原来大量的Docker命令。两种方式只是组织方式不同,执行功能相同。在帮助文本中,我们可以看到Management Commands(管理命令)和Commands(命令),通过管理命令对所有命令进行分类,更有助于Docker命令的使用。
例如,查询所有容器可以使用docker ps ,也可使用新的子命令docker container ls。两者执行效果相同,同样,docker image ls也可以替代docker images。如图:

在这里插入图片描述

对于单独的命令,我们还可以使用docker [command] --help进行查询帮助。例如:

[root@pekphisprb70593 software]# docker pull --help 
 
Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST] 
 
Pull an image or a repository from a registry 
 
Options: 
  -a,--all-tags                Download all tagged images in the repository 
      --disable-content-trust   Skip image verification (default true) 
      --platform string         Set platform if server is multi-platform capable 
  -q,--quiet                   Suppress verbose output 

openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
构建镜像最具挑战性的一点是使镜像大小尽可能的小。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建。您可以选择
本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: '3' services: nginx: build: /root/docker_demo/nginx/ ports: - &q
环境 docker-machine主机:192.168.1.9 docker主机:192.168.1.10 步骤: 安装docker-machine 创建ssh密钥对,实现两主机无密登录 创建docker主机,命名host1 变更docker环境变量 运行容器查看两端是否同步 镜像容器同步测试成功
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
https://blog.csdn.net/wanglei_storage/article/details/77508620 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is grea
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 删除异常停止的docker容器 docker rmi -f `docker images | grep '<none>' | awk &#3
什么是Docker Compose 在微服务盛行的今天,我们通常是这么定义Compose的:对容器的统一启动和关闭的编排工具。 但是我以前还是有个疑惑,谁会用Compose在一台服务器上部署多个服务呢?干脆直接用单体服务就行了!直到我遇到了以下的一个需求,让我明白了在一台服务器上不得不用多个服务的时
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常。通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程。 VS中的附加进程非常强大,目前提供了9种常用的附加方式。 在当前.Net Core支持跨平台的大背景下,其中Linux环境和
https://www.cnblogs.com/bigberg/p/8867326.html 一、简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行
.Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" /&g
原文 https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 co