docker入门

1. Hello World

首先使用docker pull从镜像仓库Docker Hub下载hello-world镜像,

root@cg:~# docker pull hello-world:latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
root@cg:~# 

使用 docker run在容器内运行应用程序,输出Hello world

root@cg:~# docker run hello-world:latest  
  
Hello from Docker!
This message shows that your installation appears to be working correctly.
  
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
  
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
  
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
  
For more examples and ideas, visit:
 https://docs.docker.com/get-started/
  
root@cg:~# 

各个参数解析如下:

  • docker,docker的二进制执行文件。

  • run,与前面的docker组合以运行一个容器。

  • hello-world:latest,指定要运行的镜像。

  • /bin/echo "Hello world",在启动的容器里执行的命令

以上命令的含义为:docker以hello-world:latest镜像创建一个新容器,并运行了该容器输出了相关信息。 接下来,使用Ubuntu:16.04镜像生成容器,并输出hello world,首先下载ubuntu:16.04镜像,

root@cg:~/Desktop# docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
0a01a72a686c: Pull complete 
cc899a5544da: Pull complete 
19197c550755: Pull complete 
716d454e56b6: Pull complete 
Digest: sha256:3f3ee50cb89bc12028bab7d1e187ae57f12b957135b91648702e835c37c6c971
Status: Downloaded newer image for ubuntu:16.04
docker.io/library/ubuntu:16.04
root@cg:~/Desktop# 

接着,运行

docker run

命令使用Ubuntu容器输出hello world,命令如下:

root@cg:~/Desktop# docker run ubuntu:16.04 /bin/echo "hello world"
hello world
root@cg:~/Desktop# 

该命令的含义为:docker以

ubuntu 16.04

 镜像创建一个新容器,然后在容器里执行

bin/echo "Hello world"

,最后输出结果。


2. 运行交互式容器

通过docker的两个参数

-i -t

,让docker运行的容器实现"对话"的能力:

root@cg:~/Desktop# docker run -i -t ubuntu:16.04 /bin/bash
root@3f05c5e19375:/#

各个参数解析:

  • -t: 在新容器内指定一个伪终端或终端。

  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

注意上图中的第二行root@3f05c5e19375:/#,此时我们已进入一个 ubuntu 16.04 系统的容器

在容器中使用命令 `cat /proc/version查看当前系统的版本信息

root@cg:~/Desktop# docker run -i -t ubuntu:16.04 /bin/bash
root@3f05c5e19375:/# cat /proc/version
Linux version 4.4.0-131-generic (buildd@lgw01-amd64-015) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018
root@3f05c5e19375:/# 

在容器中使用命令

ls

查看当前目录下的文件列表

root@3f05c5e19375:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@3f05c5e19375:/# 

通过

exit

命令或者使用

CTRL+D

退出容器。

root@3f05c5e19375:/# exit
exit
root@cg:~/Desktop#

注意第三行中 root@cg:~/Desktop# 表明已退出当前的容器,返回到当前的主机中。


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

使用以下命令创建一个以进程方式运行的容器

root@cg:~/Desktop# docker run -d ubuntu:16.04 /bin/bash -c "while true;do echo hello world; sleep 1; done"
efdb36b237c57bc6ae5ad6b6bcd9857adb5a134a85387b2095bbde070431fed4
root@cg:~/Desktop# 

在输出中,没有看到期望的 "hello world",而是一串长字符:

efdb36b237c57bc6ae5ad6b6bcd9857adb5a134a85387b2095bbde070431fed4      

这个长字符串叫做容器ID,对每个容器来说都是唯一的。可以通过容器ID操作、查看对应的容器。
首先,我们需要确认容器有在运行,可以通过

docker ps

来查看:

root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE                  COMMAND                            CREATED                STATUS                 PORTS               NAMES
efdb36b237c5        ubuntu:16.04        "/bin/bash -c 'while\u2026"   10 minutes ago      Up 10 minutes                           naughty_hellman
root@cg:~/Desktop#

输出详情介绍:

  • CONTAINER ID:容器 ID。

  • IMAGE:使用的镜像。

  • COMMAND:启动容器时运行的命令。

  • CREATED:容器的创建时间。

  • STATUS:容器状态,共包含7种状态。

    • created:已创建

    • restarting:重启中

    • running:运行中

    • removing:迁移中

    • paused:暂停

    • exited:停止

    • dead:死亡

  • PORTS:容器的端口信息和使用的连接类型(tcp\udp)。

  • NAMES:自动分配的容器名称。

在宿主主机内使用

docker logs

命令,查看容器内的标准输出:

root@cg:~/Desktop# docker logs efdb36b237c5
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
...

使用容器名称查看日志:

root@cg:~/Desktop# docker logs naughty_hellman
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
...


4. 停止容器

使用

docker stop

命令来停止容器:

root@cg:~/Desktop# docker stop efdb
efdb
root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@cg:~/Desktop# 

通过

docker ps

查看,容器已经停止工作。 注意,在上述命令中,容器ID只使用了

efdb

,而没有写上完整的“efdb36b237c5”,这是由于docker会自动按照前缀搜索,如果某个容器ID可以和这个前缀匹配,则会定位到该容器。因此可以使用

efdb

这种简写的方式,当然,如果确定只有一个容器以

e

开头,也可以直接用命令

docker stop e

root@cg:~/Desktop# docker start e
e
root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE               COMMAND                                    CREATED                  STATUS              PORTS               NAMES
efdb36b237c5        ubuntu:16.04        "/bin/bash -c 'while\u2026"     34 minutes ago      Up 2 seconds                              naughty_hellman
root@cg:~/Desktop# docker stop e
e
root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@cg:~/Desktop# 

同样地,在停止容器时,也可以使用容器名称来操作:

root@cg:~/Desktop# docker start e
e
root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
efdb36b237c5        ubuntu:16.04        "/bin/bash -c 'while\u2026"   37 minutes ago      Up 2 seconds                            naughty_hellman
root@cg:~/Desktop# docker stop naughty_hellman
naughty_hellman
root@cg:~/Desktop# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值