【docker】容器基础操作

获取镜像
默认情况下,使用docker pull命令,会从官方的Docker Hub库中将镜像拉取到本地。

首先介绍这条命令的格式:

docker pull [OPTIONS] <仓库名><标签>  

其中,

docker pull:Docker拉取镜像的命令关键词;
[OPTIONS]:命令选项;
仓库名:仓库名的格式一般为<用户名>/<软件名>。对于Docker Hub,如果不指定用户名,则默认为library,即官方镜像;
标签:标签是区分镜像不同版本的一个重要参数,<仓库名>:<标签>会唯一确定一个镜像。默认为latest。
例如,我们要从Docker Hub官方仓库拉取一个Ubuntu 14.04的官方镜像,其语句如下:

docker pull ubuntu:14.04  

启动一个容器
在拉取到一个镜像之后,也就为容器准备了运行环境。下面我们将介绍如何使用镜像启动一个容器。

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

第一种方式:新建并启动。

docker run命令会基于指定的镜像创建一个容器并且启动它。docker run的基本语法如下:

docker run [OPTIONS] 镜像名 [COMMAND] [ARG]  

其中,

docker run: Docker创建并启动容器的命令关键词;
OPTIIONS: 命令选项,最常用的包括-d后台运行容器并返回容器ID,-i以交互模式运行容器,-t为容器分配一个伪输入终端,–name 指定启动容器的名称。更多选项请参考Docker帮助文档;
镜像名: 以<仓库名>:<标签>的方式来指定;
COMMAND: 设置启动命令,该命令在容器启动后执行;
ARG: 其他一些参数。

docker run实例一
创建并启动一个容器,容器中具有ubuntu的运行环境,输出hello docker。

docker run ubuntu:14.04 echo 'hello docker'

docker run实例二
创建并启动一个容器,容器中具有ubuntu的运行环境,容器名为firstContainer,为容器分配一个终端,与用户进行交互。

docker run -it --name firstContainer ubuntu /bin/bash

这里如果报错,那么-it去掉

第二种方式:启动一个已经终止的容器

虽然Docker容器是非常轻量的,这意味着一般情况下,我们在启动完容器并完成操作之后都会将容器删除掉。但是有些时候我们会进入之前创建的容器,而docker run每次都会创建一个新容器,显然不符合我们的需求。这种时候,可以使用docker start命令,使用容器名或者容器id启动一个已经终止的容器。

docker start [OPTIONS] 容器 [容器2...] 

其中:

docker start: Docker启动容器的命令关键词;
OPTIIONS: 命令选项;
容器: 需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。
假设一个名为firstContainer的容器处于终止状态,现在需要将它启动,可以这么做:执行docker start firstContainer,命令执行后,尝试启动firstContainer容器,并执行该容器的启动命令。

但是如果想启动第一个实例创建的容器,既不知道容器的名字(因为我没有指定)而且也不知道它的id。该怎么办呢?

查看容器信息
Docker中有这样一条命令docker ps,可以查看容器的信息,包括容器ID,基础镜像,启动命令,创建时间,当前状态,端口号,容器名字。

如果不加任何参数,只执行docker ps,将会显示所有运行中的容器。例如执行docker ps,如下图所示,在当前的Docker环境中,只有一个正在运行的容器,它的容器Id是fe263c9359dd,基于ubuntu:latest镜像,启动命令为“/bin/bash”,创建时间为2分钟之前,当前状态为“Up 2 minutes”,也就是已经运行了2分钟了,容器名为:firstContainer。
在这里插入图片描述

使用docker stop停止一个容器
docker stop可以用来终止一个正在运行的容器。它的命令格式如下:

docker stop [OPTIONS] Container [Container ...] 

其中:
docker stop: Docker停止容器的命令关键词;
OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;
Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。

#!/bin/bash

#注意如果想在右侧使用命令行模拟操作,请先输入
#service docker start
#否则将不能执行docker命令

#以ubuntu镜像为基础,创建并在后台启动了一个名为firstContainer的容器(-d看不懂没关系,下一关会介绍的)
#拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
docker run -itd --name firstContainer ubuntu /bin/bash
#将firstContainer容器停止!
#********** Begin *********#
docker stop  firstContainer
#********** End **********#

使容器在后台运行
      因为本关要使用docker run -d命令,所以在本关的开始,将花费少量篇幅介绍这条命令。
      有些时候,需要让容器在后台运行而不是直接把“启动命令”的结果输出在当前宿主机下。此时,可以通过添加-d参数来实现。
举个例子,假如不使用-d参数执行下面这条命令:

ker run ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" 

那么会一直在控制台输出hello world
下面是进入容器的实例

要求进入正在运行的的容器的内部。具体要求如下:

进入一个名为container2的容器内部,并在容器内部创建一个1.txt文件。

#注意如果想在右侧使用命令行模拟操作,请先输入
#service docker start
#否则将不能执行docker命令

#基于ubuntu镜像创建并在后台启动一个名为container2的容器
#拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
docker run -itd --name container2 ubuntu /bin/bash
#由于测试环境不允许从终端输入,所以请使用docker exec完成任务
#********** Begin *********#
docker exec container2 touch 1.txt
#********** End **********#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值