Docker相关的命令和指令主要分为两大类,一是Docker命令,二是Dockerfile指令。而在Docker命令中,通过操作对象的不同,又可分为Docker镜像操作命令和Docker容器操作命令。下面分类整理出Docker命令。
一、Docker命令
1.1 Docker镜像
# 搜索镜像:
docker search java
# 下载镜像:
docker pull java
# 查看已有的镜像(包括下载的和自己构建的):
docker images
# 删除无tag的none镜像:
docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi
# 删除镜像(与很多docker命令一样,后面都可跟imageName或imageId):
docker rmi -f hello-world
# 运行镜像(即启动一个容器):
docker run hello-world
docker run -d -p 91:80 nginx
# 标记本地镜像,将其归入某一仓库:
docker tag szhrepo/cjia-cis:1.0.0 songzehao/szhrepo01:1.0.0
# 将2.2.0的镜像打新tag为latest:
docker tag <image-name>:2.2.0 <image-name>:latest
# 将本地镜像上传到仓库:
docker push songzehao/szhrepo01:1.0.0
# 镜像另存为文件:
docker save -o <output-file>.tar <image-name>:<tag>
# 从tar包中加载镜像hyperledger/fabric-ca:1.4.7:
docker load -i fabric_ca_v1.4.7.tar
1.2 Docker容器
# 查看运行中的容器(-a可查看所有状态的容器):
docker ps
# 停止容器:
docker stop 81b7656fd8b8
# 杀死容器:
docker kill 81b7656fd8b8
# 启动容器:
docker start 81b7656fd8b8
# 重启容器:
docker restart 81b7656fd8b8
# 查看容器信息:
docker inspect b82b5ad0a75a
# 退出容器:
Ctrl+p+q或exit
# 从容器里面拷贝文件/目录到本地一个路径
$ docker cp ID:/container_path to_path
# 显示一个运行的容器里面的进程信息
$ docker top birdben/ubuntu:v1
# 查看日志:
docker logs -f -t --since="2018-02-08" --tail=100 a966100058c6
# 进入容器(方式一,不可用,改用方式二三):
docker attach 81b7656fd8b8
# 进入容器(方式二):
docker exec -it b82b5ad0a75a /bin/bash
# 进入容器(方式三):
## 先获取进程号:docker inspect --format "{{.State.Pid}}" 81b7656fd8b8
## 进入容器: nsenter --target 32046 --mount --uts --ipc --net --pid
# 删除所有容器:
docker rm -f $(docker ps -a -q)
# 提交容器副本实质成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
# 复制容器内文件,如:docker cp homesongzehaooptchn6default_chainnode0:/data/sdk/ca.crt conf/
docker cp {containerName}:{filePath} {destPath}
1.3 其他
# 登录阿里云镜像仓库
$ docker login --username=能源区块链实验室 registry.cn-hangzhou.aliyuncs.com
# 输入密码成功登录后,查看通过认证的信息
$ cat ~/.docker/config.json
{
"auths": {
"hub.lingshutech.com": {
"auth": "aW6RFcmd72ZW4WEy5lQDMw=="
}
}
}
二、Dockerfile指令
Dockerfile指令用于构建自己的镜像,以下内容来自《Spring Cloud与Docker微服务架构实战》。