共享存储容器创建
cd ~
mkdir sqlfile
mkdir webapps
rm -r jenkins_home
mkdir jenkins_home
groupadd -g 1000 jenkins
useradd -u 1000 -g jenkins jenkins
chown -R 1000:1000 webapps
chown -R 1000:1000 jenkins_home
docker rm shrVol
docker create --name shrVol -v /root/webapps:/usr/local/tomcat/webapps \
-v /root/sqlfile:/usr/local/sqlfile \
-v /root/jenkins_home:/var/jenkins_home \
busybox
- 为了方便在各容器间共享文件,我们在这里专门创建了一个共享容器。
- 在以上shell命令中,在宿主机的home目录下,分别创建用于共享的sqlfile、webapps、jenkins_home等三个子目录,用来存放SQL脚本、Tomcat工作目录、Jenkins工作目录。
- 由于Jenkins的Docker镜像默认用户和用户组的id和名称均为1000和jenkins,为接下来的Jenkins容器里的默认账户可以完全控制webapps、jenkins_home两个目录,在宿主机上创建了相应的用户和用户组。
- 接着创建名为shrVol的共享存储Docker容器并将要共享的目录映射到其上。
Jenkins容器创建
docker stop jenkins
docker rm jenkins
docker run -d --name jenkins -p 8080:8080 --volumes-from shrVol jenkins/jenkins
cat jenkins_home/secrets/initialAdminPassword
- 创建名为jenkins的Docker容器并立即动行,将宿主机的8080端口映射到容器的8080端口并挂载存储容器shrVol。
- cat命令用于获取Jenkins首次启动后的初始密码。
MySQL容器创建
docker stop mysql
docker rm mysql
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --volumes-from shrVol mysql
- 这里要注意的是,初次启动时,记得用 -e 参数给容器加上MYSQL_ROOT_PASSWORD这个说明root账号初始密码的环境变量
vi /sqldfiles/my.cnf
default_authentication_plugin=mysql_native_password
docker exec -it mysql bash
cp /usr/local/sqlfile/my.cnf /etc/mysql/
exit
- 编辑my.cnf文件,将第二行从上文中复制出来,拷入其中,更改默认的身份认证插件。
- 通过docker的 exec 命令进入容器的bash终端,将共享容器中编辑好my.cnf文件复制到/etc/mysql/目录下,然后退出。
update user set plugin='mysql_native_password';
- 或者直接进入到数据库中,修改plugin参数为mysql_native_password,并且可以用例如source /usr/local/sqlfile/bak.sql命令,在选定当前数据库后从名为bak.sql的备份文件中恢复数据库。
docker restart mysql
Tomcat容器创建
docker stop tomcat
docker rm tomcat
docker run -d --name tomcat -p 8888:8080 --volumes-from shrVol tomcat
- -d 参数的意思是不将名为tomcat的容器的进程捆绑到当前终端。