欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

文摘  Docker的基本使用以及Docker Hello World示例

Docker 本站 780 0评论

Docker系统有两个程序:Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,管理着所有的容器。Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下,Docker服务端和客户端运行在一台机器上。


一、Docker的基本使用


1.docker基础命令


可以通过在终端输入Docker命令来查看所有的参数。

docker基础命令包含docker操作、镜像操作、容器操作以及其他相关操作,以下列举了一些常用的命令,更多请参考官方文档,或者使用–help命令查看。


查看docker信息

$docker info

Containers: 1  #1个容器

Running: 1    #1个容器正在运行

Paused: 0

Stopped: 0

Images: 5   #5个镜像

Server Version: 1.12.3


查看docker版本

$docker -v

Docker version 17.04.0-ce, build 4845c56

$docker version

Client:

Version:      17.04.0-ce

API version:  1.28

Go version:   go1.7.5

Git commit:   4845c56

Built:        Wed Apr 5 18:55:11 2017

OS/Arch:      linux/amd64

Server:

Version:      17.04.0-ce

API version:  1.28

Go version:   go1.7.5

Git commit:   4845c56

Built:        Wed Apr 5 18:55:11 2017

OS/Arch:      linux/amd64


镜像操作


查看本地镜像列表: 

docker images -a  #-a可以查看所有的image    


其他镜像操作:

docker search (image-name) 查询镜像 example:docker search ubuntu

docker history (image-name) 查看镜像的历史版本

docker push (image-name) 将镜像推送到registry

docker pull image-name:tag pull镜像 example:docker pull ubuntu:latest

docker rmi  <image id>   删除镜像(先stop并删除镜像上的所有容器)

docker rmi $(docker images -q) 删除全部镜像

docker tag image-id imagename:tag 修改镜像的tag标签

docker load -i test.tar 从tar文件中载入镜像

docker save image > test.tar 保存镜像为tar文件


容器操作


创建容器:

docker run --rm -ti ubuntu /bin/bash    

–rm 一旦进程退出,则删除容器

-ti 进入交互模式

ubuntu 容器的镜像名字

/bin/bash 要运行的命令

docker ps -a(显示所有容器,包括已经stop的)    

进入容器内部(shell):

docker exec -ti centos /bin/bash    


容器操作:

docker attach container 进入容器交互式界面

docker diff  container 列出容器内发生变化的文件与目录

dcoker logs ID(容器的ID,可以用docker ps查看)   查看docker上的容器的状态

docker stop ID(或者容器名字)  关闭运行中的容器

docker start ID 开启容器

docker restart ID  重启运行中的容器

docker stop ID docker rm ID  移除容器(先关闭再删除)

docker kill [options] container 杀死容器的主进程

docker stop $(docker ps -a -q) 停止所有container

docker rm $(docker ps -a -q)   移除所有container

docker commit ID new镜像名字(只能字母加数字) 将容器的状态保存为镜像

docker export container > test.tar  将容器打包成tar文件

docker cp container:path hostpath  从容器内复制文件到指定的路径


其他操作:

docker import http://example.com/example.tar  远程导入文件

docker login [options][server]  用来登陆自己的registry

docker inspect container/image  收集容器的信息(ip地址,端口等)

docker wait container  阻塞


官网的在线模拟器只提供了有限的命令,无法保证所有的命令可以正确执行。


1.查看Docker的版本

$ docker version

11-f_35f838fab62ac3b88854866d43f3c286.jpg


2.搜索可用的docker镜像

使用docker最简单的方式莫过于从现有的容器镜像开始。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

命令行的格式为:docker search 镜像名字

eg:使用命令行的工具来检索名字叫做tutorial的镜像。

$docker search tutorial

22-f_09ffb80668a46ce34622e307fc9a6175.jpg


3.学会使用docker命令来下载镜像

下载镜像的命令非常简单,使用docker pull命令即可。(译者按:docker命令和git有一些类似的地方)。在docker的镜像索引网站上面,镜像都是按照用户名/镜像名的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。

eg:通过docker命令下载tutorial镜像。

$docker pull learn/tutorial

33-f_478dba24c3844682449973b8882cac2e.jpg提示:执行pull命令的时候要写完整的名字,比如"learn/tutorial"。


4.在docker容器中运行hello world!

docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

eg:在我们刚刚下载的镜像中输出"hello word"。为了达到这个目的,我们需要在这个容器中运行"echo"命令,输出"hello word"。

$docker run learn/tutorial echo "hello word"

44-f_ad3522a2d0f16c846599f72758119e0c.jpg提示:docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。


5.在容器中安装新的程序

下一步我们要做的事情是在容器里面安装一个简单的程序(ping)。我们之前下载的tutorial镜像是基于ubuntu的,所以你可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping。

注:apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

eg:在learn/tutorial镜像里面安装ping程序。

$docker run learn/tutorial apt-get install -y ping

55-f_13b663cb470cc0bd23bef41049059c52.jpg提示:在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。


6.保存对容器的修改

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。

$docker commit 698 learn/ping

66-f_263bf8b6fcdfc4e5ae998c9ede9b7bcb.jpg提示:

1.运行docker commit,可以查看该命令的参数列表。

2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)

3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)


7.运行新的镜像

ok,到现在为止,你已经建立了一个完整的、自成体系的docker环境,并且安装了ping命令在里面。它可以在任何支持docker环境的系统中运行啦!(译者按:是不是很神奇呢?)让我们来体验一下吧!

eg:在新的镜像中运行ping www.google.com命令。

$docker run lean/ping ping www.google.com

77-f_dca1d5478895d4fb3ea43e630b7dfe1b.jpg提示:一定要使用新的镜像名learn/ping来运行ping命令。(译者按:最开始下载的learn/tutorial镜像中是没有ping命令的)


8.检查运行中的镜像

现在你已经运行了一个docker容器,让我们来看下正在运行的容器。

使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。

eg:查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。

$ docker inspect efe

88-f_4cb3b362cd622d6ac2f28ea7a7946413.jpg提示:可以使用镜像id的前面部分,不需要完整的id。


9.发布docker镜像

现在我们已经验证了新镜像可以正常工作,下一步我们可以将其发布到官方的索引网站。还记得我们最开始下载的learn/tutorial镜像吧,我们也可以把我们自己编译的镜像发布到索引页面,一方面可以自己重用,另一方面也可以分享给其他人使用。

eg:把learn/ping镜像发布到docker的index网站。

$ docker push learn/ping

99-f_a0ecdc2a884a9b05cef5e9ed26c3ba6a.jpg提示:

1. docker images命令可以列出所有安装过的镜像。

2. docker push命令可以将某一个镜像发布到官方网站。

3. 你只能将镜像发布到自己的空间下面。这个模拟器登录的是learn帐号。


二、Docker Hello World


Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world

~$ docker run ubuntu:15.10 /bin/echo "Hello world"

Hello world

各个参数解析:

docker: Docker 的二进制执行文件。

run:与前面的 docker 组合来运行一个容器。

ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

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

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。


1.运行交互式的容器

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

~$ docker run -i -t ubuntu:15.10 /bin/bash

root@dc0050c79503:/#

各个参数解析:

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

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

此时我们已进入一个 ubuntu15.10系统的容器

我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表

11-docker20.png

我们可以通过运行exit命令或者使用CTRL+D来退出容器。


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

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

~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

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

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看

~$ docker ps

CONTAINER ID:容器ID

NAMES:自动分配的容器名称


在容器内使用docker logs命令,查看容器内的标准输出

~$ docker logs 2b1b7a428627

22-docker20.png

~$ docker logs amazing_cori

33-docker20.png


3.停止容器

我们使用 docker stop 命令来停止容器:

44docker25.png

通过docker ps查看,容器已经停止工作:

~$ docker ps

55docker26.png


也可以用下面的命令来停止:

~$ docker stop amazing_cori


转载请注明: ITTXX.CN--分享互联网 » Docker的基本使用以及Docker Hello World示例

最后更新:2018-11-13 17:53:20

赞 (2) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽