docker教程之从一头雾水到不一头雾水
Posted shamo89
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker教程之从一头雾水到不一头雾水相关的知识,希望对你有一定的参考价值。
运行镜像
先查看下本地有哪些镜像
[[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 49f7960eb7e4 9 days ago 200 MB
运行镜像,在刚刚pull的centos镜像里输出一行hello world,可以使用REPOSITORY,也可以使用IMAGE ID
[[email protected] ~]# docker run 49f7960eb7e4 echo helloe world helloe world [[email protected] ~]# docker run centos echo helloe world helloe world
各个选项说明:
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像的标签
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:
[email protected]:~$ docker run -t -i ubuntu:15.10 /bin/bash
查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
[email protected]:~$ docker search httpd
更新镜像
我们可以通过命令 docker commit来提交容器副本。
[email protected]:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各个参数说明:
-
-m:提交的描述信息
-
-a:指定镜像作者
-
e218edb10161:容器ID
-
runoob/ubuntu:v2:指定要创建的目标镜像名
我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:
[email protected]:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v2 70bf1840fd7c 15 seconds ago 158.5 MB ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B
使用我们的新镜像 runoob/ubuntu 来启动一个容器
[email protected]:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash [email protected]:/#
构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
新建Dockerfile文件
[[email protected] ~]# touch Dockerfile
写入内容
[[email protected] ~]# cat Dockerfile
FROM alpine:latest
MAINTAINER xbf
CMD echo "Helloe Docker!"
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源,镜像alpine是专门为Docker准备的一个小巧的环境。
MAINTAINER xbf是告诉别人该镜像共享给别人是谁创建的。
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
[[email protected] ~]# docker build -t hello_docker .
Sending build context to Docker daemon 8.842 MB
Step 1/3 : FROM alpine:latest
Trying to pull repository docker.io/library/alpine ...
latest: Pulling from docker.io/library/alpine
ff3a5c916c92: Pull complete
Digest: sha256:e1871801d30885a610511c867de0d6baca7ed4e6a2573d506bbec7fd3b03873f
Status: Downloaded newer image for docker.io/alpine:latest
---> 3fd9065eaf02
Step 2/3 : MAINTAINER xbf
---> Running in 9445777fca4c
---> 4e250ecc7557
Removing intermediate container 9445777fca4c
Step 3/3 : CMD echo "Helloe Docker!"
---> Running in d5b5ad566ad1
---> 65d690c9d782
Removing intermediate container d5b5ad566ad1
Successfully built 65d690c9d782
参数说明:
-
-t :指定要创建的目标镜像名
-
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径,这里的.指的是当前目录
[[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello_docker latest 65d690c9d782 6 minutes ago 4.15 MB docker.io/centos latest 49f7960eb7e4 12 days ago 200 MB docker.io/stephenreed/jenkins-java8-maven-git latest 3670d4afa617 2 months ago 682 MB docker.io/alpine latest 3fd9065eaf02 5 months ago 4.15 MB docker.io/stephenreed/java8-jenkins-maven-git-nano latest 508ef553bf1a 3 years ago 1.5 GB
运行下刚刚创建的hello_docker镜像
[[email protected] ~]# docker run hello_docker Helloe Docker!
设置镜像标签
我们可以使用 docker tag 命令,为镜像添加一个新的标签。
[email protected]:~$ docker tag 860c279d2fec runoob/centos:dev
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
更多docker创建镜像示例
dockerfile+ubuntu+nginx搭建web环境
以上是关于docker教程之从一头雾水到不一头雾水的主要内容,如果未能解决你的问题,请参考以下文章