Linux Centos7.5从docker的安装到容器的部署运行
环境:
Win10 内的 VMware workstation(Centos7 64位)
所有命令皆为 root 用户, 非 root 用户应在命令前加 sudo
查看系统版本命令: cat /etc/redhat-release
安装Docker: yum install docker
启动: service docker start
设置开机启动: chkconfig docker on
查看本地镜像列表: docker images
从官方仓库搜索镜像: docker search <关键词>
例: docker search centos
从官方仓库拉取一个centos镜像: docker pull <镜像名>
例: docker pull centos
移除一个本地镜像: docker rmi <镜像id>
用centos镜像运行一个docker容器: docker run -t -i -d -p 8181:81 -p 8282:82 -v /home/package:/home -v /etc/localtime:/etc/localtime:ro --privileged=true --name yjy-server centos /bin/bash
-i: 让容器的标准输入保持打开
-t: 分配一个伪终端并绑定到容器的标准输入上
-d: 守护态运行容器(后台运行)
-p: 将主机的8181端口绑定到容器的81端口, 这样访问主机的8181端口就相当于访问了容器的81端口(可多次使用-p参数绑定多个端口)
-v /home/package:/home: 将主机的/home/package目录挂载到容器的/home目录(可以事先把 jdk, mysql等安装包存放在主机的package目录下)
-v /etc/localtime:/etc/localtime:ro: 挂载主机时间文件到容器, 保证容器与宿主机时间同步, ro表示只读 (否则会出现容器时间不对的问题)
--privileged=true: 给容器增加特权, 否则在容器内访问挂载目录时会提示没有权限
--name yjy-server: 将容器自定义命名为 yjy-server
centos: 镜像名称
/bin/bash: 容器启动后运行 bash脚本解释器
查看所有容器: docker ps -a
查看某个容器的详细信息: docker inspect <容器id>
从容器信息中找到容器的内网ip地址(启动服务时可能用得着): NetworkSettings > IPAddress
关闭运行中的容器: docker stop <容器id>
启动已关闭的容器: docker start <容器id>
重启一个正在运行的容器: docker restart <容器id>
删除一个容器: docker rm <容器id>
进入一个正在运行的容器
方式1: docker attach <容器id>
缺点: 退出容器时, 容器会自动关闭, 而正常情况下往往需要容器继续在后台运行
方式2: docker exec -it <容器id> /bin/bash
方式3:
获取容器进程PID: docker inspect --format "{{ .State.Pid }}" <容器id>
进入容器: nsenter --target <容器进程PID> --mount --uts --ipc --net --pid
进入到挂载目录: cd /home
解压jdk压缩文件: tar -zxvf server-jre-8u191-linux-x64.tar.gz
将解压后的文件夹移动至/usr/local/: mv jdk1.8.0_191/ /usr/local/jdk1.8
设置环境变量:
方式1:
配置/etc/profile 追加内容:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
加载生效: source /etc/profile
缺点: 重新进入容器后环境变量将失效, 每次进入容器都必须手动加载才行
方式2:
配置/root/.bashrc 追加内容:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
加载生效: source /root/.bashrc
测试jdk是否安装成功: java -version
安装其他软件
安装lrzsz(用于上传文件到容器或从容器下载文件): yum install lrzsz
新建目录: mkdir /var/server
进入目录: cd /var/server
上传服务jar包(server.jar)到目录: rz
运行服务: java -jar server.jar --server.address=容器的内网ip地址 --server.port=81
现在, 在外部访问虚拟器 http://虚拟机ip:8181/ 就能访问到容器的 81 端口服务了
至此, 容器服务部署完成
将容器保存为新镜像: docker commit -m "这里写容器说明" -a "这里写你的名字" <容器id> <镜像名>:<标签>
例: docker commit -m "测试创建镜像" -a "yjy 1234567@qq.com" dfgsd34fss3 docker.io/centos-yjy:latest
导出容器快照到本地文件: docker export <容器id> > /home/centos-yjy.tar
导入容器快照文件为镜像: docker import /home/centos-yjy.tar <新镜像名称>
将本地镜像导出为镜像文件: docker save -o <导出文件名> <镜像名>:<标签>
例: docker save -o /home/centos-yjy.tar centos-yjy:latest
从本地文件载入镜像: docker load < /home/centis-yjy.tar
Linux Centos7.5从docker的安装到容器的部署运行的更多相关文章
- Linux环境下的Docker的安装和部署、学习-一
CentOS Docker 安装Docker支持以下的CentOS版本:CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 前提条件目前,CentOS 仅发行版本中 ...
- 在Linux(Centos7)上使用Docker运行.NetCore
在上一篇中我们写了如何在windows中使用docker运行.netcore,既然我们了解了windows下的运行发布,我们也可以试试linux下使用docker运行.netcore项目,那么今天我们 ...
- Centos7下实现docker + wordpress 安装
一.Docker CE 安装 检查是否安装过旧的版本 如果系统安装旧版本Docker需要先卸载,命令如下: [root@localhost Wordpresss]sudo yum remove doc ...
- Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...
- Centos7下,Docker的安装与使用
一.Docker Install 1.卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ ...
- Docker 案例: 在容器中部署静态网站
----------------知识点------------ 容器的端口映射: docker run [-P] [-p] -P,–publish-all=true | false,大写的P表示为 ...
- Linux CentOS7.0 (03)安装验证 docker
一.安装docker 1.升级 Linux 的软件包和内核 sudo yum update 2.安装 docker (1) sudo yum install docker (2).验证docker安 ...
- Centos7.1下Docker的安装-yum方法
在CentOS7上安装1. 查看系统版本: $ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) 2. 安装docker $ y ...
- linux下如何使用docker二进制文件安装_docker离线安装
1,下载二进制文件 https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz 2,解压二进制文件 tar ...
随机推荐
- linux shell 命令集锦
-h FILEFILE exists and is a symbolic link (same as -L)文件存在并且是一个字符链接(与-L选项相同) dirname $0 定位执行的命令脚本的相 ...
- 【CF715E】Complete the Permutations 第一类斯特林数
题目大意 有两个排列 \(p,q\),其中有一些位置是空的. 你要补全这两个排列. 定义 \(s(p,q)\) 为 每次交换 \(p\) 中的两个数,让 \(p=q\) 的最小操作次数. 求 \(s( ...
- Django启动时报错Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试
1.系统环境配置 window 10 + python 3.6 + django 1.11.20 2.报错原因 原因:可以肯定是端口被占用了,但是我只开了一个django,那究竟是哪款软的骚操作占用我 ...
- 记录下扣jio的2018年
踩着18年的尾巴,写下这篇总结,既给18年画上句号,也展望19年,制定下计划. 自17年底正式接手团队项目管理工作以来,虽然前面一年都干了大部分工作,但正式走到这个位置上来,还是有一部分的期待.接手之 ...
- 【JS】JavaScript 指定日期增加天数
指定某个日期(字符串),增加n天后,输出日期字符串,格式:年-月-日: /** * [dateAddDays 从某个日期增加n天后的日期] * @param {[string]} dateStr [日 ...
- 基于jeesite的cms系统(三):使用RESTful API在前端渲染数据
使用RESTful API可以更好的开发前后分离的应用,后面一节会介绍使用模版引擎Beetl开发后端渲染的应用. 一.配置Swagger(Api 接口文档) 1.使用系统自带 拷贝jeesite-mo ...
- 【bzoj 4449】[Neerc2015]Distance on Triangulation
Description 给定一个凸n边形,以及它的三角剖分.再给定q个询问,每个询问是一对凸多边行上的顶点(a,b),问点a最少经过多少条边(可以是多边形上的边,也可以是剖分上的边)可以到达点b. I ...
- mysql:The user specified as a definer ('xxx'@'%') does not exist 解决方法
发生这种问题.大概率是用户不存在或者是权限不够 用户不存在.用可视化工具新建一个. 权限不够 ,运行下面命令: 如:我的错误: The user specified as a definer ('mo ...
- exists,in的区别-mysql
如说两张表一张是用户表TDefUser(userid,address,phone),一张是消费表TAccConsume(userid,time,amount),我要查消费超过5000的用户记录,那么我 ...
- 分布式系列十一: Redis进阶
分布式锁 数据库 数据库是使用唯一索引不允许重复的特性(或自定义实现如乐观锁). 但持有锁的进程如果释放锁时异常则容易导致死锁. zookeeper 使用临时节点, watcher可以获得节点被删除的 ...