镜像指令
docker pull centos:latest # 从docker.io中下载centos镜像到本地
docker images # 查看已下载的镜像
docker rm image_id # 删除镜像,指定镜像id
# 删除所有镜像
# none 默认为 docker.io
docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)
# 连接进行进入命令行模式,exit命令退出。
docker run -t -i nginx:latest /bin/bash
容器指令
docker run -itd --name my-nginx2 nginx # 通过nginx镜像,【创建】容器名为 my-nginx2 的容器
docker start my-nginx --restart=always # 【启动策略】一个已经存在的容器启动添加策略
# no - 容器不重启
# on-failure - 容器推出状态非0时重启
# always - 始终重启
docker start my-nginx # 【启动】一个已经存在的容器
docker restart my-nginx # 【重启】容器
docker stop my-nginx # 【停止运行】一个容器
docker kill my-nginx # 【杀死】一个运行中的容器
docker logs my-nginx # 【查看日志】
docker rename my-nginx new-nginx # 【重命名】容器
docker rm new-nginx # 【删除】容器
进入容器
#进入容器
docker exec -it [containerID/Names] /bin/bash
#文件拷贝
#从主机复制到容器
sudo docker cp host_path containerID:container_path
#从容器复制到主机
sudo docker cp containerID:container_path host_path
镜像制作
通过容器创建镜像
docker commit -m="First Docker" -a="wcjiang" a6b0a6cfdacf wcjiang/nginx:v1.2.1
上面命令参数说明:
-m
提交的描述信息-a
指定镜像作者a6b0a6cfdacf
容器idwcjiang/nginx:v1.2.1
创建的目标镜像名
通过Dockerfile创建镜像
假设创建一个 node.js 镜像,首先在 node.js 项目根目录创建文件。
touch Dockerfile .dockerignore
.dockerignore
文件内容
.git
node_modules
npm-debug.log
表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
Dockerfile 文件内容
FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
FROM node:8.4
:该image
文件继承官方的node image
,冒号表示标签,这里标签是8.4
,即8.4
版本的node
。COPY . /app
:将当前目录下的所有文件(除了.dockerignore
排除的路径),都拷贝进入image
文件的/app
目录。WORKDIR /app
:指定接下来的工作路径为/app
。RUN npm install
:在/app目录下,运行npm install
命令安装依赖。注意,安装后所有的依赖,都将打包进入image
文件。EXPOSE 3000
:将容器3000
端口暴露出来, 允许外部连接这个端口。
创建 image
文件
有了 Dockerfile
文件以后,就可以使用 docker image build
命令创建 image
文件了。
$ docker image build -t koa-demo .
# 或者
$ docker image build -t koa-demo:0.0.1 .
上面命令,-t
参数用来指定 image
文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是 latest
。注意后面有个 .
,表示 Dockerfile 文件所在的路径为当前路径