docker初探
1、docker , 先从仓库中下载一个和自己的 linux 一致的 centos image 。
命令: docker pull centos
2、运行 centos 镜像,运行起来后成为一个 container
image_id 用 docker images 命令查看
docker run -i -t -v /root/software/:/mnt/software/ image_id /bin/bash
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:docker.cn/docker/centos:centos6。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
命令提示处会出现 image_id
在 容器中操作, 如设置环境,安装软件,启动脚本等。
退出 容器 (exit) , 回到 linux 提示符。
3、提交刚才的运行的 容器,转化为 image ,
docker pa -a 查询 最近运行的 容器, 记录下 container_id
docker commit container_id image_name:version
image_name , version 值有自己确定。
4、运行 刚提交的 image , 主要是运行在 image 中建立的 程序 或者脚本,
如 image 中安装了 tomcat , 其启动脚本为: run.sh
docker run -d -p 58080:8080 --name 别名 镜像名:版本 /root/run.sh
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
5、修改 image , 仓库步骤 2。
docker run -i -t image_id
进入运行中的 container