常用命令
拉取docker镜像
$ docker pull image_name
复制
查看服务器上的镜像,docker的镜像文件保存在 /var/lib/docker 下
$ docker images
复制
删除容器(Remove one or more containers)
$ docker rm CONTAINER_ID
复制
删除所有停止的容器,docker ps -a -q会取出所有容器id,正在运行的容器不会被删除
$ docker rm $(docker ps -a -q)
复制
删除镜像
$ docker rmi IMAGE_ID
复制
$ docker rmi REPOSITORY:TAG
复制
查看正在运行的容器
$ docker ps
复制
查看所有容器
$ docker ps -a
复制
启动、停止、重启容器
$ docker start container_name/container_id
$ docker stop container_name/container_id
$ docker restart container_name/container_id复制
本地连接正在运行的容器,进入容器,本地输入输出
$ docker attach container_name/container_id
复制
查看docker信息
$ docker info
复制
从 Docker hub上下载镜像
$ docker pull centos:latest
复制
构建镜像
docker build
复制
参考文档
[Use the Docker command line]: https://docs.docker.com/engine/reference/commandline/cli
Dockerfile文件定制镜像
Dockerfile是一个文本文件,用来配置image,它包含了一条条的指令,每一条指令构建一层。Docker 根据 该文件生成二进制的 image 文件 。
使用Dockerfile文件定制镜像
Dockerfile创建nginx镜像,在空目录中,创建Dockerfile文件:
$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile复制
添加如下内容:
$ vim Dockerfile
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html复制
FROM指定基础镜像
FROM <image>[:<tag>] [AS <name>]
复制
FROM指令初始化一个新的构建阶段,为后续指令设置基础镜像,因此Dockerfile必须从FROM开始,该镜像可以是任何有效的镜像,或者为 scratch(虚拟的镜像,不真实存在)。基础镜像为scratch时,接下来的指令为镜像第一层的存在。
在Docker Hub上有很多官方镜像,可以直接用来做基础镜像。如nginx,mysql,redis,node,python,ubuntu,centos等等
RUN执行命令
RUN <command>
RUN ["executable", "param1", "param2"]复制
RUN指令是用来执行命令行命令的,并提交结果。生成的提交镜像将用与下一步Dockerfile
构建镜像
docker build -t nginx:v1 .# 输出Sending build context to Docker daemon 2.048 kB
Step 1/2 : FROM nginx
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx000eee12ec04: Pull complete
eb22865337de: Pull complete
bee5d581ef8b: Pull complete
Digest: sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566
Status: Downloaded newer image for docker.io/nginx:latest
---> 231d40e811cdStep 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
---> Running in 12381ac94d7f
---> 324a71164492
Removing intermediate container 12381ac94d7f
Successfully built 324a71164492复制
从命令的输出结果中,我们可以清晰的看到镜像的构建过程。在 Step 2
中,如同我们之前所说的那样,RUN
指令启动了一个容器 12381ac94d7f
,执行了所要求的命令,并最后提交了这一层 324a71164492
,随后删除了所用到的这个容器 324a71164492
。
这里我们使用了 docker build
命令进行镜像构建。其格式为:
docker build [选项] <上下文路径/URL/->
复制
在这里我们指定了最终镜像的名称 -t nginx:v1
,构建成功后,我们来运行这个镜像。
docker run --name web1 -d -p 81:80 nginx:v1
复制
访问 http://ip:81, 结果如下:
参考文档
[使用 Dockerfile 定制镜像]:https://yeasy.gitbooks.io/docker_practice/content/image/build.html