Docker 是什么
即答:容器(Container)!那么什么是容器呢?容器就是机器上的沙盒进程,与主机的所有其他进程隔离。镜像(image)可以在上面运行;可以部署在本机,虚拟机或者云端;可以移植到任何操作系统上;容器彼此隔离运行自己的软件、二进制文件、和配置。
镜像包含运行应用程序所需的一切依赖、配置、脚本、文件。镜像还包含容器的一些配置,例如环境变量。
使用 Docker 的好处是使应用程序能够在开发、测试或生产环境中以一致的方式运行,我们可以不用再担心环境配置的差异或软件依赖项的冲突。
启动容器
打开命令行 输入下面的命令,启动一个例子。
docker run -d -p 80:80 docker/getting-started
命令中的标志含义:
-d
以分离模式运行容器(即后台运行)-p 80:80
将本机的 80 端口映射到容器的 80 端口docker/getting-started
需要使用的镜像名称
可以组合单个字符标志缩短命令:例如将 -d
和 -p 80:80
合并写成 -dp 80:80
打开浏览器 http://localhost:80 访问启动的应用程序
构建镜像
构建应用程序的镜像需要 Dockerfile
文件,切换到 Dockerfile
文件所在目录,使用 docker build
命令构建容器镜像。
docker build -t getiing-started .
-
-t
标志用来给镜像设置名称和标签完整命令
--tag <name:tag>
省略标签将使用latest
作为默认标签 -
.
命令告诉docker build
在当前目录查找Dockerfile
文件
使用docker images
可以查看本地镜像
更新应用程序
更新容器需要先移除旧容器,移除容器需要先停止。可以使用 Docker 仪表盘删除 Docker 或者使用 CLI 删除容器
-
使用
docker ps
命令获取容器 IDshdocker ps
-
使用
docker stop
命令停止容器shdocker stop <the container id>
-
使用
docker rm
命令删除容器shdocker rm <the container id>
使用
force
标志可以在单条命令中停止和删除容器例如:docker rm -f <the container id>
标记镜像
一个镜像可以有多个标签,使用tag
命令为镜像创建新的标签
docker tag node-docker:latest node-docker:v1.0.0
这会创建一个新的tag指向该镜像,可以使用 rmi
命令删除创建的标签
docker rmi node-docker:v1.0.0
这不会删除原镜像,只会删除对应的标记
数据持久化
当容器创建、更新或删除文件时,由于容器被移除且所有更改都被隔离,这些更改就会丢失。借助卷(volume)可以解决这个问题。卷可以将容器的特点文件系统路径链接到主机。
使用 docker volume create
命令创建卷
docker volume create todo-db
启动应用程序容器时,添加 -v
标志指定卷安装,例如将命名卷挂载到 /etc/todos
,这会捕获该目录创建的所有文件
docker run -dp 3000:3000 -v todo-db:/etc/todos