命令介绍
$ docker --help 管理命令: container 管理容器 image 管理镜像 network 管理网络 命令: attach 介入到一个正在运行的容器 build 根据 Dockerfile 构建一个镜像 commit 根据容器的更改创建一个新的镜像 cp 在本地文件系统与容器中复制 文件/文件夹 create 创建一个新容器 exec 在容器中执行一条命令 images 列出镜像 kill 杀死一个或多个正在运行的容器 logs 取得容器的日志 pause 暂停一个或多个容器的所有进程 ps 列出所有容器 pull 拉取一个镜像或仓库到 registry push 推送一个镜像或仓库到 registry rename 重命名一个容器 restart 重新启动一个或多个容器 rm 删除一个或多个容器 rmi 删除一个或多个镜像 run 在一个新的容器中执行一条命令 search 在 Docker Hub 中搜索镜像 start 启动一个或多个已经停止运行的容器 stats 显示一个容器的实时资源占用 stop 停止一个或多个正在运行的容器 tag 为镜像创建一个新的标签 top 显示一个容器内的所有进程 unpause 恢复一个或多个容器内所有被暂停的进程
服务管理
service docker start # 启动 docker 服务,守护进程 service docker stop # 停止 docker 服务 service docker status # 查看 docker 服务状态 chkconfig docker on # 设置为开机启动
镜像管理
镜像可以看做我们平时装系统的镜像,里面就是一个运行环境。
docker pull centos:latest # 从docker.io中下载centos镜像到本地
docker images # 查看已下载的镜像
docker rmi [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 pull gitlab/gitlab-ce:17.2.0-ce.0 # 下载镜像 $ docker pull --platform linux/amd64 gitlab/gitlab-ce:17.2.0-ce.0 $ docker pull --platform linux/amd64 portainer/portainer-ce:2.20.3-alpine $ docker pull --platform linux/amd64 portainer/agent:2.20.3-alpine # 保存 Docker 镜像到本地文件 $ docker save -o [output-file.tar] [image-name] $ docker save -o gitlab-ce.0-17.2.0.tar gitlab/gitlab-ce:17.2.0-ce.0 $ docker save -o portainer-agent-2.20.3-alpine.tar portainer/agent:2.20.3-alpine $ docker save -o portainer-ce-2.20.3-alpine.tar portainer/portainer-ce:2.20.3-alpine
将镜像文件发送到服务器
$ scp [output-file.tar] [user]@[server-ip]:[path] $ scp gitlab-ce-17.0.1.tar root@110.55.8.163:/home/docker-images
服务器上加载 Docker 镜像
$ docker load -i /home/docker-images/gitlab-ce-17.0.1.tar # 加载 Docker 镜像 $ docker images # 验证镜像是否加载成功
通过容器创建镜像
我们可以通过以下两种方式对镜像进行更改。
- 从已经创建的容器中更新镜像,并且提交这个镜像
- 使用 Dockerfile 指令来创建一个新的镜像
下面通过已存在的容器创建一个新的镜像。
docker commit -m="First Docker" -a="wcjiang" a6b0a6cfdacf wcjiang/nginx:v1.2.1
上面命令参数说明:
-m提交的描述信息-a指定镜像作者a6b0a6cfdacf记住这个是容器id,不是镜像idwcjiang/nginx:v1.2.1创建的目标镜像名
通过Dockerfile创建镜像
假设创建一个 node.js 镜像,首先在 node.js 项目根目录创建文件。
touch Dockerfile .dockerignore
.dockerignore 文件内容,下面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
.git node_modules npm-debug.log
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端口暴露出来, 允许外部连接这个端口。
有了 Dockerfile 文件以后,就可以使用 docker image build 命令创建 image 文件了。
$ docker image build -t koa-demo . # 或者 $ docker image build -t koa-demo:0.0.1 .
上面命令,-t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是 latest。注意后面有个 .,表示 Dockerfile 文件所在的路径为当前路径
docker run --name koa-demo-name --rm -d -p 9066:3000 koa-demo:latest # 或者 docker run --name koa-demo-name --rm -d -p 9066:3000 koa-demo:0.0.1
上面命令,将刚创建的 koa-demo 景象跑起来,命令的 --rm 参数,在容器终止运行后自动删除容器文件。