docker入门命令以及坑点 Tomcat Redis MySQL
docker笔记
1、基本命令
- 查看本地镜像: docker images
- 搜索镜像: docker search centos
- 搜索镜像并过滤是官方的: docker search --filter "is-official=true" centos
- 搜索镜像并过滤大于多少颗星星的: docker search --filter stars=10 centos
- 下载centos7镜像: docker pull centos:7
- 修改本地镜像名字(小写): docker tag centos:7 mycentos:1
- 本地镜像的删除: docker rmi centos:7
- 查看正在运行的容器:docker ps
- 查看所有的容器:docker ps -a
- 运行容器:docker run -itd centos:7
- 重启容器:docker restart ID
- 运行容器并命名:docker run -itd --name=xxx centos:7
- 停止容器:docker stop ID或命名
- 删除容器(需先停止容器):docker rm ID或命名
- 强制删除容器:docker rm -f ID或命名
- 查看容器详细信息:docker inspect ID或命名
- 进入容器:docker exec -it ID或命名 /bin/bash(解释器)
- 退出容器:exit
- 停止正在运行的所有容器:docker stop $(docker ps -a -q)
- 启动所有容器:docker start $(docker ps -a -q)
- 复制文件到容器里:docker cp (最好是绝对路径) ID或命名:(目标路径) => docker cp /root/123.txt ID或命名:/home/
- 从容器复制到宿主机:docker cp ID或命名:(目标路径) (最好是绝对路径) => docker cp ID或命名:/home/123.txt /root/
2、commit构建镜像
-
安装ifconfig的包:yum install -y net-tools
-
commit镜像:docker commit -a "ximen" -m "123" a5b2277d98f6 mycentos:v1
(docker commit -a "作者" -m "描述相关信息" ID 命名版本号)
3、Dockerfile构建镜像
编辑Dockerfile
- # this is a dockerfile注释声明这是一个dockerfile文件
- FROM 基于什么镜像进行构建
- MAINTAINER 作者 邮箱
- RUN 执行一条命令
- WORKDIR 设置工作路径
- COPY 相对路径 目标路径
# this is a dockerfile
FROM centos:7
MAINTAINER ximen 123@qq.com
RUN echo "正在构建镜像!!!"
WORKDIR /home/ximen
COPY 123.txt /home/ximen
RUN yum install -y net-tools
-
执行dockerfile命令:docker build -t mycentos:v2 .
(docker build -t 命名:版本号 .是当前目录下的dockerfile文件)
4、配置Java网站环境
一、配置jdk
-
解压jdk压缩包:tar -xf jdk-8u161-linux-x64.tar.gz
-
文件夹移动并改名为jdk:mv jdk1.8.0_161 /usr/local/jdk
-
编辑环境变量:vi /etc/profile
export JAVA_HOME=/usr/local/jdk export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
-
更新环境变量文件:source /etc/profile
二、启动Tomcat
- 解压Tomcat:tar -xf apache-tomcat-9.0.41.tar.gz
- 文件夹移动并改名为tomcat:mv apache-tomcat-9.0.41 /usr/local/tomcat
- Tomcat:/usr/local/tomcat/bin/catalina.sh run
- 查看Tomcat启动:ps -ef | grep tomcat
三、查看关闭防火墙
- 查看防火墙:firewall-cmd --state
- 关闭防火墙:systemctl stop firewalld.service
四、dockerfile
FROM centos:7
ADD jdk-8u161-linux-x64.tar.gz /usr/local/jdk /usr/local
RUN mv /usr/local/local/jdk1.8.0_161 /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:$PATH
ADD apache-tomcat-9.0.41.tar.gz /usr/local
RUN mv apache-tomcat-9.0.41 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
5、启动环境容器
- 普通运行:docker run -itd --privileged -p 8989:8080 mycentos:v2 init
6、Nginx
- 添加Nginx到yum源:rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 安装Nginx:yum install -y nginx
- 正常启动Nginx:systemctl start ngnix.service
- 前台启动Nginx:/usr/sbin/nginx -g "daemon off;"
- 运行容器:docker run -itd --privileged -p 80:80 mycentos:v3 init
- 关闭防火墙:systemctl stop firewalld.service
dockerfile
FROM centos:7
RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
EXPOSE 80
7、Redis
- redis是c语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境
- 进入/usr/local目录下
- 安装gcc-c++:yum install gcc-c++
- 要使用wget下载redis压缩包,就先安装wget:yum install wget
- 使用wget下载redis压缩包:wget http://download.redis.io/releases/redis-4.0.9.tar.gz
- 解压redis压缩包:tar -xf redis-4.0.9.tar.gz
- 进到redis-4.0.9文件夹后执行命令编译:make
- 再执行安装命令:make PREFIX=/usr/local/redis install
- 复制redis.conf文件到
/usr/local/redis/bin
目录:cp ./redis.conf /usr/local/redis/bin/ - 编辑redis.conf配置文件:vi /usr/local/redis/bin/redis.conf
- 搜索protected-mode的位置::/protected-mode
- 按a进入编辑模式,把protected-mode的yes改成no
- 按esc退出编辑模式,再搜索bind的位置::/bind 127.0.0.1
- 按a进入编辑模式,在bind 127.0.0.1前加一个#号注释掉
- 按esc退出编辑模式,再输入:wq保存退出
- 启动redis:/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
- 运行容器:docker run -itd --privileged -p 6380:6379 mycentos:v4 init
- 关闭防火墙:systemctl stop firewalld.service
- 启动redis客户端:/usr/local/redis/bin/redis-cli -p 6380
- 通过ip链接redis,先查看ip:docker inspect ID
- IPAddress为ip地址
- 通过ip连接:/usr/local/redis/bin/redis-cli(宿主机redis地址) -h IP -p 6379(容器redis端口)
8、MySQL
- 拉取MySQL镜像:docker pull mysql:5.7
- 运行MySQL容器:docker run -itd --name some-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
- 设置编码:docker exec -it ID env LANG=C.UTF-8 /bin/bash
- 进入容器:docker exec -it ID /bin/bash
- 进入容器后可以查看字符编码:echo $LANG
- 登陆MySQL:mysql -uroot -proot