草庐IT

【云原生 • Docker】docker 环境搭建、docker 与容器常用指令大全

敬 之 2023-05-20 原文

目录

一、Docker 环境搭建

1. 准备工作(已有 Linux 环境可省略)

2. 安装 Docker

3. 设置 ustc 镜像

二、Docker/容器操作命令汇总

1. Docker 操作命令

2. 镜像相关命令

3. 查看容器

4. 创建容器

5. 停止与启动容器

6. 文件挂载

7. 目录挂载

8. 查看容器 IP 地址

9. 删除容器


一、Docker 环境搭建

1. 准备工作(已有 Linux 环境可省略)

在这里我们用 VM 虚拟机 + CentOS 的环境进行 Docker 部署(建议使用 CentOS 7 以上版本)

首先准备一台 CentOS 系统的虚拟机,可以看到主机的 IP 地址为 192.168.200.129;

为了更加直观,我将使用 Xhell 7 连接虚拟机进行操作演示;

2. 安装 Docker

第一步:yum 包更新到最新;

//更新yum
sudo yum update

第二步:安装需要的软件包,yum-util(提供 yum-config-manager 功能)device-mapper-persistent-datalvm2(devicemapper 驱动依赖)

//安装需要的包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

第三步:设置 yum 源为阿里云;

//设置阿里云源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

第四步:安装 Docker;

//安装docker
sudo yum install docker-ce

第五步:检查 Docker 版本;

//检查 docker 版本
docker -v

使用 docker -v 命令可以查看到版本号即说明安装成功。

3. 设置 ustc 镜像

Docker 安装完成之后还需要执行一个操作那就是设置国内镜像站点,否则 Docker 中下载操作会很慢。

ustc 是老牌 Linux 镜像服务提供者,它的 Docker 加速器速度很快,而且不需要注册,是真正的公共服务。

需要注意的是在设置之前要先启动 docker 服务,如果不启动服务就编辑 .json 文件是无法正常保存的,因为它无法找到 Docker 进程。启动 Docker 服务使用指令:

service docker start

然后 vi 进入文件 /etc/docker/daemon.json,在文件中添加以下内容;

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

退出保存即可。

二、Docker/容器操作命令汇总

1. Docker 操作命令

systemctl start docker  //启动 Docker;

systemctl stop docker  //停止 Docker;

systemctl restart docker  //重启 Docker;

systemctl status docker  //查看 Docker 状态;

systemctl enable docker  //开机自启动 Docker;

docker info  //查看 Docker 概要信息;

docker --help  //查看 Docker 帮助文档;

2. 镜像相关命令

docker images  //查看镜像(这些镜像都存储于 /var/lib/docker 目录下)

  • repository - 镜像名称;
  • tag - 镜像标签;
  • image id - 镜像 id;
  • created - 镜像的创建日期;
  • size - 镜像的大小;

docker search 镜像名称  //搜索镜像,从网络查找需要的镜像

  • name - 仓库名称;
  • description - 镜像描述;
  • stars - 用户评价,反映该镜像的受欢迎程度;
  • official - 是否官方;
  • automated - 自动构建,表示该镜像是由 Docker Hub 自动构建流程创建的。

docker pull 镜像名称  //拉取镜像,从中央仓库下载镜像到本地

如下载 centos 7 镜像:

docker rmi 镜像ID  //删除镜像,可根据镜像 ID 也可根据镜像名称

docker rmi `docker images -q`  //删除所有镜像

3. 查看容器

docker ps  //查看容器

docker ps -a  //查看所有容器

docker ps -l  //查看最后一次运行的容器

docker ps -f statu=exited  //查看停止的容器

4. 创建容器

docker run 

docker run 参数

包含参数如下:

  • -i  运行容器
  • -t  容器启动后自动进入其命令行
  • --name  为创建的容器命名
  • -v  表示目录映射关系,前者为宿主机目录,后者是映射到宿主机上的目录
  • -d  加了这个参数则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)
  • -p  表示端口映射,前者为宿主机端口,后者是容器内的映射端口

常用创建容器的方式为交互式创建容器和守护式创建容器,如下:

//交互式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash

//退出当前容器
exit
//守护式创建容器
docker run -di --name=容器名称 镜像名称:标签

//登录守护式容器
docker exec -it 容器名称/ID /bin/bash

5. 停止与启动容器

docker stop 容器名称/ID  //停止容器

docker start 容器名称/ID  //启动容器

6. 文件挂载

docker cp 需要拷贝的文件/目录 容器名称:目录  //将文件拷贝到容器内

docker cp 容器名称:目录 需要拷贝的文件/目录  //将文件从容器拷贝出来

7. 目录挂载

在创建容器时,我们可以将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机的目录文件从而直接影响容器了。

docker run -di -v 宿主机目录:容器目录 --name=容器名称 镜像名称:标签

如果共享多级的目录,可能会出现权限不足的提示。这是由于 CentOS 7 中的安全模块 selinux 将权限禁止了,这时候可以添加参数 --privileged=true 来解决此问题。

8. 查看容器 IP 地址

docker inspect 容器名称/ID  //查看容器 ip 以及相关的各种数据

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/ID  //查看容器 ip 地址并输出

9. 删除容器

docker rm 容器名称/ID  //删除指定的容器

需要注意的是如果想要删除一个容器,需要先停止该容器;且如果镜像中有运行状态的容器,也是无法删除容器的。

有关【云原生 • Docker】docker 环境搭建、docker 与容器常用指令大全的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  5. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  6. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  7. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  8. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  9. ruby-on-rails - 可移植 Ruby on Rails 环境 - 2

    我给自己买了一个新的8gigUSBkey,我正在寻找一个合适的解决方案来拥有一个可移植RoR环境来学习。我在谷歌上搜索了一下,发现了一些可能性,但我很想听听一些现实生活中的经历和意见。谢谢! 最佳答案 我喜欢InstantRails,非常容易使用,无需安装程序,也不会修改您的系统环境。 关于ruby-on-rails-可移植RubyonRails环境,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

  10. ruby-on-rails - 如何通过 URL 更改语言环境? - 2

    在我的双语Rails4应用程序中,我有一个像这样的LocalesController:classLocalesController用户可以通过此表单更改其语言环境:deflocale_switcherform_tagurl_for(:controller=>'locales',:action=>'change_locale'),:method=>'get',:id=>'locale_switcher'doselect_tag'set_locale',options_for_select(LANGUAGES,I18n.locale.to_s)end这有效。但是,目前用户无法通过URL更改

随机推荐