一、实现一个自定义的web容器服务
为方便管理,先创建一个mydocker文件夹
mkdir mydocker
拉取nginx镜像
sudo docker pull nginx
查看本地镜像列表,确认成功拉取nginx镜像
sudo docker images
创建容器
sudo docker run -it nginx /bin/bash
复制容器id后退出
将default.conf复制出来修改,再将原文件覆盖。监听的端口号从80改为了2020,Web默认目录,从/usr/share/nginx/html改为/mydocker
sudo docker cp [复制的容器ID]:/etc/nginx/conf.d/default.conf .
创建dockerfile和html文件
将dockerfile、html和defaut.conf文件放入预先创建的文件夹中,然后构建镜像
cd mydocker
sudo docker build -t myweb .
创建容器验证结果
sudo docker run --name my_web -p 2020:2020 -d myweb
访问浏览器
二、实现一个自定义的数据库容器服务
pull一个mysql镜像
sudo docker pull mysql
创建文件夹mysql
mkdir mysql
创建构建镜像所需的文件:
- dokerfile:
#dockerfile
FROM mysql:5.7
#不允许空密码登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
#root密码
ENV MYSQL_ROOT_PASSWORD=123456
maintainer lzs1345311153@qq.com
#将所需文件放到容器中
COPY setup.sh /mysql/setup.sh
COPY schema.sql /mysql/schema.sql
COPY privileges.sql /mysql/privileges.sql
#设置容器启动时执行的命令
CMD ["sh", "/mysql/setup.sh"]
- schema.sql:
-- 创建数据库
-- 设置数据库引擎和字符编码规则(UTF-8)
create database `docker_mysql` default character set utf8 collate utf8_general_ci;
use docker_mysql;
-- 建表
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest (
`id` varchar(255) NOT NULL,
`name` varchar(255) DEFAULT "",
`email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 插入数据
INSERT INTO mytest (`id`, `name`,`email`)
VALUES
(031702115,'lzs','1345311153@qq.com');
- setup.sh:
#setup.sh
set -e
#查看mysql服务的状态,方便调试,这条语句可以删除
echo `service mysql status`
echo '1.启动mysql....'
#启动mysql
service mysql start
sleep 3
echo `service mysql status`
echo '2.开始导入数据....'
#导入数据
mysql < /mysql/schema.sql
echo '3.导入数据完毕....'
sleep 3
echo `service mysql status`
#重新设置mysql密码
echo '4.开始修改密码....'
mysql < /mysql/privileges.sql
echo '5.修改密码完毕....'
#sleep 3
echo `service mysql status`
echo `mysql容器启动完毕,且数据导入成功`
tail -f /dev/null
- privileges.sql:
-- privileges.sql
use mysql;
select host, user from user;
-- 因为mysql版本是5.7,因此新建用户为如下命令:
create user lzs identified by '123456';
-- 将docker_mysql数据库的权限授权给创建的lzs用户,密码为123456:
grant all on docker_mysql.* to lzs@'%' identified by '123456' with grant option;
-- 这一条命令一定要有:
flush privileges;
创建镜像
sudo docker build -t mysql:lzs .
创建容器
sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:lzs
进入容器
首先查看容器
sudo docker ps
复制容器号,输入以下代码
sudo docker exec -it <刚刚复制的容器号> /bin/bash
root登录
mysql -u root -p
进入数据库docker_mysql,并利用source /mysql/schema.sql
进行建表,show tables;
查表
使用privileges.sql中创建的lzs用户进行登录:
mysql -u lzs -p
查询数据库docker_mysql中mytest表中的数据:
use docker_mysql
select * from mytest
对数据库docker_mysql中的表mytest插入一条数据:
insert into mytest values('031702116','rjx','1509405353@qq.com');
删除第一条数据
delete from mytest where name='lzs'