Docker的简介以及Dockerfile编写与使用

Docker的简介

Docker是在容器的基础上,进行了进一步的封装,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。

下面是两张对比图。

可以看到传统虚拟机技术是虚拟出一套硬件,然后再在上面运行一个完整的操作系统。然而docker的应用进程直接运行于宿主的内核,容器内没有自己的内核也没有硬件虚拟。所以更加轻便。

Dockerfile的简单编写(常用指令)

1.FROM

指定基础镜像,形如 FROM ubuntu:16.04 (容器将安装ubuntu16.04)

2.RUN

用来执行命令,形如 RUN apt-get update

3.COPY

复制文件,形如COPY flag.php /var/www/html/(COPY 本地路径 容器内路径)
可以使用通配符 * ?

4.ADD

更高级的复制文件(能自动解压缩),形如ADD ubuntu-amd64-root.tar.gz /

5.CMD

容器启动命令,推荐使用exec格式:CMD ["可执行文件", "参数1", "参数2"...] (一定要用双引号)。形如: CMD ["sh","-c","echo $HOME"]

6.ENV

设置环境变量,形如ENV NODE_VERSION 7.2.0


附一个简单dockerfile
FROM php:7.0-apache

# Meta Information
MAINTAINER Donek1 "A1oe@A1oe.com"

COPY php.ini /usr/local/etc/php/php.ini
COPY index.php /var/www/html/index.php
COPY flag /flag
COPY start.sh /start.sh

RUN chmod +x /start.sh
RUN rm /var/www/html/index.html

CMD ["/start.sh"]

Dockerfile的使用

1.构建镜像

docker build -t nginx:v3 . (注意后面有个英文句号)

$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
---e43d811ce2f4

解释:-t指定的是镜像名称nginx:v3,英文句号标识当前目录

2.查看构建完成的镜像

docker images / docker image ls

root@ubuntu:~/DockerFiles# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1.1 a473544051ce 4 seconds ago 109MB

3.使用镜像

docker run -t -i -p 8080:80 nginx
解释:-p指定端口,以上意思是容器的80端口映射到8080端口(需要用虚拟机ip:8080来访问)

4.停止容器

docker ps -a查看所有容器
docker stop name/id
停止所有container:docker stop $(docker ps -a -q)

5.删除容器

docker rm name/id(需要先停止)
或者docker rm -f id/name
删除所有container:docker rm $(docker ps -a -q)

6.删除镜像

docker rmi name/id
删除全部image:docker rmi $(docker images -q)

常见报错及解决

1.Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
端口冲突了
解决: -p 8080:80 (前一个端口为映射出的端口从80改为8080)

2.删除untagged images,也就是那些id为的image:

docker rmi -f id/name 或者
docker rmi $(docker images | grep "<none>" | awk "{print $3}")

3.删除创建时可以用id/name,不过用id更方便。
举例:image id1=asd45xxx ; image id2=4321zx6; 删除的时候可以 docker rmi 4,这样就删除了id2


附:docker-compose.yml文件的使用方法
创建:该文件目录下执行docker-compose build
运行:执行docker-compose up -d

参考文档:https://yeasy.gitbooks.io/docker_practice/image/build.html
posted @ 2020-03-04 11:59  A1oe  阅读(201)  评论(0编辑  收藏  举报