镜像与容器
docker中容器和镜像的关系是什么?docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository)。容器是由镜像实例化而来。
也可以说,镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件
基础命令
systemctl start|stop|restart status docker 启动docker服务管理
docker search imageName 在仓库搜索镜像名
docker pull imageName 下载上面的镜像,镜像位置: /var/lib/docker
docker images (可选) |docker image ls 查看镜像
镜像重命名
对本地镜像的tag name重命名,并生成一个新的镜像
yxl@servename:~$ docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
docker tag [老的镜像名称]:[老的镜像TAG] [新的镜像名称]:[新的镜像TAG]
docker tag ubuntu:15.10 ubuntu-new:latest
ubuntu-new latest 9b9cb95443b5 4 years ago 137MB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
镜像删除
dokcer rim 命令参数 镜像ID
docker rmi 命令参数 (-f) 镜像名称:镜像版本
镜像导入导出
docker save -o 镜像名.tar 本地镜像名称|ID //导出
docker load < 镜像名.tar //导入
docekr laod --input 镜像名.tar //导入
cat 模板文件.tar |docekr import - 自定义镜像名称
镜像历史和详细信息
docker history 镜像名称:版本号
docker inspect 命令参数 镜像名称:镜像版本号
docker inspect 命令参数 镜像ID
容器查看,创建,启动
docker ps |docker ps -a (-a显示所有运行过的容器)
docker create 参数命令 依赖镜像 容器内命令 容器内命令参数//创建一个待运行的容器
命令参数:-t 在新容器内指定一个伪终端或终端。
-i 允许你对容器内的标准输入 (STDIN) 进行交互
--name 自定义容器名
docker created -it --name nginx-newname nginx ls -a
docker ps -a 即可参看上述容器被运行过
容器启动
- 启动待启动或已关闭容器
docker start 容器ID或名称
- 基于镜像信件内容器并启动
docker run 命令参数 镜像名称 执行的命令
命令参数:-t 在新容器内指定一个伪终端或终端。
-i 允许你对容器内的标准输入 (STDIN) 进行交互
--name 自定义容器名
-d 在后端运行容器并打印容器ID
--rm 容器退出后自动删除容器
docker run --rm --name nginxNewName nginx /bin/echo "hello world"
- 守护进程启动docker
docker run -d nginx
容器的暂停,取消暂停,重启
docker pause |unpause 容器ID或名称
docker restart 容器ID或名称
容器关闭,终止,删除
docker stop 容器ID或名称 //延迟执行关闭一个处于暂停或运行状态的容器
docker kill 容器ID或名称 //强制并立即关闭一个处于暂停或运行状态的容器
docker rm -f(强制删除在运行的) 容器ID或名称
docker rm -f $(docker ps -a -q)批量删除容器
容器进入与退出
退出:exit,ctrl+D
进入
docker run -it --name 重命名容器 依赖镜像 /bin/bash
docker exec -it 容器ID或名称 //手动进入
#!/bin/bash
#定义进入仓库函数
docker_in(){
CONTAINER_ID=$1
PID=$(docker inspect --format {{.State.Pid}} $CONTAINER_ID)
nsenter --target $PID --mount -uts --ipc --net --pid
}
docker_in $1
基于容器创建镜像
//将本地运行的容器创建镜像
docker commit -m "变更信息" -a "作者" 依赖镜像 容器名称:版本号
docker export 导出的容器名称.tar
cat 导出容器名称.tar |docker import - 生成的镜像名称
数据管理(数据卷,数据卷容器)
//用于数据持久化-数据卷
docker run -itd --name 自定义容器名称 -v 宿主机目录:容器数据卷目录 依赖镜像
//使用特定的容器作为数据卷,这个容器就叫数据卷容器
1.创建数据卷容器
docker create -v /data-temp --name 自定义数据卷容器名称 依赖镜像
2. 创建多个容器与上述数据卷容器进行交互
docker run --volumes-from 上述数据卷自定义容器名称 --name 当前容器自定义名称 依赖镜像
数据备份
1.创建一个 挂载数据卷容器 的 容器(存在备份目录backup,和共享目录data-temp)
2.上述容器挂载宿主机本地目录作为备份目录
3.将数据卷容器的内容备份到宿主机本地目录挂载的数据卷容器中
4.完成备份任务之后删除创建数据卷的容器
docker run -it --rm --volumes-from 自定义数据备份数据卷容器的容器名 -v 宿主机目录:备份用数据卷容器备份目录 依赖镜像 压缩备份命令
docker run -it --rm --volumes-from v-temp -v /home/yxl/backup:/backup nginx tar -zcPf /backup/data-temp.tar.gz /data-temp
网络管理
宿主机与容器端口之间的映射
docker run -d -P 宿主机IP::容器端口 --name 容器名称 镜像依赖//随机端口映射 port:32768++
dockrt run -p 宿主机IP:宿主机端口:容器端口 --name 容器名称 镜像依赖
dockrt run -p 宿主机IP(可忽略):宿主机端口:容器端口 --name 容器名称 镜像依赖.
dockrt run -p 宿主机端口0:容器端口0 宿主机端口1:容器端口1 --name 容器名称 镜像依赖