ps -auxww
#a选项显示出所有运行进程的内容,而不仅仅是您的进程
#u选项显示出进程所归属的用户名字以及内存使用
#x选项显示出后台进程
#ww 选项表示为 ps(1) 把每个进程的整个命令行全部显示完,而不是由于命令行过长就把它从屏幕上截去。
环境:Centos 7.6(试过7.0版本,会有问题)
安装docker
yum install docker -y
docker版本的查看
docker --version
docker服务的管理
systemctl start docker #开启
systemctl stop docker #关闭
systemctl restart docker #重启
docker服务的开机启动
systemctl enable docker #开启开机自启动
systemctl disable docker #关闭开机自启动
查看已有镜像
docker images #查看镜像
搜索centos镜像
docker search centos7
docker pull docker.io/openshift/base-centos7
保存生成镜像文件,使用docker save命令
docker save docker.io/openshift/base-centos7 >/tmp/centos.tar
移除镜像,使用docker rmi进行移除
docker rmi docker.io/openshift/base-centos7 #移除镜像
6: 导入镜像自己的镜像
docker load < /tmp/centos.tar
docker tag 484 centos7:latest #导入后的docker镜像是没有名字的,需要重新命名
运行并进入容器
docker run -it xxxx(镜像名) /bin/bash
#不是Centos似乎不需要/bin/bash
以后台进程启动容器
docker run -d centos7
//作为后台启动后就会立即退出
让容器永久运行的条件
以后台进程启动容器,启动一个永久运行的程序
docker run -d centos7 /bin/bash -c 'while true;do echo hello;sleep 3;done'
#'while true;do echo hello;sleep 3;done'一个死循环的脚本,达到永久运行的目的
查看容器里的运行日志
docker logs CONTAINER ID
#docker ps可获得容器id
进入后台运行的容器
docker exec -it CONTAINER ID /bin/bash(启动centos时需要加ID后面的内容)
#进入该容器后即使退出程序仍然会继续运行
停止后台运行的容器
docker stop CONTAINER ID #停止容器
#docker kill CONTAINER ID #关闭该容器
docker rm CONTAINER ID #删除该容器
docker ps |awk '{print $1}'|grep -v CONTAINER #输出正在运行的CONTAINER ID
#awk 行处理
#$1 每行第一个字段
#grep -v 排除输出结果
批量操作运行的容器
docker ps |awk '{print $1}'|grep -v CONTAINER|while read line;do
docker xxxx $line
done
for line in `docker docker ps |awk '{print $1}'|grep -v CONTAINER`;do
docker xxxx $line
done
使用docker commit利用运行的容器来制作自定义镜像
返回宿主机,查看要制作镜像的id(不能通过docker images中的id构建,否则制作出来的和初始的镜像一样)
docker commit CONTAINER_ID(如9117cc06xxx) NAME(如docker_with_tomcat)
查看制作的镜像信息
docker inspect NAME
新建目录/docker/tomcat
需要文件
jdk要从官网下载好传到Centos上
install.sh脚本用来安装Java和tomcat
Dockerfile用于构建镜像
CentOS-Base.repo是本机/etc/yum.repos.d/CentOS-Base.repo文件复制过来的,为了防止yum源不能用
install.sh内容
yum install -y wget tar
cd /usr/local/src/
tar -zxvf jdk-8u201-linux-x64.tar.gz
mv jdk1.8.0_201 /usr/local/
#/usr/local/jdk1.8.0_201/bin/java -version
#配置java环境变量
echo 'JAVA_HOME=/usr/local/jdk1.8.0_201' >>/etc/profile
echo 'PATH=$PATH:$JAVA_HOME/bin' >>/etc/profile
echo 'CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH' >>/etc/profile
source /etc/profile
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.16/bin/apache-tomcat-9.0.16.tar.gz
tar -zxvf apache-tomcat-9.0.16.tar.gz
mkdir -p /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat9
Dockerfile
FROM docker.io/openshift/base-centos7 #已有镜像
MAINTAINER HengTian hengtian.online
COPY jdk-8u201-linux-x64.tar.gz /usr/local/src/jdk-8u201-linux-x64.tar.gz
COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
COPY install.sh /tmp/install.sh
RUN sh /tmp/install.sh; \rm -rf /usr/local/src/* #删除jdk的压缩包等
准备完毕后,在/docker/tomcat目录下运行命令
docker build -t my_tom . #注意.号
启动容器测试
docker run -d my_tom -c /bin/bash -c 'source /etc/profile;/usr/local/tomcat9/bin/catalina.sh run'
#source /etc/profile; 使环境变量生效,虽然之前的install.sh使用了该命令,但是没有效果...
#/usr/local/tomcat9/bin/catalina.sh run 使tomcat前台运行,以保证后台启动的镜像不会死亡
启动并测试