Docker 三大组件
仓库:存放各种各样已经打包好的Docker应用
镜像:按照Docker的规则制作的应用。类似操作系统iso,通过其完成各种应用的部署
容器:;利用镜像创建容器:启动预先定义好的进程与用户交互,对提 供服务。类似虚拟机本身(可以启动,停止,删除),一个镜像可以创建多个名字不同的容器。
容器
create
docker create 创建一个新容器..
docker create ubuntu:latest
用docker create 容器处于停止状态,需docker start +容器ID 启动
run
Docker run :创建一个新的容器并运行一个命令
是docker create 和 docker start 组合-name 指定容器名字
-i让容器标准输入打开,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端
-it以交互式进入容器
-d 指定容器运行于前台还是后台
-p 指定容器暴露的端口
-e 指定环境变量
--env 从指定文件读入环境变量
--link添加链接到另一个容器
#启动centos里面的bash并且进行交互式操作
docker run -it centos /bin/bash
#进入该容器
docker exec -it ID /bin/bash
#进入该容器,退出,容器会停止运行
docker attach +ID /bin/bash
#没有直接进入该界面,其在后台运行
docker run -itd centos /bin/bash
#-name给容器自定义名字
docker run -itd --name web centos:latest bash
#--rm让容器退出后直接删除,(不能和-d使用)
docker run --rm -it centos bash -c "sleep 30"
#镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data1映射到容器的/data
docker run -p 80:80 -v /data1:/data -d nginx:latest
attach/ exec
docker exec :进入容器内运行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端以root身份进入该容器,并启动一个bash,可以连续执行命令
docker exec -it 容器名/ID /bin/bash
exit 退出docker attach进入后台运行容器
docker attach 容器名/ID
Ctrl + q退出,容器也会停止attach与exec主要区别
attach直接进入容器启动命令的终端,不会启动新的进程.T退出容器会停止而exec不会
exec 在容器中打开新的终端,并且可以启动新的进程
rm
docker rm :删除一个或多少容器
-f :通过SIGKILL信号强制删除一个运行中的容器
-v :-v 删除与容器关联的卷
# 删除所有已经停止的容器
docker rm $(docker ps -qa)
#批量删除所有退出容器
docker rm $(docker -qa -f status=exited)
#杀死所有正在运行的容器
docker kill $(docker ps -qa)
ps
docker ps 列出容器正在运行显 = docker container ls
-a 显示所有的容器,包括未运行的
-q 显示容器 ID
--no-trunc:显示完整id号(128位)默认显示16位
-s 显示容器文件大小
-l 最近创建容器
通常使用
docker ps -qa
pause/unpause
让容器暂停工作且不占用CPU
暂停
docker pause +names
恢复
docker unpause +names
start/stop/restart/kill
docker start +names
docker stop +names
docker kill +names #快速终止
docker restart +names
#无论容器因何种原因退出,都立即重启 --restart=always
docker run -d -restart=always httpd
#如果启动进程退出代码非0,则重启容器,最多重启3次
docker run -d --restart=on-failure:3 httpd
rename
docker rename 原容器名 新容器名
export/import
docker export导出容器,可以迁移到其他机器
docker import 将导入的文件。成为镜像
将容器生成文件
docker export container_id>file.tar
cat file.tar|docker import – wu #生成wu镜像
docker基本信息
显示 容器 详细信息
docker inspect 容器
获取容器的运行历史信息
docker logs +容器
-f 跟踪守护式容器的日志
-s 最新日志eg:
docker run -d centos bash -c "while:;do ehco "123";sleep 1;done"
docker logs +ID #会显示123
可用docker stop ID 终止掉
docker top 容器进程
docker top + 容器
docker stats 容器占用系统资源情况
docker diff containerID
列出改动了容器的存储层
显示一个镜像的历史
docker version #查看版本
docker info //查看docker系统的信息
镜像
images
docker images : 列出本地镜像 或 docker image ls (--help)
-a 显示所有镜像
-q 只显示镜像ID
--no-trunc :显示完整的镜像信息
#列出镜像
docker images
#显示具体镜像信息
docker images hello-world
#直接列出镜像包含镜像ID和仓库名
docker images --format "{{.ID}}: {{.Repository}}"
pull
docker pull : 从镜像仓库中拉取(下载)或者更新指定镜像
格式:docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
#从docker hub拉取ubuntu镜像
docker pull ubuntu \\默认下载最新
docker pull Ubuntu:14.04 \\指定下载版本
#从私有库拉取ubuntu镜像
docker pull 192.168.200.11:5000/ubuntu/14.04.3.tar:latest
#3 从hub.c.163.com仓库拉取镜像
docker pull hub.c.163.com/library/mysql:latest
:latest 标记最新版本
本地镜像都保存在docker宿主机的/var/lib/docker目录下
push
docker push + name 上传镜像到仓库(默认上传到DockerHub官方仓库)
# 将本地镜像test:latest 添加新的标签user/test:latest
docker tag test:latest user/test:latest
docker push user/test:latest
save/load
docker save:把现有镜像,导出一个文件
docker load:将该文件恢复本地镜像
#把现有镜像,导出一个文件
docker save -o aming-centos.tar aming/centos(现有镜像或ID都行)
#使用该文件恢复本地镜像
docker load < aming-centos.tar
commit
运行容器时,做的任何文件修改都会被记录于容器存储层里。且docker commit ,可以将容器的存储层保存下来成为镜像
增量的生成一个镜像。将容器保存为一个镜像(可标注镜像名和作者信息)当没有镜像名也成悬挂镜像
docker commit :从容器创建一个新的镜像。
格式:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
-q 显示Image ID
--no-trunc 显示完整长度Image ID步骤
- 运行容器
- 修改容器
- 将容器保存为新的镜像
运行ubuntu镜像,并进入交互模式
docker run –it centos –name wzs
yum –y install vim #在centos镜像中添加vim工具
docker ps #查看容器名
docker commit +容器名 +自定义名
docker images #查看镜像
#将容器保存为镜像
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \
nginx:v2
#或者
docker commit -a “wzs” -m “install httpd” +ID(写前几位就行) +新容器名字