文章目录
SSH 镜像制作,基于centos7
FROM centos:7
MAINTAINER The CentOS Project <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"]
docker build -t sshd:new .
[root@docker2 sshd]# docker run -d -P sshd:new
e72e20b755122d7262ab1a325b67510ef14f0f4c131ee6a1a8a2927f5b4bd10f
[root@docker2 sshd]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e72e20b75512 sshd:new "/usr/sbin/sshd -D" About a minute ago Up About a minute 0.0.0.0:32768->22/tcp dreamy_shannon
6b0986fe816c c72147777f2f "/bin/sh -c 'mkdir -…" 5 minutes ago Exited (1) 5 minutes ago reverent_matsumoto
0380e69b7e6a c72147777f2f "/bin/sh -c 'mkdir -…" 6 minutes ago Exited (1) 6 minutes ago gracious_dirac
74503d20ebee 4c88249af86b "/bin/sh -c 'sed -i …" 13 minutes ago Exited (1) 13 minutes ago silly_knuth
6b0997223284 4c88249af86b "/bin/sh -c 'sed -i …" 24 minutes ago Exited (1) 24 minutes ago objective_lewin
d76dcceead5c httpd:centos "/run.sh" 2 hours ago Up 2 hours 80/tcp cranky_swanson
21db10af75fe centos:7 "/bin/bash" 17 hours ago Exited (137) 16 hours ago web22
075e9cdd940e centos:7 "/bin/bash" 17 hours ago Exited (137) 16 hours ago web11
27e80f59c57a httpd:centos "/run.sh" 18 hours ago Exited (137) 16 hours ago funny_torvalds
7fadd2e6a90b registry "/entrypoint.sh /etc…" 20 hours ago Exited (2) 16 hours ago trusting_dijkstra
3f917b9bae94 registry "/entrypoint.sh /bin…" 20 hours ago Created zen_wright
[root@docker2 sshd]# ssh localhost -p 32768
The authenticity of host '[localhost]:32768 ([::1]:32768)' can't be established.
RSA key fingerprint is SHA256:4rcSPQ9laAxUC52abNv9c6+6AvFHGk07ILa/gGvd4Jk.
RSA key fingerprint is MD5:c4:4e:89:94:2e:ee:da:27:84:ca:d3:55:c9:d0:09:5e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:32768' (RSA) to the list of known hosts.
[root@docker2 sshd]# ssh localhost -p 32768
The authenticity of host '[localhost]:32768 ([::1]:32768)' can't be established.
RSA key fingerprint is SHA256:4rcSPQ9laAxUC52abNv9c6+6AvFHGk07ILa/gGvd4Jk.
RSA key fingerprint is MD5:c4:4e:89:94:2e:ee:da:27:84:ca:d3:55:c9:d0:09:5e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:32768' (RSA) to the list of known hosts.
root@localhost's password:
[root@e72e20b75512 ~]# ls
anaconda-ks.cfg
[root@e72e20b75512 ~]#
systemctl 镜像制作,基于之前的sshd 镜像,兼容了SSHD功能
mkdir systemctl
cd systemctl
vim Dockerfile
FROM sshd:new
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-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/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
运行
docker build -t systemd:new .
docker run --privileged -ti -v/sys/fs/cgroup:/sys/fs/cgroup:ro systemd:new /sbin/init &
root@docker2 systemctl]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cb875bb739a systemd:new "/sbin/init" About a minute ago Up About a minute 22/tcp bold_curran
40a7f1e0f397 7553b62d30e1 "/bin/sh -c '(cd /li…" 3 minutes ago Exited (1) 3 minutes ago laughing_shamir
91b61dad37b1 7553b62d30e1 "/bin/sh -c '(cd /li…" 4 minutes ago Exited (1) 4 minutes ago suspicious_cohen
进入容器测试
[root@docker2 systemctl]# docker exec -it 1cb875bb739a /bin/bash
[root@1cb875bb739a /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:sshd(8)
man:sshd_config(5)
[root@1cb875bb739a /]# systemctl start sshd
[root@1cb875bb739a /]# systemctl start sshd
nginx镜像制作
Mkdir nginx
将软件放入此路径 nginx-1.12.2.tar.gz
[root@docker2 nginx]# ls
Dockerfile nginx-1.12.2.tar.gz run.sh
FROM centos:7
MAINTAINER this is nginx image <sha>
RUN yum -y update
RUN yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre
ADD nginx-1.12.2.tar.gz /usr/local/src
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src
WORKDIR nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
RUN make && make install
EVN 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"]
Vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
运行
[root@docker2 nginx]# docker build -t nginx:new .
.......................................
Successfully built 028d8d38e1e9
Successfully tagged nginx:new
[root@docker2 nginx]# docker run -d -P nginx:new
b07f23531ff90e34be0dd171fa173ca94d77c2ce44088e5bf0fca15e46c47712
[root@docker2 nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b07f23531ff9 nginx:new "/run.sh" 25 seconds ago Up 24 seconds 0.0.0.0:32778->80/tcp, 0.0.0.0:32777->443/tcp optimistic_rosalind
访问nginx网页测试
tomcat 镜像制作
----------------------------------------- TOMCAT---------------------------------------------
Mkdir tomcat
Cd tomcat
[root@docker2 tomcat]# ls
apache-tomcat-8.5.16.tar.gz Dockerfile jdk-8u91-linux-x64.tar.gz
将软件放入tomcat
[root@docker2 tomcat]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image <sha>
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 JRE_HOME /usr/local/java/jre
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ENV JAVA_BIN /usr/local/java/bin
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
#-------------------------------------------------------------------
#安装tomcat
#----------------------------------------------------------------
ADD apache-tomcat-8.5.16.tar.gz /usr/local
WORKDIR /usr/local
RUN mv apache-tomcat-8.5.16/ tomcat8
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]
运行
[root@docker2 tomcat]# docker build -t tomcat:centos .
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@docker2 tomcat]# systemctl start docker
[root@docker2 tomcat]# docker build -t tomcat:centos .
Sending build context to Docker daemon 190.8MB
Step 1/15 : FROM centos:7
---> 7e6257c9f8d8
Step 2/15 : MAINTAINER this is nginx image <sha>
---> Using cache
---> 47225f72c1c2
Step 3/15 : ADD jdk-8u91-linux-x64.tar.gz /usr/local
---> 32c21ae5c58a
Step 4/15 : WORKDIR /usr/local/
---> Running in fd7746b1a751
Removing intermediate container fd7746b1a751
---> c2d571c83882
Step 5/15 : RUN mv jdk1.8.0_91 /usr/local/java
---> Running in 7d02134eb1fa
Removing intermediate container 7d02134eb1fa
---> b9b071a7153c
Step 6/15 : ENV JAVA_HOME /usr/local/java
---> Running in 087cc602d35a
Removing intermediate container 087cc602d35a
---> 3b33dcb2ce70
Step 7/15 : ENV JRE_HOME /usr/local/java/jre
---> Running in 3a1a54770209
Removing intermediate container 3a1a54770209
---> 5b19098f60db
Step 8/15 : ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
---> Running in 1730f3edfee6
Removing intermediate container 1730f3edfee6
---> b558907c5bb0
Step 9/15 : ENV JAVA_BIN /usr/local/java/bin
---> Running in 9a7ab54b8f95
Removing intermediate container 9a7ab54b8f95
---> 7e7adf66beee
Step 10/15 : ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
---> Running in 6c15dc8c8652
Removing intermediate container 6c15dc8c8652
---> ab0137e9a5f4
Step 11/15 : ADD apache-tomcat-8.5.16.tar.gz /usr/local
---> c81c2eb9fdfc
Step 12/15 : WORKDIR /usr/local
---> Running in 373f876661d0
Removing intermediate container 373f876661d0
---> cc25fbefd417
Step 13/15 : RUN mv apache-tomcat-8.5.16/ tomcat8
---> Running in 75ad83beb9f2
Removing intermediate container 75ad83beb9f2
---> fea5d52982e2
Step 14/15 : EXPOSE 8080
---> Running in 1acdb6a9c466
Removing intermediate container 1acdb6a9c466
---> e4b6aa4ce21a
Step 15/15 : ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]
---> Running in 7e8e8e5537d7
Removing intermediate container 7e8e8e5537d7
---> 504fd26706f2
Successfully built 504fd26706f2
Successfully tagged tomcat:centos
运行容器
[root@docker2 tomcat]# docker run -d --name tomcat01 -p 1216:8080 tomcat:centos
73864673961f0f609b0876199b0f154949b3b094fb344cc0bd3f90ce5b4ca362
[root@docker2 tomcat]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73864673961f tomcat:centos "/usr/local/tomcat8/…" 8 seconds ago Up 7 seconds 0.0.0.0:1216->8080/tcp tomcat01
b07f23531ff9 nginx:new "/run.sh" 40 minutes ago Exited (137) 33 minutes ago optimistic_rosalind
访问TOMCAT 测试
创建mysql 5.6.3 镜像
mysql 5.6.3
Vim Dockerfile
FROM centos:7
MAINTAINER This is MySQL
#更新yum源安装软件包
RUN yum -y update
RUN cat /dev/null > /etc/my.cnf
RUN yum -y install gcc gcc-c++ make pcre-devel autoconf expat-devel perl ncurses ncurses-devel bison cmake
#解压mysql包
ADD mysql-5.6.36.tar.gz /opt/
#创建系统用户
RUN useradd -s /sbin/nologin mysql
#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.6.36
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
#make编译
RUN make && make install
#复制默认配置文件到/etc目录下
RUN cp -f support-files/my-default.cnf /etc/my.cnf
RUN mkdir -p /usr/local/mysql/
RUN chown -R mysql:mysql /usr/local/mysql/
#配置mysql环境变量
ENV PATH /usr/local/mysql/bin:$PATH
#初始化数据库
RUN /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
#暴露服务端口
EXPOSE 3306
#启动
RUN cp support-files/mysql.server /etc/init.d/mysqld
RUN chmod 755 /etc/init.d/mysqld
RUN sed -i '/^basedir=/s#basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld
RUN sed -i '/^datadir=/s#datadir=#basedir=/home/mysql#' /etc/init.d/mysqld
#建立软链接
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]
#容器创建
docker build -t centos7:mysql .
Removing intermediate container 08a20e03590a
---> 46d7f6ec43f2
Step 22/22 : ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]
---> Running in 6be7af17b235
Removing intermediate container 6be7af17b235
---> e126ff4dbf9e
Successfully built e126ff4dbf9e
Successfully tagged centos7:mysql
#容器运行
-d 守护进程 -P 随机指定端口映射
[root@docker2 mysql5.6.36]# docker run -d -P centos7:mysql
e8b46730823b51a9da55777f1d4a97158a15d4139f827a9e03abddc121abb555
[root@docker2 mysql5.6.36]#
进入容器mysql
[root@docker2 ~]# docker exec -it e8b46730823b bash
[root@e8b46730823b mysql-5.6.36]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql>
镜像 mysql 5.7.17 创建
FROM centos:7
MAINTAINER this is nginx image <shaa>
RUN yum -y update
RUN yum -y install gcc gcc-c++ make pcre-devel autoconf expat-devel perl ncurses ncurses-devel bison cmake
#创建系统用户
RUN useradd -s /sbin/nologin mysql
ADD mysql-5.7.17.tar.gz /usr/local/
ADD boost_1_59_0.tar.gz /usr/local/
WORKDIR /usr/local
RUN mv boost_1_59_0 boost
WORKDIR 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
#创建用户,设置/usr/local/mysql目录的权限
RUN chown -R mysql.mysql /usr/local/mysql
#编辑配置文件
#删除所有内容
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc/my.cnf
RUN chown mysql:mysql /etc/my.cnf
#设置环境变量
ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN echo 'export PATH' >> /etc/profile
RUN source /etc/profile
#初始化数据库
RUN /usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
RUN cp -p /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
#RUN chown mysql:mysql /usr/local/mysql/usr/lib/systemd/system/mysqld.service
#RUN /lib/systemd/system/mysqld.service start && \
#RUN systemctl start mysqld.service &&\
#mysql -e "grant all privileges on *.* to 'root'@'%'identified by '123456';"&& \
#mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"
#启动mysql
ADD run.sh /run.sh
RUN chmod 755 /run.sh
RUN chmod +x /run.sh
RUN sh /run.sh
CMD ["init"]
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 = 1
sql_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@docker2 mysql]# ls
boost_1_59_0.tar.gz Dockerfile my.cnf mysql-5.7.17.tar.gz run.sh
[root@docker2 mysql]#
vim run.sh
#!/bin/bash
systemctl enable mysqld
运行
[root@docker2 mysql]# docker build -t centos7:mysql5.7.1 .
Successfully built ae7f7b4c96af
Successfully tagged centos7:mysql5.7.1
运行容器
[root@docker2 mysql]# docker run -d -P centos7:mysql5.7.1
7c82b57c74390c92d0700b2bca39a3f3a26f4b4d1d6f52e1f11c0246a067fea1
[root@docker2 mysql]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c82b57c7439 centos7:mysql5.7.1 "init" 23 minutes ago Up 22 minutes
–pricileged 带权限登录,不降权登录
不加此参数会出现登录不进去mysql 现象
[root@docker2 mysql]# docker run -d --privileged=true -P centos7:mysql5.7.1
c6ec9c3effd1a95c8076160c6c054ed1ea3d1b070e8027c2329d09525f1121fd
[root@docker2 mysql]# docker exec -it c6ec9c3effd1 bash
[root@c6ec9c3effd1 mysql-5.7.17]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>
[root@c6ec9c3effd1 mysql-5.7.17]# systemctl stop mysqld.service
[root@c6ec9c3effd1 mysql-5.7.17]# systemctl start mysqld.service &
[1] 140
[root@c6ec9c3effd1 mysql-5.7.17]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
yum install memcache -y
测试 连接数据库
[root@c6ec9c3effd1 mysql-5.7.17]# mysqladmin -u root -p password 修改密码
Enter password:
New password:
Confirm new password:
测试宿主机登录
[root@docker2 mysql]# mysql -uroot -h192.168.100.11 -P32772 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
MySQL [(none)]>
MySQL [(none)]>
MySQL [(none)]>
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
MySQL [(none)]>
[root@c6ec9c3effd1 mysql-5.7.17]# systemctl stop mysqld
Job for mysqld.service canceled.
[1]+ Exit 1 systemctl start mysqld.service
[root@c6ec9c3effd1 mysql-5.7.17]# systemctl start mysqld&