Docker实战-操作Docker容器实战(一)

导语

在之前的分享中,我们介绍了关于如何去操作Docker镜像,下面我们来看看如何去操作容器。

简单来讲,容器是镜像运行的一个实例,与镜像不同的是镜像只能作为一个静态文件进行读取,而容器是可以在运行时进行写入操作的。同时容器中的应用进程是处于一个运行状态的,而在镜像中的应用程序只是一个应用程序的文件。

如果说虚拟机模拟的是一个计算机操作系统,那么容器就相当于一个独立运行新的一个应用,及其必要的运行环境的组合。

下面我们就来详细的介绍有关Docker容器使用相关的内容。

如何创建一个容器?

新建容器

我们可以使用 docker create 命令来创建一个容器,例如

bash 复制代码
[root@localhost ~]# docker create -it ubuntu:18.04
86244eee4f2a4f06157d32a433e3f4107e242e4b6f69b27396004202e4909b0f
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS                   PORTS     NAMES
5cb48f5d7103   ubuntu:18.04   "/bin/bash"   3 hours ago   Exited (0) 3 hours ago             cool_nightingale

需要注意的是使用了docker create 命令创建完成的容器是处于一个静止的状态,我们可以使用docker start命令来启动它。当然docker create命令在使用的过程中还有很多的参数,我们可以在使用的时候通过docker create --help 命令来查看。

启动容器

使用docker start命令来启动一个已经创建好的容器

bash 复制代码
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS                   PORTS     NAMES
5cb48f5d7103   ubuntu:18.04   "/bin/bash"   3 hours ago   Exited (0) 3 hours ago             cool_nightingale
[root@localhost ~]# docker start 5cb48f5d7103
5cb48f5d7103
[root@localhost ~]# 

启动之后,我们可以通过docker ps 命令来查看运行中的容器

bash 复制代码
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS          PORTS     NAMES
5cb48f5d7103   ubuntu:18.04   "/bin/bash"   3 hours ago   Up 47 seconds             cool_nightingale
[root@localhost ~]# 

新建并且启动容器

除了创建容器之后,使用start命令进行启动,还可以直接新建容器并启动。我们可以使用 docker run 命令来完成这个操作,这个命令就是 create 命令和 start命令的整合。如下所示

bash 复制代码
[root@localhost ~]# docker run ubuntu:18.04 /bin/echo 'hello world'
hello world
[root@localhost ~]# 

当然这种操作在运行完成之后,容器并不会保留在正在运行的容器列表中,所以使用docker ps 查看之后内容为空。也就是说是一个临时创建,并没有持续运行。那么我们如何来实现守护运行呢?

守护态运行

在实际操作中,我们更多的时候需要让Docker容器以守护态来运行,因此,我们可以通过添加-d 参数来实现守护态运行。

bash 复制代码
[root@localhost ~]# docker run -d ubuntu:18.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
ae370749197f6cbbd694cf874ffe0e35c223584659ac11f018aec973d7b363d0
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
ae370749197f   ubuntu:18.04   "/bin/sh -c 'while t..."   4 seconds ago   Up 3 seconds             nice_varahamihira
[root@localhost ~]# 

查看容器输出

想要获取到容器输出的内容,可以通过 docker logs 命令进行查看。

bash 复制代码
[root@localhost ~]# docker logs ae370749197f
hello world
hello world

如何停止容器

停止一个容器可以通过 pause/unpause 、stop和prune等命令来操作。

暂停容器

使用docker pause命令来暂停一个正在运行中的容器

bash 复制代码
[root@localhost ~]# docker pause ae370749197f
ae370749197f
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                  PORTS     NAMES
ae370749197f   ubuntu:18.04   "/bin/sh -c 'while t..."   3 minutes ago   Up 3 minutes (Paused)             nice_varahamihira
[root@localhost ~]# 

处于暂停状态的容器可以使用 docker unpause 命令来恢复到运行状态

bash 复制代码
[root@localhost ~]# docker unpause ae370749197f
ae370749197f
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
ae370749197f   ubuntu:18.04   "/bin/sh -c 'while t..."   4 minutes ago   Up 4 minutes             nice_varahamihira
[root@localhost ~]# 

终止容器

使用docker stop命令来终止一个容器运行。

bash 复制代码
[root@localhost ~]# docker stop ae370749197f
ae370749197f
[root@localhost ~]# 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# 

还可以使用docker stop -t 命令来停止,执行这个命令之后先会等待10秒然后在发送停止容器的命令。

容器停止之后,执行 docker container prune 命令,就会自动清除掉所有的停止状态的容器。

bash 复制代码
[root@localhost ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
ae370749197f6cbbd694cf874ffe0e35c223584659ac11f018aec973d7b363d0
3eb583d3483b1e1f1c3bc8e7feea7b250d43e9843a75ced32e49e73da2356493
49f14786a502978527a628fd85bbc9d5ff144158bca2145f4bed929f7552ece8
Total reclaimed space: 0B
[root@localhost ~]# 

总结

上面我们演示了如何去创建一个容器,如何运行一个容器,如何去暂停容器和停止容器,并且介绍了如何清理停止中的容器。在后续的分享中,我们还会介绍如何进入到容器,如何删除容器等操作,敬请期待吧!

相关推荐
芯的一天几秒前
windows下DockerDesktop命令行方式指定目录安装
windows·docker
学思之道20 分钟前
给Linux操作系统命令取个别名
linux·运维·经验分享·学习方法
dong_beijing44 分钟前
GO语言工程构建示例-mac和linux适用
linux·运维·服务器
先生沉默先1 小时前
Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)
运维·nginx·webgl
是芽芽哩!1 小时前
【Kubernetes】常见面试题汇总(五十八)
云原生·容器·kubernetes
帅气的人1231 小时前
使用 docker-compose 启动 es 集群 + kibana
elasticsearch·docker
獨枭1 小时前
Ubuntu 通过 Docker 搭建 GitLab
ubuntu·docker·gitlab
2201_761199042 小时前
nginx 负载均衡1
linux·运维·服务器·nginx·负载均衡
suri ..2 小时前
【Linux】进程第三弹(虚拟地址空间)
linux·运维·服务器
害羞的白菜2 小时前
Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)
linux·运维·笔记·jmeter·nginx·centos·负载均衡