启动docker
service docker start
查看docker信息
docker info
查看docker中所有的容器
docker ps -a
恢复正在运行的容器
docker attach 容器ID
启动并以bash并进入容器
docker attach -ai 容器ID
查看所有的镜像
docker images
查看镜像/容器详情
docker inspect 容器ID/镜像ID
从镜像仓库中拉取或者更新指定镜像
docker pull 镜像名:镜像标签
删除容器
docker rm 容器ID
删除镜像
docker rmi 镜像ID
创建一个新的容器并运行
docker run 镜像名称
举例
docker run -p 10066:80 --name nginx-web -it 镜像ID /bin/bash
作用:以外部的10066端口映射内部的80端口,并启动ubuntu镜像 命名为nginx-web
当以bash方式进入容器后,使用Ctrl + p + q 可以退出容器但不停止容器
查找某个镜像
docker search 镜像名称
运行某个容器
docker start 容器ID
停止正在运行的容器
docker stop 容器ID
提交容器
docker commit -a 'author' -m 'commit image' 容器名称 镜像名称
重命名容器名
docker rename 老容器名称 新容器名称
重命名镜像
docker tag 老镜像名称 新镜像名
两个容器互联
docker run -it --name 容器名称 --link=待连接的容器名称:待连接的容器别名 镜像名称
示例
docker run -it --name cct3 --link=cct1:webtest base-net
解释: 建立一个基于base-net 镜像,名称为cct3的容器,并且建立与cct1容器的连接,cct1在cct3的别名为webtest
其实就是docker修改了cct3的hosts文件,所以在cct3中,可以直接使用ping webtest就可以直接ping通,
而不用使用IP这种方式可以防止cct1的IP改变后,cct3无法访问的问题
建立数据卷(目录)
docker run -it --name volume-demo -v /home/user/datavolume:/data ubuntu /bin/bash
详解:宿主目录为/home/user/datavolume ,volume-demo容器的映射路径为/data
当volume-demo容器的 /data 目录中有文件更新时,/home/user/datavolume也会同步更新
建立数据卷(容器)
docker run -it --name 新容器名称 -volumes-from 数据卷容器名 镜像名 /bin/bash
备份数据卷
docker run --volumes-from dvt3 -v /home/backup:/backup --name dvt10 ubuntu tar cvf /backup/dvt3.tar /datavolume1
详解: 新建立一个基于ubuntu镜像且名为dvt10的容器,挂在在dvt3数据卷上,且执行tar cvf /backup/dvt3.tar /datavolume1命 令,执行完后,宿主机的会生成一个 /home/backup/dvt3.tar的备份文件
还原数据卷
docker run --volumes-from dvt3 -v ~/backup:/backup --name dvt10 ubuntu tar xvf /backup/dvt3.tar
详解: 新建立一个基于ubuntu镜像且名为dvt10的容器,挂在在dvt3数据卷上,且执行tar xvf /backup/dvt3.tar命令,执行完后, 将在dvt3容器对应的目录中生成dvt3.tar的文件内容
生成镜像文件
docker save -o 待生成的tar文件名 源镜像名
加载镜像文件
docker load -i 镜像文件
生成容器文件
docker export -o 待生成的tar包名称 容器名称
加载容器文件
docker import 待加载的tar包容器文件名 镜像名称
使用Dockerfile生成镜像
docker build -t 新镜像名称 .
生成一个镜像名为image-name的镜像
千万注意: 命令最后的 " ." 代表的不是当前目录下Dockerfile路径,这里指的是上下文路径