Docker安装
传送门https://docs.docker.com/,中文翻译http://widuu.com/docker
官网上介绍的很详细,基本上各个系统的安装方法都有
在自己的系统安装成功后,可以用以下命令从官网下载一个虚拟系统(以ubuntu为例)
$ docker pull ubuntu
docker镜像非常小,ubuntu的镜像大约只有50M
下载成功后,运行以下命令打开虚拟系统的终端
$ docker run -it ubuntu bash
Docker常用命令
查看系统中所有的容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
592376ff3eb8 hello-world "/hello" 25 seconds ago Exited (0) 24 seconds ago prickly_wozniak
从docker hub上取得镜像
run命令找不到本地镜像时会从docker hub寻找该镜像并下载
$ docker run docker/whalesay cowsay boo
Unable to find image 'docker/whalesay:latest' locally
latest: Pulling from docker/whalesay
e190868d63f8: Downloading 7.013 MB/65.77 MB
e190868d63f8: Downloading 9.717 MB/65.77 MB
0b9bfabab7c1: Download complete
a3ed95caeb02: Verifying Checksum
00bf65475aba: Downloading 5.095 MB/37.71 MB
00bf65475aba: Downloading 7.847 MB/37.71 MB
8978f6879e2f: Download complete
8eed3712d2cf: Download complete
查看本机中的镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/whalesay latest fb434121fc77 3 hours ago 247 MB
hello-world latest 91c95931e552 5 weeks ago 910 B
images将列出所有在本地安装的镜像
删除本机中的镜像
$ docker rmi -f <REPOSITORY>
$ docker rmi -f <IAMGE ID>
可以根据仓库名称或者镜像ID删除
执行命令
$ docker run <REPOSITORY> <command>
比如使用docker/whalesay运行cowsay命令
$ docker run docker/whalesay cowsay boo-boo
_________
< boo-boo >
---------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
保存docker镜像到指定目录
$ docker save <REPOSITORY> -o <outputfile>
Dockerfile
Dockerfile存在于docker镜像中,用来描述使用软件的环境和需要执行的命令
创建一个Dockerfile
1.新建一个文件夹
$ mkdir mydockerbuild
这个文件夹将作为你创建镜像的环境,即这个文件夹下的文件用于创建镜像
$ cd mydockerbuild
进入文件夹
2.创建Dockerfile
$ touch Dockerfile
用各种文本编辑器都可以,这里以vim为例
$ vim Dockerfile
3.编辑Dockerfile
FROM docker/whalesay:latest
使用FROM 说明docker基于哪一个镜像
RUN apt-get -y update && apt-get install -y fortunes
使用RUN 执行命令安装软件(fortunes这个软件用于随机打印一些名人名言)
CMD /usr/games/fortune -a | cowsay
当镜像所需要的软件都安装完之后,使用CMD 命令执行
最终编辑完的Dockerfile中有如下内容:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
4.保存Dockerfile
通过Dockerfile创建镜像
$ docker build -t <REPOSITORY> <PATH>
根据刚才编写的Dockerfile创建一个镜像
$ docker build -t docker-whale .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM docker/whalesay:latest
...
Step 2 : RUN apt-get -y update && apt-get install -y fortunes
...
Step 3 : CMD /usr/games/fortune -a | cowsay
---> Running in a8e6faa88df3
---> 7d9495d03763
Removing intermediate container a8e6faa88df3
Successfully built 7d9495d03763
docker build 会使用当前目录下的Dockerfile
运行镜像
首先查看本机中有哪些镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-whale latest 7d9495d03763 4 minutes ago 273.7 MB
docker/whalesay latest fb434121fc77 4 hours ago 247 MB
hello-world latest 91c95931e552 5 weeks ago 910 B```
运行Docker镜像
$ docker run docker-whale
_________________________________________
/ "He was a modest, good-humored boy. It \
\ was Oxford that made him insufferable." /
-----------------------------------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
Docker Hub
Tag and push 镜像
$ docker tag <IMAGE ID> YourHubID/repoName
$ docker images
$ docker login
$ docker push
现在去DockerHub上查看仓库,可以看到刚刚push的操作
pull 新的镜像
$ docker run <REPO_name_on_hub>
docker run找不到本地镜像的话会从HUB上去下载