一、构建SSH镜像
[root@localhost ~]
[root@localhost ~]
[root@localhost sshd]
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/ssh_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]
'报错:'
[root@localhost sshd]
"docker build" requires exactly 1 argument.
See 'docker build --help'.
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
[root@localhost sshd]
"docker build" requires exactly 1 argument.
See 'docker build --help'.
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
'解决方法:'
最后面的点需要空格
[root@localhost sshd]
'报错:'
Step 8/11 : RUN sed -i '^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
---> Running in 893ec686acb7
sed: -e expression
The command '/bin/sh -c sed -i '^session\s\+required\s\+pam_loginuid.so/s/^/
'解决方法:'
“^”前面少了个“/”
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
'//启动容器并修改root密码'
[root@localhost sshd]
002755a9729502c8f91afc2e4a48d6988e23f9fa3a259ca25a48e82e7d7f25c4
'//可以查看随机端口号'
[root@localhost sshd]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
002755a97295 sshd:new "/usr/sbin/sshd -D" 4 seconds ago Up 4 seconds 0.0.0.0:32768->22/tcp modest_joliot
[root@localhost sshd]
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd new bcc84d67952d 36 seconds ago 481MB
centos 7 7e6257c9f8d8 3 months ago 203MB
[root@localhost sshd]
The authenticity of host '[localhost]:32768 ([::1]:32768)' can't be established.
RSA key fingerprint is SHA256:8hd9CfgMyZgeJn9nOVnPDudBczEhlVeqM38o8zchkQE.
RSA key fingerprint is MD5:bb:8a:a0:f6:04:73:7b:e3:3a:71:40:d4:79:f1:43:a1.
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@002755a97295 ~]
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 50 bytes 6570 (6.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36 bytes 5335 (5.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
二、构建systemctl镜像
[root@localhost ~]
[root@localhost ~]
[root@localhost systemctl]
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/systec/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
[root@localhost systemctl]
[root@localhost systemctl]
[root@localhost opt]
[root@localhost opt]
[2] 42792
[root@localhost opt]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b68b976a64b systemd:new "/usr/sbin/init" 4 seconds ago Up 3 seconds 22/tcp ecstatic_kilby
[root@localhost opt]
[root@2b68b976a64b /]
[root@2b68b976a64b share]
[root@2b68b976a64b share]
[root@2b68b976a64b share]
exit
[root@localhost opt]
[root@localhost share]
111.txt
三、构建Nginx镜像
[root@localhost ~]
[root@localhost ~]
[root@localhost nginx]
FROM centos:7
MAINTAINER this is nginx image <zhou>
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.15.9.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.15.9
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]
/usr/local/nginx/sbin/nginx
[root@localhost nginx]
[root@localhost nginx]
[root@localhost nginx]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
756629e7baef nginx:new "/run.sh" 11 seconds ago Up 10 seconds 0.0.0.0:32770->80/tcp, 0.0.0.0:32769->443/tcp tender_ramanujan
四、构建Tomcat镜像
[root@localhost ~]
[root@localhost ~]
将两个安装包放进该目录下
[root@localhost tomcat]
FROM centos:7
MAINTAINER this is tomcat image <zhou>
ADD jdk-8u201-linux-x64.rpm /root/tomcat/
WORKDIR /root/tomcat/
RUN rpm -ivh jdk-8u201-linux-x64.rpm
WORKDIR /usr/java/jdk1.8.0_201-amd64/
RUN echo -e 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64\nexport CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar\nexport PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
RUN source /etc/profile
ADD apache-tomcat-9.0.16.tar.gz /root/tomcat/
WORKDIR /root/tomcat/
RUN mv apache-tomcat-9.0.16 /usr/local/tomcat8
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]
[root@localhost tomcat]
[root@localhost tomcat]
五、构建Mysql镜像
[root@localhost ~]
[root@localhost ~]
[root@localhost mysql]
FROM centos:7
MAINTAINER this is mysql image <zhou>
RUN yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
make \
gcc \
gcc-c++
RUN useradd -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
WORKDIR /usr/local/src/mysql-5.7.20/
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=boost \
-DWITH_SYSTEMD=1 && make -j4 && make install
RUN chown -R mysql:mysql /usr/local/mysql/
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc
RUN chown mysql:mysql /etc/my.cnf
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/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
RUN echo -e "#!/bin/sh \nsystemctl enable mysqld" > /run.sh
RUN chmod 755 /run.sh
RUN sh /run.sh
CMD ["init"]
[root@localhost mysql]
[root@localhost mysql]
[root@localhost mysql]
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';
宿主机:mysql -h 20.0.0.21 -uroot -P 32768 -pabc123
六、私有仓库建立
[root@localhost ~]
[root@localhost ~]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
'//宿主机的/data/registry自动创建挂载容器中的/tmp/registry'
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
[root@localhost siyou]
'//更改标记为20.0.0.21:5000/nginx'
[root@localhost siyou]
[root@localhost siyou]
'//上传'
[root@localhost siyou]
'//获取私有仓库列表'
[root@localhost siyou]
'//显示上传成功'
{"repositories":["nginx"]}
'//测试私有仓库下载'
[root@localhost siyou]
[root@localhost siyou]
七、Docker 数据卷
docker pull centos:7
'//宿主机目录/var/www 挂载容器中的data1'
docker run -v /var/www/:/data1 --name web1 -it centos:7 /bin/bash
cd /data1/
touch test123
'//返回宿主机进行查看'
ls /var/www/
7.1 数据卷容器
///数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos:7 /bin/bash
//新容器挂载数据卷容器web100
docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash
7.2 端口映射
docker run -d -P httpd:centos
docker run -d -p 49280:80 httpd:centos
docker ps -a
7.3 容器互联(使用centos镜像)
'//创建并运行容器取名web1,端口号自动映射'
docker run -itd -P --name web11 centos:7 /bin/bash
'//创建并运行容器取名web2,链接到web1和其通信'
docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash
'进web2 容器 ping web1'
--link name:alias --link 容器名:别名
八、构建apache镜像
mkdir apache
cd apache/
vim Dockerfile
FROM centos:7
MAINTAINER this is apache image <zhou>
RUN yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
ADD apr-1.6.2.tar.gz /root/apache
ADD apr-util-1.6.0.tar.gz /root/apache
ADD httpd-2.4.29.tar.bz2 /root/apache
WORKDIR /root/apache
RUN mv apr-1.6.2 /root/apache/httpd-2.4.29/srclib/apr
RUN mv apr-util-1.6.0 /root/apache/httpd-2.4.29/srclib/apr-util
WORKDIR /root/apache/httpd-2.4.29/
RUN ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi && make -j3 && make install
RUN ln -s /usr/local/httpd/conf/httpd.conf /etc/
RUN ln -s /usr/local/httpd/bin/* /usr/local/bin/
WORKDIR /lib/systemd/system/
ADD httpd.service /lib/systemd/system/
RUN echo -e "#!/bin/sh \nsystemctl enable httpd" > /run.sh
RUN chmod 755 /run.sh
RUN sh /run.sh
EXPOSE 80
CMD ["init"]
[root@localhost apache]
[root@localhost apache]
'注:apache环境是 /uer/sbin/init'