docker初学汇总

dockers 安装

curl -fsSL https://get.docker.com/ | sh #在线安装docker 程序
docker version #查看版本 检测安装是否完成

systemctl start docker.service #启动docker
systemctl stop docker.service #停止docker
systemctl restart docker.service #重启docker
systemctl status docker.service #查看docker状态

docker镜像

docker search httpd #在Docker Hub 网站搜索httpd的容器
在这里插入图片描述
其中:NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否docker官方发布用

docker pull httpd #从Docker Hub下载httpd镜像

docker images 查看本地镜像
在这里插入图片描述

  • 来自于哪个仓库,比如 centos7-base
  • 镜像的标记,比如 latest
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小镜像大小

docker tag IMAGEID REPOSITORY:TAG #添加或修改镜像tab
docker port [ID或者名字] # 查看容器的某个确定端口映射到宿主机的端口号
docker logs [ID或者名字] #可以查看容器内部的标准输出

docker启动新容器

docker rundocker run [OPTIONS] IMAGE [COMMAND] [ARG…]
启动镜像生成容器,容器依赖于对应的镜像

相关参数如下:
docker初学汇总_第1张图片
eg:
docker run -t -i centos7-base:latest /bin/bash 使用latest镜像启动容器
• -i :开启了input(输入)功能
• -t: 开启了一个连接容器里边的terminal(终端)

docker run -d -P centos7-base:latest /bin/bash
• -d:让容器在后台运行 ,仅限于启动全新的容器,启动关闭的容器是不可以的。
• -P:将容器内部使用的网络端口随要分配到主机上

docker run -d -P centos7-base:latest /bin/bash
• -d:让容器在后台运行 ,仅限于启动全新的容器,启动关闭的容器是不可以的。
• -P:将容器内部使用的网络端口随要分配到主机上

docker run -v /data1:/cdata centos7-base:latest /bin/bash

  • -v: docker宿主机的目录 :容器内虚拟机的目录

docker run --name oraclient centos7-base:latest /bin/bash

  • -name:为容器指定一个名称,后续可以通过名字进行容器管理
    注意:容器的名称是唯一的。如果已经命名了一个叫 web 的容器,当你要再次使用 web 这个名称的时候,需要先用docker rm 来删除之前创建的同名容器。

docker run -dit -p 8022:22 --name oracle –privileged centos7-base /bin/bash

  • –privileged:增加root权限,无该参数,容器内的root相当于宿主机的普通用户

docker容器管理

docker ps #查看正在运行的容器
在这里插入图片描述
docker ps -a #查看所有容器,包括停止运行的
在这里插入图片描述
docker start [container ID]|names #重启启动停止的容器
docker stop [container ID]|names #关闭启动停止的容器

docker rmi [ID]
#移除不需要的镜像,不能删除有子镜像的镜像,不能删除有依赖于该镜像的容器的镜像

docker rm [ID或者名字]
#移除不需要的容器(容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。)

docker rm $(docker ps -a -q)
#一次性删除所有容器
可在docker run 启动时 使用 --rm参数 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)

docker exec -it [容器id] /bin/bash #新建bash终端进入正在运行的docker容器

docker attach [容器id]
#直接进入容器当前终端 当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

修改镜像

1、docker commit 实现
docker commit -m=“提交的描述信息” -a=“作者” 容器id 要创建的目标镜像名:[标签名]
#正在运行的容器,做完变动后,可使用该命令将当前状态的提交生成镜像

2、通过Dockerfile文件实现
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

docker build [OPTIONS] PATH
eg:docker build -f /path/to/a/Dockerfile

镜像文件导入导出

方法一
镜像文件导出
docker export 镜像id > 镜像文件名称.tar 导出镜像文件到当前终端目录下

镜像文件导入
docker import - 仓库名称:tab < 镜像文件名称.tar

方法二
镜像文件导出
docker save -o 镜像文件名称.tar 镜像id

镜像文件导入
docker load -i 镜像文件名称.tar

load 和 import 区别
1)load 是用来导入镜像存储文件到本地镜像库
2)import 是导入一个容器的快照到本地镜像库
3)容器快照文件(import)将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),从容器快照文件导入时可以重新指定标签等元数据信息。
4)镜像存储文件(load)将保存完整记录,体积也要大

需要注意两种方法不可混用。
如果使用import导入save产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。

docker后台sshd服务

1、docker run -dit -p 8022:22 centos7-base /bin/bash #后台启动容器
2、docker exec -it [容器id] /bin/bash #进入容器
3、/usr/sbin/sshd #启动ssh服务
4、然后即可通过宿主机的8022端口ssh工具访问该docker容器

将当前宿主机制作成镜像文件并导入的方法

1、tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /root 创建自己的基础镜像,放置于/root目录下

2、cat centos7-base.tar | docker import - centos7-base 将制作的centos导入,并命名为:centos7-base

你可能感兴趣的:(自我总结)