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 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Mysql连接错误:Lost connection to Mysql server at 'waiting for initial communication packet'

在远程连接mysql的时候,连接不上,出现如下报错: Lost connection to MySQL server at 'waiting for initi...

1918
来自专栏WindCoder

ELK实时日志管理-系统搭建

Filebeat轻量级的日志传输工具,可以读取系统、nignx、apache等logs文件,监控日志文件,传输数据到Elasticsearch或者Logst...

362
来自专栏技术博文

Linux查看程序被哪个端口占用

原因: 最近装mongodb,启动的时候,总是报错 #执行命令: mongod -f ./mongodb.conf #报错信息 listen(): bind(...

2645
来自专栏Android小菜鸡

通过apktool反编译APK

https://blog.csdn.net/vipzjyno1/article/details/21039349/

542
来自专栏古时的风筝

docker创建私有仓库

由于网速和大中华局域网效果,使得我们在DockerHub下载镜像的速度很慢,甚至一些国内的镜像仓库,也感觉速度不是很好。所以,很有必要在本地或者一个我们访问很快...

2089
来自专栏WindCoder

Tomcat设置虚拟目录

在tomcat文件夹的conf\catalina\localhost(对于Tomcat6版本及其以上,需要自己创建catalina和localhost这两个文件...

471
来自专栏GreenLeaves

tomcat

一  tomcat安装使用: 1.(前提条件)安装JDK,配置Java的环境变量. 2.tomcat分为安装版和解压版  安装版(一般给客户使用)  安装版默认...

2748
来自专栏Java开发

Elasticsearch-5.5.0安装head插件

环境 Windows7 JDK-1.8 ElasticSearch-5.5.0 node-v8.1.2-x64.msi git客户端

592
来自专栏繁花云

利用git做云存储(非dalao勿入)

390
来自专栏张戈的专栏

Redhat设置NFS挂载的简单步骤

初识 nfs 还是在测试 lvs 负载均衡的时候,为了保证代码的一致性,将一台 Realserver 作为 nfs 服务器,而其他 Realserver 均以 ...

3314

扫描关注云+社区