镜像与容器
镜像:镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成
(当 docker 进入莫名其妙的 "编辑模式时", ctrl + c 可退出)
各种相关命令:
镜像相关:
(docker commit 容器名称(实) 镜像名称(形参) ;把容器生成为镜像,再由镜像转成 tar 包。tar 包可直接 copy 到任意 docker环境 直接load)
- 拉取镜像:docker pull image:tag (若没有指定标签版本,默认下载最新的)
- 查看镜像:docker images(查看运行中的镜像)
- 保存镜像:docker save -o [保存的目标文件名称] [镜像名称] (例:docker save -o nginx.tar nginx:latest,此时 会把镜像打包成 nginx.tar 包,此压缩包可在任意docker环境下加载, -o output;
打包后的压缩包 会保存在 docker目录下, etc/docker ) - 删除镜像:docker rmi image:tag
- 加载镜像:docker load -i [docker环境下保存的镜像压缩包] (例:docker load -i nginx.tar, -i input; 加载命令要在docker目录下使用)
容器相关: - 创建并运行一个容器:docker run --name containerName -p 80:80 -d nginx (--name 给容器起名;-p 将宿主机端口与容器端口映射,冒号左侧是宿主机,右侧是容器端口; -d 后台运行容器;镜像名称)
- 停止容器:docker stop containerName
- 启动容器: docker run containerName(为启动时,第一次是启动;若已经启动了一个,在启动就是再创建另一个容器)
(创建一个容器时同时要设置什么参数,可直接在 dockerhub查看;当启动一个"创建不当"的容器时,会有提示 该设置什么参数,然后记住要设置的参数。 把设置不当的原容器删了在从新设置) - 删除容器:docker rm containerName/containerID(先停止,后删除;正常创建的docker容器可根据containerName删除,非正常创建的得用containerID删除)
- 挂载数据卷:
- 首先在创建容器前创建要挂载的数据卷:docker volume create 数据卷(例:docker volume create html(要挂载的目录),查看 该数据卷具体信息包括具体位置 docker volume inspect 数据卷名称),
- 在创建容器时 设置参数 -v containerFile(已创建好的数据卷):/root/file (例: docker run --name nginx -v html:/usr/share/nginx/html -p 80:80 nginx , 把 创建的该容器下的 html 目录挂载到 该宿主机(虚拟机)的/root/html 目录下,该宿主机必须先创建同名目录。此时修改挂载到 宿主机的目录文件就相当于修改容器的目录文件;注意数据卷和要挂载的内容都要正确且缺一不可 );
(创建容器时,可先在dockerhub(https://hub-stage.docker.com/)上查阅创建镜像容器时要设置的基本属性,然后同时把 容器的"conf"文件挂载到宿主机上,然后具体的属性参数配置什么的都可以像windows版一样改。。。)
(访问 https://hub-stage.docker.com/ 然后搜索镜像,点击右侧镜像,然后可阅读了解 使用该镜像的一些基本 用法,参数、、、等等等等等)
*. 查看运行中的容器:docker ps (docker ps -a ,查看所有容器,包括没运行的)
*. 进入容器执行命令:docker exec -it containerName bash (-it ,给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互; bash,进入容器后执行的命令,bashshiyoge linux终端交互命令)
*. 查看容器运行日志:docker logs
安装docker:
- 安装环境: yum -y install gcc-c++
- 安装必要的一些系统工具:yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加软件源信息:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新并安装Docker-CE: yum makecache fast ; yum -y install docker-ce
- 开启Docker服务:systemctl start docker(手动开启) ; systemctl enable docker(开机自启)
- 测试是否安装成功:docker -v
- 配置镜像加速器: 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器;
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ldu6wrsf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
===========================
(创建一个空目录,然后放入 程序文件(jar 包)、运行环境(jdk8。tar.gz)以及 写好的Dockerfile文件;
此时可将准备好的包含程序的docker目录上传到虚拟机的任意目录,,然后进入该 目录下, docker build -t "生成镜像后的名字". ; 注意build命令最后还有一个 " . "
)
Dockerfile自定义镜像:(使用 docker build 报错时可能是缺少依赖 glibc.i686, 执行 yum install glibc.i686 即可)
(创建 Dockerfile空文件,然后写入环境、配置、依赖、函数库)
镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
依赖镜像名和id
FROM centos:7
指定镜像创建者信息
MAINTAINER WYZ
切换工作目录,若不切换 则默认 root
WORKDIR /usr
执行 常规 linux命令
RUN mkdir/usr/local/java
ADD 是相对路径jar,把java添加到容器中。 与 COPY 不同的是, ADD 的若是压缩包会自动解压,而 COPY只是复制,不包括解压
ADD jdk-8u144-linux-i586.tar.gz /usr/local/java
ENV 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar;$CLASSPATH
ENV PATH $JAVA_HOME/bin;$PATH
====================================
Docker 私有仓库:
- docker官网下载 DockerRegistry(基础版的Docker镜像仓库) : https://hub.docker.com/_/registry ;并加载到自己的docker里,
- 创建容器 docker run -d --name registry --restart=always -p 5000:5000 -v registry-data:/var/lib/registry registry
- 配置信任地址:vi /etc/docker/daemon.json "insecure-registries"=["http://[信任的主机地址]:8080"]
- 重启docker
推送镜像到私有仓库前必须先tag
docker tag nginx:latest [私有仓库地址及端口]/要推送的镜像名称(任意):版本 (例: docker tag nginx:latest 192.168.211.133:8080/nginx:1.0)
推送:docker push 192.168.211.133:8080/nginx:1.0
拉取:docker pull 192.168.211.133:8080/nginx:1.0
镜像:
容器:
仓库:
常用命令:
标签:容器,创建,nginx,镜像,docker,目录 From: https://www.cnblogs.com/mryd/p/17426883.html