Docker Hub 上有大量的高质量的镜像能够用,这里咱们就说一下怎么获取这些镜像。
从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:html
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker
中拉取指定版本的镜像好比:linux
docker pull mongo:3.2.4 dockre pull redis:3.2
具体的选项能够经过 docker pull --helpnginx
要想列出已经下载下来的镜像,可使用docker image ls
或docker images
命令。web
若是要删除本地的镜像,可使用 docker image rm 命令,其格式为:redis
$ docker image rm [选项] <镜像1> [<镜像2> ...]
/bin/bash
是linux
的命令行工具,相似于window
的cmd
进入dos
系统。docker
docker ps #查看启动的容器 docker ps -a #查看全部容器,包含没有启动的容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另一个是将在终止状态(stopped
)的容器从新启动。
由于 Docker 的容器实在过轻量级了,不少时候用户都是随时删除和新建立容器。 编程
语法:ubuntu
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND
: 容器启动后进入容器中要执行的命令.segmentfault
OPTIONS:
(经常使用选项)centos
-d: 让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下 -t: 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i: 则让容器的标准输入保持打开。 -name:为容器命名 -v: 建立数据卷 -p: 绑定端口
docker run
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
例如:
docker run -p 5000:5000 –name web training/webapp
更多的时候,须要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,能够经过添加 -d
参数来实现。
$ docker run -d CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp
启动一个 bash 终端,容许用户进行交互。
$ docker run -it CONTAINER [CONTAINER...] /bin/bash
-t
:选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i
: 则让容器的标准输入保持打开。
在交互模式下,用户能够经过所建立的终端来输入linux
命令
例如:建立centos容器而且进入centos容器中
docker run -it centos /bin/bash
$ docker stop CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp
$ docker start CONTAINER [CONTAINER...]
例如:
docker stop web
$ docker restart CONTAINER [CONTAINER...]
例如:
docker restart web
$ docker rm CONTAINER [CONTAINER...]
例如:
docker rm web
$ docker logs CONTAINER [CONTAINER...]
例如:
docker logs web
docker exec
:在运行的容器中
执行命令
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d :分离模式: 在后台运行-i :即便没有附加也保持STDIN 打开
-t :分配一个伪终端
$ docker exec –it CONTAINER /bin/bash
例如:
docker exec –it web
docker cp ed0f8bb24f3e:/opt/webapp/app.py d:/www
ed0f8bb24f3e: 容器id
/opt/webapp/app.py: 容器中的文件
d:/www: 主机文件夹
docker cp d:/www/文件 ed0f8bb24f3e:/opt/webapp/
tag的做用主要有两点:一是为镜像起一个容易理解的名字,二是能够经过docker tag来从新指定镜像的仓库,这样在push时自动提交到仓库。
将同一IMAGE_ID的全部tag,合并为一个新的
# docker tag 195eb90b5349 seanlook/ubuntu:rm_test
新建一个tag,保留旧的那条记录
# docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag
数据卷 是一个可供一个或多个容器使用的特殊目录,能够绕过联合文件系统(UFS),为一个或多个容器提供访问。数据卷设计的目的在于对数据的持久化
,它彻底独立于容器的生命周期,所以Docker不会在删除容器时删除其挂载的数据卷,也不会存在相似垃圾收集的机制。
数据卷提供不少有用的特性:
注意:数据卷的使用,相似于Linux下对目录或文件进行mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。
将本地主机中的代码运行在docker
容器中。
受权本地磁盘
运行一个nginx容器 ,-v 挂起一个卷,nginx用来访问网页的地址 , -d 以守护进程来运行,--name 给一个名字
docker run -d --name nginx -v /usr/share/nginx/html/ nginx
检查容器的运行状态
docker inspect nginx
对index.html文件作一些改动
echo "hello docker" > index.html
docker run -p 8090:80 -d -v $PWD/html:/usr/share/nginx/html nginx docker run -d -v d:/www/webapp:/opt/webapp training/webapp
# -v 表示的是volume(数据卷) --name 名字 nginx 是这个容器的基础镜像 docker create -v $PWD/data:/usr/share/nginx/html --name data_container nginx
运行一个新的容器,把上面提供数据的容器当作数据卷挂载到当前的容器中运行,-it表示交互的方式运行,会直接进入到这个容器中
docker run -it --volumes-from data_container nginx /bin/bash root@772cbe131d01:/usr/share/nginx/html# echo "Hello Nginx&Docker" > index.html
退出容器查看data目录:
是的,你能够将Docker理解为一个轻量化的虚拟机,至于咱们常常说的什么Tomcat镜像、MySQL镜像之类的,只是这个轻量化的虚拟机中安装了相应的软件。镜像的名字也就说明了镜像的功能。
是的,构建Docker镜像、运行Docker容器,都须要安装Docker,但这是一劳永逸的,由于咱们使用的是安装了各类各样功能软件的Docker镜像和Docker容器。