Docker入门实战(一)——Docker常用命令

什么是Docker?

Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment.

Docker容器是一个完整的文件系统,这个文件系统中包含了你的软件运行所需要的全部环境,如:软件的源码、运行环境、所需的软件等。也就是说,你的软件运行所需要的环境都包含在了Docker容器中,这样的话当你把代码部署到服务器上时就不需要考虑环境问题,只要服务器安装了Docker就能准确无误地运行你的软件。

Docker基本概念

镜像

镜像可以理解为一组指令的集合。这些指令确定你的软件运行所需要的环境,如确你需要什么操作系统、需要安装什么软件、需要执行什么命令。 当我们做完一个镜像后可以把它通过git的方式管理起来。

镜像仓库

镜像仓库用于存储同一镜像的不同版本。

容器

容器是镜像的运行实例,从使用者角度看它是一个完整的Linux系统。

Registry

Registry用于存储镜像仓库。Registry分为两种类型,一种是Docker官方提供的Registry,称为Docker Hub,它和Github一样,我们可以注册账号,并存储自己的镜像,也可以使用别人的镜像;另一种是自己搭建的Registry,由于Docker Hub是一个开源项目,因此我们可以把Docker Hub部署到我们的局域网中,从而拥有私有的Registry。

Docker常用命令

查看镜像

该命令会显示本地所有镜像:

docker images

结果如下:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chai/tomcat8        0.0.1               4af46f004a15        4 days ago          1.197 GB
chaimm/tomcat8      0.0.1               4af46f004a15        4 days ago          1.197 GB
ubuntu              latest              f8d79ba03c00        8 days ago          126.4 MB
centos              latest              970633036444        3 weeks ago         196.7 MB

REPOSITORY:镜像仓库的名字 TAG:该镜像的版本号 IMAGE ID:镜像的ID CREATED:创建时间 SIZE:镜像的大小

新建容器

方式一:

该命令会基于指定镜像创建一个新的容器:

docker run --name 容器名 -i -t 镜像名 /bin/bash

–name:为容器设置一个名字 -i -t:使得容器启动后能获取该容器的shell 镜像名:指定容器要基于哪一个镜像运行 最后一个参数是运行时需要需要执行的命令,这里执行/bin/bash使得容器运行后启动一个bash供我们和容器交互。

启动后结果如下:

[root@20fcdc5cdc57 local]# 

启动后我们将进入容器内部,获得一个用于和容器交互的shell,我们可以在这里对容器作任何操作,并且和操作一台Linux系统没有任何区别。

方式二:

docker run --name 容器名 -d 镜像名

上述命令将-i -t和/bin/bash换成了-d,从而可以使容器在后台运行,无交互式shell。 该命令执行后仅返回一个容器ID。

查看已创建的容器

docker ps -a

-a:能查看所有已经被创建的容器;不加这个参数仅会显示正在运行的容器。 执行结果如下:

CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS                     PORTS               NAMES
20fcdc5cdc57        chai/tomcat8:0.0.1   "/bin/bash"         4 days ago          Exited (0) 6 minutes ago                       tomcat8
d89068a849bd        centos               "/bin/bash"         4 days ago          Exited (0) 4 days ago                          high_ride

CONTAINER ID:该容器的ID IMAGE:该容器使用的镜像 COMMAND:启动时执行的命令 CREATED:容器创建时间 STATUS:当前运行状态 PORTS:该容器所开启的端口号 NAMES:容器的名字

启动已创建的容器

docker start 容器名

该命令执行后容器会在后台运行,只返回一个容器ID,若需要获取容器交互式shell,需要继续执行如下命令:

docker attach 容器名

在容器内执行命令

要在容器内执行命令有两种情况: 情况一:如果你已经进入容器内部,并获取了容器的shell,那么就执行执行命令即可; 情况二:如果容器在后台运行,那么你可以通过docker exec命令直接在宿主机上执行某个容器的命令,该命令的用法如下:

docker exec [参数] 容器名 命令

上述命令会在指定的容器中执行指定的命令。 如果你的命令无需交互,那么需要在参数部分加上-d,使得该命令在容器后台执行即可; 如果你的命令在执行过程中需要用户输入,那么需要在参数部分加上-i -t,并使用命令:/bin/bash,从而你就能进入容器内部,获取一个交互式的shell。

停止容器

方式一:

当你在容器内部,只要执行exit命令即可停止并退出容器。

方式二:

当容器处于后台运行的状态,你需要通过如下命令停止容器:

docker stop 容器名

获取容器参数

docker inspect 容器名

上述指令可以查看指定容器的所有配置信息,这些信息以JSON的形式返回,如下:

[
    {
        "Id": "20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b",
        "Created": "2016-08-15T13:45:50.99616017Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2016-08-20T02:50:13.565344395Z",
            "FinishedAt": "2016-08-20T02:51:31.574303352Z"
        },
        "Image": "sha256:4af46f004a1542f94b6a4178d1af7eaa896e45bcfaf1fd1955a6c08a36670c0d",
        "ResolvConfPath": "/var/lib/docker/containers/20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b/hostname",
        "HostsPath": "/var/lib/docker/containers/20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b/hosts",
        "LogPath": "/var/lib/docker/containers/20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b/20fcdc5cdc577460fb58bfe76eff743f176cfabbcbf4942401dc7aa35031a56b-json.log",
        "Name": "/tomcat8",
        "RestartCount": 0,
        "Driver": "aufs",
……………………

如果你只需要查看其中某个信息,可以使用-f或–format参数指定:

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名

删除容器

docker rm 容器名

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维前线

安装Docker Compose

安装Docker Compose 先决条件 Docker Compose依靠Docker Engine进行任何有意义的工作,确保您已经安装了Docker En...

3415
来自专栏IT派

使用 Docker 搭建 Java Web 运行环境

Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它。Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内...

822
来自专栏散尽浮华

Docker容器学习梳理-Dockerfile构建镜像

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一 种文件或脚...

2258
来自专栏性能与架构

Docker配置文件Dockerfile详解

image.png Dockerfile是用来创建新镜像的配置文件,和部署配置文件概念类似,例如 ant,通过执行一系列的指令来完成任务 Dockerfile分...

3314
来自专栏搜云库

Docker Hub 仓库使用,及搭建 Docker Registry

目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中...

29710
来自专栏测试开发架构之路

Docker学习以及镜像制作流程

2153
来自专栏编程坑太多

跟我一起学docker(七)--Dockerfile

1735
来自专栏Java架构师历程

docker学习笔记(命令)

1242
来自专栏向上的小草

Docker常用命令记录

-t 选项是让docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

1380
来自专栏北京马哥教育

docker容器技术系列五:Dockerfile详解

本系列教程由旺旺知识库授权进行发布 Dockerfile是一个具有规范格式的文件,根据适当的指令和语法,我们可以构建一个自定以镜像。但Dockerfile需要...

41812

扫码关注云+社区