cd /opt
mkdir sshd
cd sshd
vim Dockerfile
FROMcentos:7 #第一行必须指明基于的基础镜像
MAINTAINERthis is ssh image <sk> #作者信息
#镜像的操作指令
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo 'abc1234'| passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g'/etc/ssh/sshd_config #不使用PAM认证
RUN sed -ri '/^session\s+required\s+pam_loginuid.so/ s/^/#/'/etc/pam.d/sshd #取消pam限制
RUN ssh-keygen -t rsa -A #生成密钥认证文件
RUN mkdir -p /root/.ssh && chown root:root /root && chmod 700/root/.ssh
EXPOSE22CMD["/usr/sbin/sshd","-D"]
生成镜像
docker build -t sshd:centos .
启动容器并修改root密码
docker run -d -Psshd:centos
docker ps -a
ssh localhost -p 49154
docker build -t systemd:centos . 生成镜像
docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/init & #启动容器,并挂载宿主机目录挂载到容器中,和进行初始化
#--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
docker ps -a
docker exec -it a0d624d2bfa9 bash 进入容器
systemctl status sshd
方法二:
docker run -d -P--privileged sshd:centos /usr/sbin/init &
Dockerfile构建nginx镜像
mkdir /opt/nginx
cd /opt/nginx/
cp /opt/nginx-1.12.0.tar.gz /opt/nginx
vim Dockerfile
#基于基础镜像
FROMcentos:7
#用户信息
MAINTAINERthis is nginx image <sk>
#添加环境包
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 /opt/
#指定工作目录
WORKDIR/opt/nginx-1.12.0RUN./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENVPATH/usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE80EXPOSE443
#关闭 nginx 在后台运行
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755/run.sh
CMD["/usr/local/nginx/sbin/nginx"]
或
CMD["/run.sh"]
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
创建新镜像
docker build -t nginx:centos .
docker run -d -Pnginx:centos
查看镜像启动是否成功
docker ps -a
7b5d8ca329b6 nginx:centos "/usr/local/nginx/sb…"4 seconds ago Up 2 seconds 0.0.0.0:49156->80/tcp,:::49156->80/tcp,0.0.0.0:49155->443/tcp,:::49155->443/tcp nervous_bohr
http://192.168.154.80:49156
mkdir /opt/mysqld
cd /opt/mysqld
vim Dockerfile
FROMcentos:7MAINTAINERthis is mysql image <wl>RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
RUN useradd -M-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 && make install
RUN chown -Rmysql:mysql /usr/local/mysql/RUN rm -rf /etc/my.cnf
ADD my.cnf /etc/RUN chown mysql:mysql /etc/my.cnf
ENVPATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATHWORKDIR/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/EXPOSE3306ADD run.sh /usr/local/src
RUN chmod 755/usr/local/src/run.sh
RUN sh /usr/local/src/run.sh
#CMD["/usr/sbin/init"]
vim my.cnf
[client]
port =3306default-character-set=utf8
socket =/usr/local/mysql/mysql.sock
[mysql]
port =3306default-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
vim run.sh
#!/bin/bash
/usr/local/mysql/bin/mysqld
systemctl enable mysqld
创建新镜像
docker build -t mysql:centos .
启动容器,并进行初始化
docker run --name=mysql_server -d -P--privileged mysql:centos /usr/sbin/init &
进容器给权限
docker ps -a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
f9a4d8f6c65f mysql:centos "/usr/sbin/init"17 seconds ago Up 16 seconds 0.0.0.0:49153->3306/tcp mysql_server
进入容器,授权远程连接 mysql
docker exec -it f9a4d8f6c65f /bin/bash
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';
flush privileges;