【工具学习】Docker 命令 - hippowc/hippowc.github.io GitHub Wiki
docker镜像都存于类似git的仓库中,称为docker仓库,一般需要登录,有三个概念:
- docker管理页面,类似于git页面,可以登录并且创建账号,维护仓库
- docker注册,类似git仓库地址,譬如reg.docker.xx.com 是仓库地址
# 镜像一般名称
reg.docker.xxx.com/<namespace>/<仓库名称or镜像名称>:tag
- 在docker站点创建账号
- 在拉取镜像、上传镜像通常需要登录
# 其中reg地址是docker仓库地址,默认是dockerhub
docker login -u <username> [reg地址]
# 登出
docker logout [reg地址]
# 登录
docker login
docker search
# 搜索处收藏数不小于 3 ,并且能够自动化构建的 django 镜像,并且完整显示镜像描述
docker search -s 3 --automated --no-trunc django
docker pull
# 拉取ubuntu最新的镜像
docker pull ubuntu:latest
# 服务器拉取个人动态,可选择时间区间
docker events
# 拉取个人从 2015/07/20 到 2015/08/08 的个人动态
docker events --since="20150720" --until="20150808"
# 保存对容器的修改
docker commit
# 保存某个容器成为一个镜像,然后可以通过docker images看到刚刚的镜像
docker commit -a "user" -m "commit info" [CONTAINER] [imageName]:[imageTag]
# 查看提交记录
docker history
# 推送一个容器到中心仓库
docker login --username=[userName] --password=[pwd] [registryURL]
## 建议登录后查看 docker info
docker tag [imageID] [remoteURL]:[imageTag]
docker push [remoteURL]:[imageTag]
# 拉取提交的容器
docker pull [remoteURL]:[imageTag]
# 对比容器的改动
docker diff
# 标记本地镜像,将其归入某一仓库
docker tag
# 将 ID 为 5db5f84x1261 的容器标记为 mine/lnmp:0.2 镜像
docker tag 5db5f84x1261 mine/lnmp:0.2
# 将镜像推送至远程仓库,默认为 Docker Hub
docker push
# 列出本地所有镜像
docker images
# 本地镜像名为 ubuntu 的所有镜像
docker images ubuntu
# 查看指定镜像的创建历史
docker history [id]
# 本地移除一个或多个指定的镜像
docker rmi
# 移除本地全部镜像
docker rmi `docker images -a -q`
# 指定镜像保存成 tar 归档文件, docker load 的逆操作
docker save
# 将镜像 ubuntu:14.04 保存为 ubuntu14.04.tar 文件
docker save -o ubuntu14.04.tar ubuntu:14.04
# 从 tar 镜像归档中载入镜像, docker save 的逆操作
docker load
# 上面命令的意思是将 ubuntu14.04.tar 文件载入镜像中
docker load -i ubuntu14.04.tar
docker load < /home/save.tar
# 构建自己的镜像
docker build -t <镜像名> <Dockerfile路径>
docker build -t xx/gitlab .
- docker ps 查看运行的容器
- docker ps -a 查看所有容器
- docker ps -as 查看容器占用空间
- docker top [containerId] 查看容器的top信息
- docker inspect [containerId] 查看容器详细信息
- docker cp <宿主机目录> <容器标志>:<容器目录> 宿主机与容器互相拷贝,反过来也可以
- docker run 运行一个新容器,同时为它命名、端口映射、文件夹映射
// 使用 docker run --help 查看
// -d 后台运行容器
// -it 交互式运行容器
// --name 容器名称
// --net 网络模式,与宿主机共用选host
// -v 目录映射,本机目录 : 容器目录
// -p 端口映射,本机端口 : 容器端口
// -e 设定环境变量
// -w 设置容器中的workdir
docker run -d --name redmine \
-p 9003:80 -p 9023:22 -d \
-v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql \
-e PATH=xxx
-it sameersbn/redmine
- docker create --name [containerName] -it [imageName]
- docker rm [containerId] 删除容器
只用 -i 参数,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取
只用 -t 参数,则可以看到一个 console 窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况
使用 -it 时,则和我们平常操作 console 界面类似,而且也不会像attach方式因为退出,导致整个容器退出
使用 -d 参数,在后台执行一个进程。如果一个命令需要长时间进程,会很快返回
sudo docker exec -it {{containerName or containerID}} bash
sudo docker exec -i {{containerName or containerID}} bash
sudo docker exec -t {{containerName or containerID}} bash
sudo docker exec -d {{containerName or containerID}} bash
Docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作
docker attach {{containerName or containerID}}
docker start|stop|restart [id]
# 暂停|恢复 某一容器的所有进程
docker pause|unpause [id]
# 杀死一个或多个指定容器进程
docker kill -s KILL [id]
# 停止全部运行的容器
docker stop `docker ps -q`
# 杀掉全部运行的容器
docker kill -s KILL `docker ps -q`
- docker run;创建和启动一个新的容器实例,操作对象是镜像,选项较多,如果你要创建和启动一个容器,只能用run
- docker exec: 在已运行的容器中,执行命令,操作对象是容器,如果你要进入已运行的容器,并且执行命令,用exec
- docker attach: 同样操作的是已运行的容器,可以将本机标准输入(键盘输入)输到容器中,也可以将容器的输出显示在本机的屏幕上,如果你想查看容器运行过程中产生的标准输入输出,用attach
# 限制内存最大使用
-m 1024m --memory-swap=1024m
# 限制容器使用CPU
--cpuset-cpus="0,1"
# 支持远程文件 .tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz
docker import
# 导出
docker export [id] >~/Downloads/ubuntu_nexus.tar
在使用docker run创建容器是,可以使用 --net 指定容器的网络模式,有以下4中网络模式
- host模式:--net=host
- 容器不会获得独立的network namespace,不会虚拟自己的网卡,不需要配置IP,与宿主机共用,使用宿主机的IP和端口
- container模式, --net=container:
- 指定新建的容器与已经存在的容器共享一个Network Namespace,IP,端口范围等,其他如文件系统,进程列表等还是隔离的
- none模式,--net=none
- Docker拥有自己的network namespace,但是需要自己为容器添加网卡,配置IP
- bridge模式,--net=bridge,默认
- 为容器分配network namespace,并链接到一个虚拟网桥上,要为容器分配IP
Docker采用Volume(卷)的形式为容器提供持久化的服务,docker采用AFUS分层文件系统,文件系统的改动都发生在最上层,在容器的生命周期内,它是持续的,包括容器被停止,但是当容器删除后,该数据层也会被删除
在使用docker run创建容器时,配置卷,有几种模式
- 不配置,默认。容器的数据被保存在容器之内,它只在容器的生命周期内存在,会随着容器的被删除而被删除。也可以使用 docker commit 命令将它持久化为一个新的镜像。
- data volume。当删除容器时,不会删除该目录
- -v <容器目录> :会将容器目录默认挂载到本机的目录下,具体为止可以通过docker inspect 查看
- -v <本机目录>:<容器目录>,可以是目录,也可以是文件,要指明路径
- data container。在容器之间共享数据
docker create -v /dbdata --name dbstore training/webapp /bin/true
docker run -d -P --name web3 --volumes-from dbstore training/webapp python app.py
- docker version 查看docker 版本
- docker info 显示当前运行的docker系统信息
- service docker status 查看docker 服务信息
- service docker start|stop docker服务的启动关闭
- docker logs
docker详情参考:https://yeasy.gitbook.io/docker_practice/
Docker 1.12命令行大摡有40个顶级命令。虽然这些命令处理得很好但缺乏命令名称的一致性,Docker 1.13修复了这些问题,将命令按照逻辑分组到管理命令中。
checkpoint Manage checkpoints
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
volume Manage volumes
现在获取镜像列表使用docker image ls来代替docker images命令。类似的还有docker container ls代替docker ps来显示容器列表。这就带来了很多一致性的命令,为新手以及专业人士更为直观且容易记住命令。每个管理命令有一套类似的子命令,他们负责执行操作。
子命令 用途
ls 获取<image,container,volume,secret等等>的列表
rm 移除<image,container,volume等等>
inspect 检阅<image,container,volume等等>
1.12 1.13 用途
attach container attach 附加到一个运行的容器
build image build 从一个Dockerfile构建镜像
commit container commit 从一个容器的修改创建一个新的镜像
cp container cp 在容器与本地文件系统之间复制文件/文件夹
create container create 创建新的容器
diff container diff 检阅一个容器文件系统的修改
events system events 获取服务器的实时时间
exec container exec 在运行的容器内执行命令
export container export 打包一个容器文件系统到tar文件
history image history 展示镜像历史信息
images image ls 展示镜像列表
import image import 用tar文件导入并创建镜像文件
info system info 展示整个系统信息
inspect container inspect 展示一个容器/镜像或者任务的底层信息
kill container kill 终止一个或者多个运行中的容器
load image load 从tar文件或者标准输入载入镜像
login login 登录Docker registry
logout logout 从Docker registry登出
logs container logs 获取容器的日志
network network 管理Docker网络
node node 管理Docker Swarm节点
pause container pause 暂停一个或者多个容器的所有进程
port container port 展示容器的端口映射
ps container ls 展示容器列表
pull image pull 从某个registry拉取镜像或者仓库
push image push 推送镜像或者仓库到某个registry
rename container rename 重命名容器
restart container restart 重启容器
rm container rm 移除一个或多个容器
rmi image rm 移除一个或多个镜像
run container run 运行一个新的容器
save image save 打包一个或多个镜像到tar文件(默认是到标准输出)
search search 在Docker Hub搜索镜像
service service 管理Docker services
start container start 启动一个或者多个容器
stats container stats 获取容器的实时资源使用统计
stop container stop 停止一个或多个运行容器
swarm swarm 管理Docker Swarm
tag image tag 标记一个镜像到仓库
top container top 展示容器运行进程
unpause container unpause 解除暂停一个或多个容器的所有进程
update container update 更新一个或多个容器的配置
version version 显示Docker版本信息
volume volume 管理Docker volumes
wait container wait 阻塞直到容器停止,然后打印退出代码