docker简单实战
1.为ubuntu镜像添加ssh服务
1.1查看可用的ubuntu版本
1)访问ubuntu镜像库地址:https://hub.docker.com/search?q=ubuntu&type=imag1e
2)点击第一个ubuntu的官方镜像,选择tag标签,可以选择下载对应的ubuntu镜像
3)找到需要的版本,自行下载
1.2 拉取Ubuntu镜像并查看
[root@localhost harbor]# docker pull ubuntu:16.04
[root@localhost harbor]# docker image ls ubuntu:16.04
1.3 后台运行容器,并配置软件源
[root@localhost harbor]# docker run -itd --name ubuntu ubuntu:16.04
ce3b1dec5d736a513f126729e8d7a35e3f63e2a40597d13d962bdad9e9c2fe55
[root@localhost harbor]# docker exec -it ubuntu bash
root@ce3b1dec5d73:/# whoami
root
root@ce3b1dec5d73:/#
root@ce3b1dec5d73:/# exit
exit
官方源下载速度比较慢,可以替换为国内163,aliyun等镜像的源。
root@0895ad8adf6a:/etc/apt# mv /etc/apt/sources.list /etc/apt/sources.list.bak
使用echo指令添加sources.list文件内容
root@175129961b50:/# apt-get update
1.4安装和配置ssh服务
1)更新软件包缓存后可以安装ssh服务,选择主流的openssh-server作为服务端
root@0895ad8adf6a:/etc/apt# apt-get install openssh-server
注:如果装包出现如下错误dpkg: error: corrupt info database format file '/var/lib/dpkg/info/format'
root@7c52e48ca823:~# echo 1 > /var/lib/dpkg/info/format
2)如果需要正常启动ssh服务,则目录/var/run/sshd必须存在
root@175129961b50:/# mkdir -p /var/run/sshd
启动ssh服务,并查看监听状态
root@7c52e48ca823:~# /usr/sbin/sshd -D &
root@7c52e48ca823:~# apt-get install iproute
root@7c52e48ca823:~# ss -lntup
3)配置客户端使用秘钥登录
将客户端的公钥(可使用ssh-keygen -t rsa命令生成)复制到容器的authorized_keys文件中
root@7c52e48ca823:~# vim /root/.ssh/authorized_keys
4)创建自动启动ssh服务的可执行文件run.sh,并添加可执行权限
root@7c52e48ca823:~# vim /run.sh
#!/bin/bash
/usr/sbin/sshd -D
root@7c52e48ca823:~# chmod +x /run.sh
root@7c52e48ca823:~# exit
5)使用ssh连接容器,容器ip地址为172.17.0.2
[root@localhost ~]# ssh 172.17.0.2
6)将容器保存为一个新的sshd:ubuntu镜像并运行
[root@localhost ~]# docker commit ubuntu sshd:ubuntu
[root@localhost ~]# docker run -it -p 2222:22 -d sshd:ubuntu /run.sh
7)使用ssh连接容器
[root@localhost ~]# ssh 192.168.168.128 -p 2222
2 使用dockerfile创建支持ssh服务的镜像
1)创建工作目录
[root@localhost ~]# mkdir sshd_ubuntu
[root@localhost ~]# cd sshd_ubuntu/
[root@localhost sshd_ubuntu]# touch dockerfile run.sh sources.list
[root@localhost sshd_ubuntu]# vim run.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@localhost sshd_ubuntu]# ssh-keygen -t rsa
[root@localhost sshd_ubuntu]# cat /root/.ssh/id_rsa.pub > authorized_keys
[root@localhost sshd_ubuntu]# vim sources.list
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
[root@localhost sshd_ubuntu]# vim dockerfile
FROM ubuntu:16.04
MAINTAINER docker_user
RUN echo 1 > /var/lib/dpkg/info/format
ADD sources.list /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE 22
CMD ["/run.sh"]
精简dockerfile:
FROM ubuntu:16.04
MAINTAINER docker_user
ADD sources.list /etc/apt/sources.list
ADD run.sh /run.sh
RUN echo 1 > /var/lib/dpkg/info/format && apt-get update && apt-get install -y openssh-server && mkdir -p /var/run/sshd /root/.ssh && chmod 755 /run.sh ADD authorized_keys /root/.ssh/authorized_keys EXPOSE 22
CMD ["/run.sh"]
[root@localhost sshd_ubuntu]# docker build -t sshd:dockerfile .
[root@localhost sshd_ubuntu]# docker ps
[root@localhost sshd_ubuntu]# docker run -d -p 2223:22 sshd:dockerfile
[root@localhost sshd_ubuntu]# ssh 192.168.168.128 -p 2223
3 docker安装nginx
3.1 查看可用的nginx版本
访问nginx镜像库地址:https://hub.docker.com/_/nginx?tab=tags
点击第一个nginx的官方镜像,选择tag标签,可以选择下载对应的镜像:
也可以使用如下指令查看可用版本:
[root@localhost ~]# docker search nginx
3.2 拉取nginx镜像并查看
[root@localhost harbor]# docker pull nginx
[root@localhost harbor]# docker image ls nginx
3.3 后台运行容器
[root@localhost html]#docker run -d --name nginx -p 80:80 -v /html:/usr/share/nginx/html:ro nginx
通过浏览器访问宿主机的8080端口可看到nginx的欢迎界面信息
[root@localhost html]# echo hello > /html/index.html
[root@localhost html]# curl localhost:80
hello
4 docker安装mysql
4.1 查看可用的版本
访问mysql镜像库地址:https://hub.docker.com/_/mysql?tab=tags
点击第一个官方镜像,选择tag标签,可以选择下载对应的镜像:
4.2 拉取镜像并查看
[root@localhost harbor]# docker pull mysql:latest
[root@localhost harbor]# docker image ls mysql
4.3后台运行容器,并使用exec进入容器
[root@localhost harbor]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql
[root@localhost harbor]# docker ps
[root@localhost harbor]# docker exec -it mysql bash
root@908813503e41:/# mysql -uroot -p1234
5 docker安装tomcat
5.1 查看可用的版本
访问tomcat镜像库地址:https://hub.docker.com/search?q=tomcat&type=image
5.2 拉取镜像并查看
[root@localhost harbor]# docker pull tomcat
[root@localhost harbor]# docker image ls tomcat
[root@localhost harbor]# mkdir /usr/local/tomcat
[root@localhost harbor]# ll /usr/local/tomcat/
total 0
[root@localhost harbor]# docker run -itd --name tomcat -v /usr/local/tomcat:/usr/local/tomcat/webapps -p 8000:8080 tomcat
[root@localhost harbor]# docker exec -it tomcat bash root@2e2e0f7b2b9e:/usr/local/tomcat# ls -l /usr/local/tomcat/webapps total 0
root@2e2e0f7b2b9e:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@2e2e0f7b2b9e:/usr/local/tomcat# exit
6 docker安装php
6.1 查看可用的版本
访问php镜像库地址:https://hub.docker.com/_/php?tab=tags
6.2 拉取镜像并查看
[root@localhost harbor]# docker pull php:5.6-fpm
[root@localhost harbor]# docker image ls php
6.3 后台运行容器,并使用exec进入容器
[root@localhost harbor]# mkdir /nginx/www -p
[root@localhost harbor]# docker run --name php-fpm -v /nginx/www/:/www -d php:5.6-fpm
[root@localhost harbor]# mkdir /nginx/conf/conf.d -p
[root@localhost harbor]# cat /nginx/conf/conf.d/php.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params;
}
}
[root@localhost harbor]# docker run --name nginx -p 8083:80 -d -v /nginx/conf/conf.d/:/etc/nginx/conf.d:ro -v /nginx/www/:/usr/share/nginx/html:ro --link php-fpm:php nginx
–link myphp-fpm:php: 把 php-fpm 的网络并入 nginx,通过修改nginx容器的 /etc/hosts,让 nginx 通过 php:9000 访问 php-fpm。
-v /nginx/www/:/usr/share/nginx/html:ro:如果不指定nginx首页的文件,则会访问nginx的默认 html文件,访问php则需要使用http://192.168.168.139:8083/index.php此种方式
[root@localhost www]# echo hello > /nginx/www/index.html
[root@localhost www]# curl 192.168.168.128:8083 hello
docker简单实战的更多相关文章
- Docker 监控实战
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Docker入门实战_正版电子书在线阅读_百度阅读
Docker入门实战_正版电子书在线阅读_百度阅读 Docker入门实战
- Docker简单介绍
Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...
- Nancy简单实战之NancyMusicStore(六):写在最后
前言 由于公司搬家后,住的地方离上班的地方远了N倍,以前是走路十多分钟就可以到公司的,上班时间也从9:00提早到8:30 现在每天上班都是先坐公交,然后再坐地铁,在这段路上比较浪费时间而且每天都是要6 ...
- Docker swarm 实战-部署wordpress
Docker swarm 实战-部署wordpress 创建一个overlay的网络 docker network create -d overlay demo 6imq8da3vcwvj2n499k ...
- 移动端web开发初探之Vuejs的简单实战
这段时间在做的东西,是北邮人论坛APP的注册页.这个注册页是内嵌的网页,因为打算安卓和IOS平台同时使用.因此实际上就是在做移动端的web开发了. 在这过程中遇到了不少有意思的东西. DEMO的git ...
- Docker下实战zabbix三部曲之一:极速体验
对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践: 环境信息 ...
- Docker下实战zabbix三部曲之二:监控其他机器
在上一章<Docker下实战zabbix三部曲之一:极速体验>中,我们快速安装了zabbix server,并登录管理页面查看了zabbix server所在机器的监控信息,但是在实际场景 ...
随机推荐
- Axios、Vue组件-生命周期、计算属性、Slot插槽、自定义事件、v-router、钩子函数
Axios:网络通信 <script> var vm =new vue({ el:"#app", data(){ return{ info:{ //返回的数据必须和js ...
- Rigol DSA815频谱仪在合肥光源工作点测量系统中的应用
发的这篇文,我只是搬运工,读者切记. 合肥光源工作点测量系统已实现BBQ无激励在线测量,还是前些年永良师弟在这的时候调试成功的,并和超才把安捷伦的一台频谱仪和普源的DSA815的IOC调试成功,不过在 ...
- Python绘制神经网络模型图
本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法. 最近需要进行神经网络结构模型的可视化绘图工作.查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块 ...
- 软件设计师考试备考之UML
UML 统一建模语言是面向对象软件的标准化建模语言. 事务 结构事务 UML模型中的名称,它们通常是模型的静态部分,描述概念或物理元素 图形表示: 行为事务 UML模型中的动态部分.它们是模型中的动词 ...
- 不借助脚手架手动搭建react项目(webpack5 + Antd4 + React18)
前言 工作中发现很多同事在接到一个新项目时,总是基于现有项目复制一份配置文件,然后写自己的组件及业务代码,以至于项目中存在一些冗余的依赖及配置信息.并且由于已有项目的依赖包及插件比较老,新项目也一直没 ...
- 跳板攻击之: MSF 添加路由方式渗透内网
跳板攻击之: MSF 添加路由方式渗透内网 目录 跳板攻击之: MSF 添加路由方式渗透内网 1 Metasploit 跳板攻击: 添加路由方式原理 2 实验环境 2.1 建立 meterpreter ...
- MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值
MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值 EULAR2015; PresentID: OP0043 PREDICTORS OF SUSTAINED REMISSION O ...
- 基于WebGL的方式使用OpenLayers
1. 引言 在绘制海量数据时,使用GPU进行绘制可有效减少CPU的负载,提升绘制时的速度在浏览器中,可以使用WebGL的方式与GPU交互 OpenLayers是一个常用的GIS相关的JavaScrip ...
- mysql 5.7 gtid 主从复制
GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID 主库#开启gtidlog-bin=mysql-binexpire_logs_days = 5binlog_format=r ...
- SpringBoot的使用
1. Spring Boot概述 目标:了解Spring Boot是什么,有什么作用 小结: Spring Boot是一个便捷搭建 基于spring工程的脚手架:作用是帮助开发人员快速搭建大型的spr ...