docker 容器简单使用

安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装docker也可以使用 playwithdocker 提供的在线环境使用。链接:https://labs.play-with-docker.com/,不过对于免费版每天只要4小时使用时间。

docker简介

  • Docker是最受大众关注的容器技术,并且现在"几乎”成为事实上的容器标准。
  • 容器是一 种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

docker容器简单来理解就是一款虚拟机,不过他相对于传统的虚拟机来说有很多优势。具体参数对比如下表所示:
在这里插入图片描述
容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。

docker容器简单使用

如图,这里使用的是阿里的ECS服务器安装的Centos 7,如果我们想要测试一个命令在 Ubuntu上的执行效果的话,利用docker的特点可以很方便的做到,而如果是我们使用虚拟机就需要安装Ubuntu系统就显得很麻烦。
在这里插入图片描述
输入 docker 可以获得docker的参数列表,跳转至文章末尾查看 1

1、HelloWorld

查看镜像
命令 docker images 列出本地镜像。
在这里插入图片描述
拉取镜像
下面我们将在Centos上运行一个容器,需要用到 Ubuntu 的镜像。这里我们可以使用 docker pull : 从镜像仓库中拉取或者更新指定镜像。
docker pull [OPTIONS] NAME[:TAG|@DIGEST] -a :拉取所有 tagged 镜像 --disable-content-trust :忽略镜像的校验,默认开启
这里我已经有了 ubuntu15.10 就不再测试了。docker 镜像源由于某些原因都比较慢,我们可以设置镜像加速器加速,跳转至文章末尾查看

创建容器
docker run :创建一个新的容器并运行一个命令
Docker 允许在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

$ docker run ubuntu:15.10 /bin/echo "Hello world"
# 参数详情
# docker: Docker 的二进制执行文件。
# run: 与前面的 docker 组合来运行一个容器。
# ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
# /bin/echo "Hello world": 在启动的容器里执行的命令

Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world” 。ps:如果本地没有 Ubuntu 的镜像,创建容器时会自行向仓库 pull 该镜像。
在这里插入图片描述

2、运行交互式的容器

我们之前已将创建了一个 ubuntu 容器,并在该容器上成功输出了 “Hello world”。下面我们在ubuntu 容器启动一个 shell,并与之交互。

$ docker run -i -t ubuntu:15.10 /bin/bash
# -t: 在新容器内指定一个伪终端或终端。
# -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

注意,这里的6a5e5ed60662:/# 表示我们已进入一个 ubuntu15.10 系统的容器
输入: cat /etc/issue 查看发行版本
在这里插入图片描述
我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

3、启动容器(后台模式)

我们在运行某些程序的时候总是希望他们在后台运行,不希望他们在前台阻塞窗口。在Linux 下可以在执行命令后借一个 ‘&’ 使之在后台运行,在docker 中我们通过 -d 参数指定其在后台运行。

使用以下命令创建一个以进程方式运行的容器。该命令意为没隔一秒中打印一个 “Hello world”。

$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在输出中,我们没有看到期望的 “hello world”,而是一串长字符
“1a409b9bd25192b7a7b7ef0a1949385d60cb64c62431656a74692d3abf4b9a4d”
这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

查看容器进程
我们可以通过 docker ps 来查看正在运行的容器及其相关信息。
在这里插入图片描述

CONTAINER ID   IMAGE    COMMAND          CREATED       STATUS  PORTS                                NAMES                                                   
容器 ID     使用的镜像  启动容器时运行的命令  容器的创建时间 容器状态  容器的端口信息和使用的连接类型(tcp\udp)  自动分配的容器名称
# 其中,状态有7种:
# created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡

查看容器日志
在宿主主机内使用 docker logs 命令,查看容器内的标准输出

docker logs 1a409b9bd251   # 使用 docker logs id 或这 docker logs name 都可以

1a409b9bd251容器的输出n多个的“hello world”。
在这里插入图片描述

停止容器
我们使用 docker stop 命令来停止容器:

docker stop 1a409b9bd251  # 这里同样也可以用 docker stop awesome_shockley 方式停止容器

在这里插入图片描述

通过 docker ps 查看,容器已经停止工作。


# 以下中文部分为谷歌翻译后替换,可能存在误翻情况,仅做参考。
Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/home/stu/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker
                           context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/home/stu/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/home/stu/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/home/stu/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds                       管理构建
  config      Manage Docker configs               管理Docker配置
  container   Manage containers                   管理容器
  context     Manage contexts                     管理上下文
  engine      Manage the docker engine            管理Docker引擎
  image       Manage images                       管理图片
  network     Manage networks                     管理网络
  node        Manage Swarm nodes                  管理Swarm节点
  plugin      Manage plugins                      管理插件
  secret      Manage Docker secrets               管理Docker机密
  service     Manage services                     管理服务
  stack       Manage Docker stacks                管理Docker堆栈
  swarm       Manage Swarm                        管理群
  system      Manage Docker                       管理Docker
  trust       Manage trust on Docker images       管理对Docker映像的信任
  volume      Manage volumes                      管理卷

Commands:
  attach      将本地标准输入,输出和错误流附加到正在运行的容器
  build       从Dockerfile构建映像。
  commit      根据容器的更改创建新图像
  cp          在容器和本地文件系统之间复制文件/文件夹。
  create      创建一个新的容器
  deploy      部署新堆栈或更新现有堆栈
  diff        检查容器文件系统上文件或目录的更改
  events      从服务器获取实时事件
  exec        在正在运行的容器中运行命令
  export      将容器的文件系统导出为tar存档
  history     显示图像的历史记录。
  images      列出图片
  import      从压缩包中导入内容以创建文件系统映像。
  info        显示系统范围的信息
  inspect     返回有关Docker对象的低级信息
  kill        杀死一个或多个正在运行的容器
  load        从tar存档或STDIN加载图像
  login       登录Docker注册表
  logout      从Docker注册表注销
  logs        提取容器的日志
  pause       暂停一个或多个容器中的所有过程
  port        列出容器的端口映射或特定映射
  ps          列出容器
  pull        从注册表中提取图像或存储库
  push        将映像或存储库推送到注册表
  rename      重命名容器
  restart     重新启动一个或多个容器
  rm          删除一个或多个容器
  rmi         删除一个或多个镜像
  run         在新容器中运行命令
  save        将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT)
  search      在Docker Hub中搜索图像
  start       启动一个或多个已停止的容器
  stats       显示容器资源使用状态的活动流
  stop        停止一个或多个运行中的容器
  tag         创建一个标记TARGET IMAGE,它引用了SOURCE IMAGE
  top         显示容器的运行过程
  unpause     在一个或多个容器中取消进程的暂停
  update      更新一个或多个容器的配置
  version     显示Docker版本信息
  wait        阻塞直到一个或多个容器停止,然后打印其退出代码

Run 'docker COMMAND --help' for more information on a command.

设置镜像加速器
以阿里云为例,在阿里云的控制台首页输入 镜像容器服务
在这里插入图片描述
按照阿里云给出的教程操作即可。
在这里插入图片描述


  1. ↩︎
原创文章 131 获赞 128 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43919932/article/details/105093460