Docker安装与应用 ——详细流程图解及命令实现
相关环境:
- CentOS 7 64
- VMware Tools
- 网络配置
tools和网络配置在下面地址发布有过,这里不再累述,请自行参考。
https://blog.csdn.net/chendusaotongxue/article/details/106820709
安装Docker
1.安装依赖包。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
加载完成。
2.安装Docker。
sudo yum install docker
安装加载完成。
3.验证是否安装成功。
docker version
4.启动Docker。
systemctl enable docker
5.将名为 hello-world 的 image 文件从仓库抓取到本地。
docker pull library/hello-world
6.在本机查看images。
docker images
7.运行这个images文件。
docker run hello-world
docker常用命令:
拉取一个名称为image的镜像。
docker pull image_name
查看主机下存在的镜像。
docker images
查看当前所有容器。
docker ps -a
对一个容器进行启动、重启和停止。
docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id
进入到某个容器。
docker attach container_name/container_id
运行这个容器中的镜像,并且调用镜像里面的 bash。
docker run -t -i container_name/container_id /bin/bash
删除指定镜像,先停止这个容器,再删除容器,最后删除镜像。
docker ps
docker stop container_name/container_id
删除这个容器。
docker rm container_name/container_id
删除这个镜像。
docker rmi image_name
搜索这个镜像。
docker search image_name
Dockerfile常用命令:
Dockerfile 是自动构建 docker 镜像的配置文件, 用户可以使用 Dockerfile 快速创建自定义的镜像。Dockerfile 中的命令非常类似于 linux 下的 shell 命令。
FROM python:2.7 #1
MAINTAINER ChenDuSao <1234546789@qq.com> #2
COPY . /app #3
WORKDIR /app #4
RUN pip install -r requirements.txt #5
EXPOSE 5000 #6
ENTRYPOINT ["python"] #7
CMD ["app.py"] #8
1、从 Docker Hub 上 pull 下 python 2.7 的基础镜像。
2、显示维护者的信息。
3、copy 当前目录到容器中的 /app 目录下 复制本地主机的 [src]( Dockerfile 所在目录的相对路径)到容器里 [dest]。
4、指定工作路径为 /app。
5、安装依赖包。
6、暴露 5000 端口。
8、启动 app。
- FROM
FROM 是用于指定基础的 images ,一般格式为 FROM [image] or FORM [image]:[tag] ,所有的 Dockerfile 都用该以 FROM 开头,FROM 命令指明 Dockerfile 所创建的镜像文件以什么镜像为基础,FROM 以后的所有指令都会在 FROM 的基础上进行创建镜像。可以在同一个 Dockerfile 中多次使用 FROM 命令用于创建多个镜像。比如我们要指定 python 2.7 的基础镜像,我们可以像如下写法一样:
FROM python:2.7
- MAINTAINER
MAINTAINER 是用于指定镜像创建者和联系方式,一般格式为 MAINTAINER [name] 。
MAINTAINER ChenDuSao <1234546789@qq.com>
- COPY
COPY 是用于复制本地主机的 [src](为 Dockerfile 所在目录的相对路径)到容器中的 [dest]。当使用本地目录为源目录时,推荐使用 COPY 。一般格式为 COPY [src][dest]。例如我们要拷贝当前目录到容器中的 /app 目录下,我们可以这样操作:
COPY . /app
- WORKDIR
WORKDIR 用于配合 RUN,CMD,ENTRYPOINT 命令设置当前工作路径。可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令。默认路径为/。一般格式为 WORKDIR /path/to/work/dir 。例如我们设置 /app 路径,我们可以进行如下操作:
WORKDIR /app
- RUN
RUN 用于容器内部执行命令。每个 RUN 命令相当于在原有的镜像基础上添加了一个改动层,原有的镜像不会有变化。一般格式为 RUN 。例如我们要安装 python 依赖包,我们做法如下:
RUN pip install -r requirements.txt
- EXPOSE
EXPOSE 命令用来指定对外开放的端口。一般格式为 EXPOSE [port] [[port]…
例如上面那个例子,开放5000端口:
EXPOSE 5000
- ENTRYPOINT
ENTRYPOINT 可以让你的容器表现得像一个可执行程序一样。一个 Dockerfile 中只能有一个 。ENTRYPOINT,如果有多个,则最后一个生效。
ENTRYPOINT 命令也有两种格式:
ENTRYPOINT [“executable”, “param1”, “param2”] :推荐使用的 exec 形式。
ENTRYPOINT command param1 param2 :shell 形式。
例如下面这个,我们要将 python 镜像变成可执行的程序,我们可以这样去做:
ENTRYPOINT ["python"]
- CMD
CMD 命令用于启动容器时默认执行的命令,CMD 命令可以包含可执行文件,也可以不包含可执行文件。不包含可执行文件的情况下就要用 ENTRYPOINT 指定一个,然后 CMD 命令的参数就会作为ENTRYPOINT的参数。一个 Dockerfile 中只能有一个CMD,如果有多个,则最后一个生效。而 CMD 的 shell 形式默认调用 /bin/sh -c 执行命令。
CMD 命令会被 Docker 命令行传入的参数覆盖:docker run busybox /bin/echo Hello Docker 会把 CMD 里的命令覆盖。
例如我们要启动 /app ,我们可以用如下命令实现:
CMD ["executable","param1","param2"] #推荐使用的 exec 形式。
CMD ["param1","param2"] #无可执行程序形式
CMD command param1 param2
CMD ["app.py"]
构建dockerfile
1.touch命令创建dockerfile文件并写入内容。
FROM nginx
MAINTAINER ChenDuSap <123456789@qq.com>
RUN echo '<h1>chendusao,jiayou!</h1>' > /usr/share/nginx/html/index.html
2.在dockerfile文件目录执行(不要漏了 “.”)。
docker build -t chendusao/nginx_web:v1 .
3.查看镜像。
docker images
4.启动容器。
docker run --name nginx_web -d -p 8080:80 chendusao/nginx_web:v1
5.映射8080端口,用浏览器访问服务器:http://本机地址:8080。
参考文献:
https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html