在linux中创建一个docker流程
1.创建文件
我们创建一个目录hello-docker
,在目录中创建一个index.html
文件,内容为:
<h1>Hello world docker </h1>
然后再在目录中创建一个Dockerfile
文件,内容为:
FROM nginx COPY ./index.html /usr/share/nginx/html/index.html EXPOSE 80
此时,你的文件结构应该是:
hello-docker |____index.html |____Dockerfile
打包镜像
文件创建好了,现在我们就可以根据Dockerfile
创建镜像了!
在命令行中(Windows优先使用PowerShell)键入:
cd hello-docker/ # 进入刚刚的目录 docker image build ./ -t hello-docker:1.0.0 # 打包镜像
docker image build ./ -t hello-docker:1.0.0
的意思是:基于路径./
(当前路径)打包一个镜像,镜像的名字是hello-docker
,版本号是1.0.0
。该命令会自动寻找Dockerfile
来打包出一个镜像
不出意外,你应该能得到如下输出:
Sending build context to Docker daemon 3.072kB Step 1/3 : FROM nginx ---> 5a3221f0137b Step 2/3 : COPY ./index.html /usr/share/nginx/html/index.html ---> 1c433edd5891 Step 3/3 : EXPOSE 80 ---> Running in c2ff9ec2e945 Removing intermediate container c2ff9ec2e945 ---> f6a472c1b0a0 Successfully built f6a472c1b0a0 Successfully tagged hello-docker:1.0.0
可以看到其运行了 Dockerfile 中的内容,现在我们简单拆解下:
FROM nginx
:基于哪个镜像COPY ./index.html /usr/share/nginx/html/index.html
:将宿主机中的./index.html
文件复制进容器里的/usr/share/nginx/html/index.html
EXPOSE 80
:容器对外暴露80端口
运行容器
我们刚刚使用 Dockerfile 创建了一个镜像。现在有镜像了,接下来要根据镜像创建容器:
docker container create -p 2333:80 hello-docker:1.0.0 docker container start xxx # xxx 为上一条命令运行得到的结果
然后在浏览器打开127.0.0.1:2333
,你应该能看到刚刚自己写的index.html
内容
在上边第一个命令中,我们使用docker container create
来创建基于hello-docker:1.0.0
镜像的一个容器,使用-p
来指定端口绑定——将容器中的80
端口绑定在宿主机的2333
端口。执行完该命令,会返回一个容器ID
而第二个命令,则是启动这个容器
启动后,就能通过访问本机的2333
端口来达到访问容器内80
端口的效果了
docker container ls
来查看当前运行的容器创建流程经过
- 写一个 Dockerfile
- 使用
docker image build
来将Dockerfile
打包成镜像 - 使用
docker container create
来根据镜像创建一个容器 - 使用
docker container start
来启动一个创建好的容器