您的位置:首页 > 运维架构 > Docker

Docker 实战

2021-01-12 20:50 686 查看

Docker入门

概述

  Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

  容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

注意事项

  • Linux内核版本必须大于:3.8.+
  • 查看内核版本:uname -r

FROM centos:7
ADD jdk-8u211-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$P
1044
ATH
ADD apache-tomcat-8.5.35.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]

启动容器
docker run -itd -p 80:8080 -v /root/test/ROOT:/usr/local/tomcat/webapps/ROOT mycentos:jdk /bin/bash
View Code

构建nginx

1、dockerfile
FROM centos:7
ADD nginx-1.18.0.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80

2、sheel脚本,vi nginx_install.sh
#!/bin/bash
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/nginx-1.18.0
./configure --prefix=/usr/local/nginx && make && make install

3、构建dockerfile
docker build -t mycentos:nginx .

4、启动,-p 宿主port:容器port
# -p 映射端口
docker run -itd -p 80:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

5、进入容器
docker exec -it xxx /bin/bash

6、查看防火墙
firewall-cmd --state

7、停止防火墙
systemctl stop firewalld.service

8、禁止防火墙开机启动
systemctl disable firewalld.service

9、开启防火墙
systemctl start firewalld.service
注:如果访问不到,查看防火墙是否开启

构建Redis

1、编辑:vi redis_install.sh
#!/bin/bash
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /home/redis-4.0.11
make && make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf/
cp /home/redis-4.0.11/redis.conf /usr/local/redis/conf/
sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf
sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf

2、编写dockerfile
FROM centos:7
ADD redis-4.0.11.tar.gz /home
COPY redis_install.sh /home
RUN sh /home/redis_install.sh
ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

3、构建容器:
docker build -t mycentos:redis .

4、启动容器: #6380是宿主机端口,6379是容器的端口
docker run -itd -p 6380:6379 mycentos:redis

5、进入容器
docker exec -it xxx /bin/bash

6、测试redis
/usr/local/redis/bin/redis-cli

构建Mysql

方式一

1、docker 拉取mysql5.7
docker pull mysql:5.7

2、官网地址
https://hub.docker.com/

3、启动mysql
docker run --name some-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

4、进入容器
docker exec -it some-mysql env LANG=C.UTF-8 /bin/bash

5、进入mysql
mysql -uroot -proot

6、创库
create database `db_student`;

7、进入库
use db_student;

8、建表
drop table if exists `user`;
CREATE TABLE user (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id) ) engine=innodb charset=utf8;

9、插入几条记录
insert into user values('1','小明','15','初三','男');
insert into user values('2','小红','13','初二','女');

< 56c p>

方式二

1、编辑:init.sql
vi init.sql

create database `db_student`;
use db_student;
drop table if exists `user`;
CREATE TABLE user (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id) ) engine=innodb charset=utf8;
insert into user values('1','小明','15','初三','男');

2、编写dockerfile
vi dockerfile

FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ENV LANG=C.UTF-8
ADD init.sql .

3、构建镜像
docker build -t my-mysql:5.7 .

3、启动mysql
docker run --name some-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d my-mysql:5.7

4、进入容器
docker exec -it some-mysql env LANG=C.UTF-8 /bin/bash

5、进入mysql
mysql -uroot -proot

6、切换库
use db_student;

7、查看
select * from user;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: