[技术探索]Docker学习笔记

镜像与容器

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   容器名称  镜像依赖

你可能感兴趣的:([技术探索]Docker学习笔记)