1.docker search : 从Docker Hub查找镜像
docker search [OPTIONS] 镜像名
OPTIONS说明:
-
--automated :只列出 automated build类型的镜像;
-
--no-trunc :显示完整的镜像描述;
-
-s :列出收藏数不小于指定值的镜像。
可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、收藏数(表示该镜像的受关注程度)、是否官方创建(OFFICIAL)、是否自动构建 (AUTOMATED)。
2.拉取镜像
docker pull 镜像:版本号
如果不指定版本号,默认拉下来是最新的
3.运行
镜像是容器的基础,每次执行 docker run
的时候都会指定哪个镜像作为容器运行的基础
现在让我们以定制一个 Web 服务器为例子,来讲解镜像是如何构建的。
$ docker run --name webserver -d -p 80:80 nginx
这条命令会用 nginx
镜像启动一个容器,命名为 webserver
,并且映射了 80 端口(左边的也可以改成其他端口为对外暴露的,右边的是docker中的),这样我们可以用浏览器去访问这个 nginx
服务器。 输入localhost
现在,假设我们非常不喜欢这个欢迎页面,我们希望改成欢迎 Docker 的文字,我们可以使用 docker exec
命令进入容器,修改其内容。
$ docker exec -it webserver bash root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html root@3729b97e8226:/# exit exit
我们以交互式终端方式进入 webserver
容器,并执行了 bash
命令,也就是获得一个可操作的 Shell。
然后,我们用 <h1>Hello, Docker!</h1>
覆盖了 /usr/share/nginx/html/index.html
的内容。
现在我们再刷新浏览器的话,会发现内容被改变了。
现在我们定制好了变化,我们希望能将其保存下来形成镜像。
要知道,当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit
命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
$ docker commit --author "Tao Wang <twang2218@gmail.com>" --message "修改了默认网页" webserver nginx:v2
其中 --author
是指定修改的作者,而 --message
则是记录本次修改的内容。这点和 git
版本控制相似,不过这里这些信息可以省略留空。
新的镜像定制好后,我们可以来运行这个镜像。
docker commit
命令,手动操作给旧的镜像添加了新的一层,形成新的镜像
4.运行的参数
-d :代表后台运行容器,返回容器ID
--name: 自定义容器的名称,不加这命令docker会随便给一个名给你,所以建议打上这命令
-p :代表映射的端口 本地端口:镜像的默认端口(注意,每个软件默认端口是不同的)
-e: 配置mysql的root密码
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
--volume , -v: 绑定一个卷
docker run -p 12345:3306 --name mysqlyf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it centos:latest /bin/bash
root@b8573233d675:/#