文章目录

  • 构建容器服务
  • 构建sshd容器服务步骤
  • 构建systemctl容器服务步骤
    • 容器开启ssh
  • 配置systmctl
  • docker容器中配置nginx
  • docker容器中配置tomcat
  • docker容器中配置mysql
    • 设置远程连接

构建容器服务

构建sshd容器服务步骤

sshd为secure shell的简称,可以通过网络在主机中开
机shell的服务

操作步骤

  1. 下载基础镜像
  2. 建立工作目录
  3. 创建并编写Dockerfile文件
  4. 生成镜像
  5. 启动容器

构建systemctl容器服务步骤

systemctl是管制服务的主要工具,它整合了chkconfig与
service功能于一体

操作步骤

  1. 建立工作目录
  2. 创建并编写Dockerfile文件
  3. 生成镜像
  4. 启动容器
  5. 验证systemctl

容器开启ssh

创建一个目录

[root@localhost ~]# mkdir sshd
[root@localhost ~]# cd sshd/

编写docker的镜像文件

[root@localhost sshd]# vim Dockerfile
FROM centos:7
MAINTAINER The CentOS projest <cloud-centos>
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo '123456' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd","-D" ]

执行脚本生成镜像

[root@localhost sshd]# docker build -t sshd:new .

开启容器

[root@localhost sshd]# docker run -d -P sshd:new

查看端口

[root@localhost sshd]# docker ps -a
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMES
ecd8495ace38        sshd:new            "/usr/sbin/sshd -D"   17 seconds ago      Up 15 seconds       0.0.0.0:32768->22/tcp   affectionate_roentgen

启动容器并修改root密码

[root@localhost sshd]# ssh localhost -p 32768
Are you sure you want to continue connecting (yes/no)? yes
root@localhost's password:  123456
[root@ecd8495ace38 ~]#    进入容器

安装已经完成

配置systmctl

因为我们开启关闭服务很麻烦所应需要systemctl来管理

[root@ecd8495ace38 /]# systemctl status sshd
Failed to get D-Bus connection: Operation not permitted

编写docker的镜像文件

[root@localhost systemctl]# vim Dockerfile
FROM sshd:new
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/;for i in *;do [ $i == \
systemctl-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*; \
rm -f /etc/systemd/system/*.wants/*; \
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*; \
rm -f /lib/systemd/system/anacoda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

执行脚本生成镜像

docker build -t systemd:new .

root用户设置(不降级操作)

docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:new /sbin/init &

//privateged container内的root 拥有真正的权限。否则,container内的root只是外部的一个普通用户权限。

开启服务

查看端口号

[root@localhost systemctl]# docker ps -a
ecd8495ace38        sshd:new            "/usr/sbin/sshd -D"   25 minutes ago       Up 25 minutes       0.0.0.0:32768->22/tcp   affectionate_roentgen

开启服务

[root@localhost systemctl]# docker exec -it 9d8bd74da0e5 bash

已经可以管理sshd服务了

docker容器中配置nginx

创建文件

mkdir nginx
cd nginx

编写docker的镜像文件

FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

解释:

[root@localhost nginx]# vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#下载nginx软件包
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
#指定工作目录
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定httphehttpd端口
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf
#添加宿主中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
[root@localhost nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

执行脚本生成镜像

[root@localhost nginx]# docker build -t nginx:new .

开启容器

[root@localhost nginx]# docker run -d -P nginx:new

查是否允许

[root@localhost nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                                           NAMES
92ddc2ac4dd3        nginx:new           "/run.sh"                5 seconds ago       Up 3 seconds               0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   distracted_wright

在游览器查看容器中的nginx

docker容器中配置tomcat

mkdir tomcat
cd tomcat
[root@localhost tomcat]# vim Dockerfile
FROM centos:7
MAINTAINER tomcat image <zhangxue>
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat8
EXPOSE 8080
#CMD ["/usr/local/tomcat8/bin/catalina.sh","run"]
ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]

启动脚本

[root@localhost tomcat]# docker build -t tomcat:centos .

开启服务

[root@localhost tomcat]#docker run -d --name tomcat01 -p 1234:8080 tomcat:centos

查看端口

[root@localhost tomcat]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                                           NAMES
b52eeb75f64a        tomcat:centos       "/usr/local/tomcat8/…"   7 seconds ago       Up 5 seconds                0.0.0.0:1234->8080/tcp                          tomcat01

在游览器中查看端口是否开启tomcat

docker容器中配置mysql

配置脚本

[root@localhost mysql]# mkdir mysql
[root@localhost mysql]# cd mysql/
[root@localhost mysql]# vim Dockerfile
FROM centos:7
ADD mysql-5.7.17.tar.gz /opt/
ADD boost_1_59_0.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv boost_1_59_0 boost
RUN yum -y update
RUN yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++ make
RUN useradd -s /sbin/nologin mysql
WORKDIR /opt/mysql-5.7.17/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
RUN make && make install
RUN chown -R mysql.mysql /usr/local/mysql
ADD my.cnf /etc/
ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
RUN cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/
EXPOSE 3306
ADD run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/run.sh"]
[root@localhost mysql]# vim my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@localhost mysql]# vim run.sh
#!/bin/bash
/usr/local/mysql/bin/mysqld

启动脚本

[root@localhost mysql]# docker build -t mysql:centos .

进入mysql服务器

[root@localhost mysql]# docker exec -it f0e5fb4b2493 /bin/bash

设置远程连接

mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';mysql> flush privileges

开一台另终端192.168.136.81连接这台docker中的mysql
安装mysql客户端

[root@localhost tools]# yum install mariadb* -y

连接对方mysql

[root@localhost tools]# mysql -h 192.168.136.90 -u root -P 32768 -p

这里的32768是对面的mysql端口号

docker构建容器服务相关推荐

  1. 手把手教你用Spring Cloud和Docker构建微服务

    什么是Spring Cloud? Spring Cloud 是Pivotal提供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接 ...

  2. docker启动容器服务之后访问失败

    关于docker启动容器服务之后,宿主机访问失败(解决方法) 注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启 ...

  3. iis7 您无权使用所提供的凭据查看此目录或页面。_使用Spring Cloud和Docker构建微服务架构

    原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do作者:Alexander Lukyanc ...

  4. 【Centos】Docker停止容器服务后,磁盘I/O仍然迟迟不下降。(未解决)

    记录 前言 问题复现,故障演练 准备工作 dcim-local演练过程 系统日志message 结论 前言 安装了docker的服务器只运行了一个容器服务,停止容器服务后,磁盘I/O仍然迟迟不下降.对 ...

  5. pg安装部署linux_简简单单基于docker部署微服务网关

    ❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...

  6. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  7. 容器 服务:metrics-server 安装探索

    系列文章: 容器 & 服务:开篇,压力与资源 容器 & 服务:一个 Java 应用的 Docker 构建实战 容器 & 服务:Docker 应用的 Jenkins 构建 容器 ...

  8. 微服务开发及部署_简简单单基于docker部署微服务网关

    ❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...

  9. docker+open vswitch多宿主间容器互连构建tomcat服务

    1.本文介绍centos7下的docker容器互联及端口映射问题 环境介绍: docker1:192.168.1.230 docker2:192.168.1.231 a.两台宿主分别更改主机名dock ...

最新文章

  1. UI组件之AdapterView及其子类(四)Gallery画廊控件使用
  2. keepalived 服务器内存持续升高问题
  3. An internal error occurred while showing an internal error.
  4. 在SAP Hybris commerce Storefront里购物下单
  5. 北师大计算机试题五答案,北京师范大学计算机软件及理论2022考研招生分析、参考书、真题等复习指导解析...
  6. python专业方向 | 文本相似度计算
  7. XSS漏洞(跨站脚本)
  8. Web之CSS开发技巧: CSS @media
  9. 水起泡器行业调研报告 - 市场现状分析与发展前景预测
  10. Xshell7连接VMware15虚拟机上的Ubuntu详细步骤
  11. unity3 学习localPosition, Position区别,itween插件,计算距离
  12. 计算机软硬件故障排除知识,计算机软硬件基础知识及常见故障排除方法
  13. 解决ASUS P5GC-MX/1333声卡驱动不能正常安装的问题
  14. 三步建立自己的电影网站 番外篇 (排除MacCMS10登录故障)
  15. C++中的setw()函数
  16. 硬核!深信服春招3面,终获20k入职offer!
  17. sp01事务码_修复了Server 2003 SP2上的“新事务无法在指定事务协调器中登记”
  18. 图像卷积的常见误区与个人思考
  19. 二叉树存储结构 mysql_为什么mysql索引选择b+树作为底层存储结构?
  20. level set 介绍4(水平集方法)

热门文章

  1. 全面拥抱HDR时机已到?
  2. C/C++学习之路: 继承
  3. 腾讯极客挑战赛邀你“码上种树”
  4. python 第三方库
  5. AVC sequence header AAC sequence header
  6. 判断目录是否存在并创建mkdir
  7. Nginx使用brotli代替gzip
  8. 想成为BAT中的一员,你总要去学点什么(二)
  9. leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)
  10. 【Java HashMap】常用函数的使用