推荐阅读
Dockerfile
在容器内的主进程启动之前,先启动另一个程序,根据镜像中的文件和把镜像启动为容器时向容器传递的环境变量(有需要的话替换配置文件),由这个程序启动主进程。(exec)
FROM
指令是最重要的一个且必须为Dockerfile文件开篇的第一个非注释行,用于指定映像文件构建过程指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境,本机不存在此基准镜像则从Registey拉取。MAINTANIER
制作者的详细信息。已替换为LABLE
。COPY
用于从Docker主机复制文件至创建的新映像文件(build上下文中的路径,不能是父目录中的文件)。ADD
类似COPY,支持tar文件或者url路径WORKDIR
指定工作目录。VOLUME
创建挂载目录。EXPOSE
用于为容器打开指定要监听的端口以实现与外部通信。ENV
用于为镜像定义所需的环境变量,并可被文件中与其后的其它指令所调用。EVN key=value ${value}。 使用\
换行 。可被run -e命令替换。RUN
运行在build时,逐一运行,由于pid不为1,需注意命令格式。CMD
运行在run时,仅最后一个生效,会被run的参数覆盖。ENTRYPOINT
类似CMD,不会被run命令覆盖,仅最后一个生效。(相关链接:https://www.cnblogs.com/reachos/p/8609025.html)USER
指定用户名或PID。HEALTHCHECK
健康监测。ARG
指定build时的参数。
安装
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
sudo systemctl start docker
systemctl start docker & systemctl enable docker
运行镜像
docker pull registry.docker-cn.com/library/rabbitmq:3-mmanegement
docker images
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq image的id
docker ps
docker exec -it mysql5.7 /bash
退出:exit
容器镜像删除
1.停止所有的container,这样才能够删除其中的images:
docker stop (docker ps -a -q)
2.查看当前有些什么images
docker images
3.删除images,通过image的id来指定删除谁
docker rmi <image id>
想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi 3}")
要删除全部image的话
docker rmi $(docker images -q)
使用本地文件
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql.conf.d/mysqld.cnf:/home/mysqld.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql
替换配置文件
简略步骤如下:
docker cp 3c8d188f7fb48:/etc/mysql/mysql.conf.d/mysqld.cnf /home/
docker cp /home/mysqld.cnf 3c8d188f7fb48:/etc/mysql/mysql.conf.d/mysqld.cnf
docker reload 3c8d188f7fb48
限制对内存使用
docker run -e ES-JAVA-OPTS="-Xms 256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 image的id
发布jar包
#1、修改ip等环境配置后,导出jar包
mvn -DskipTests=true clean package
#2、新建Dockerfile文件,shop-manager-1.0-SNAPSHOT.jar为你自己项目的jar包名
FROM java:8
VOLUME /tmp
ADD shop-manager-1.0-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#3、将Dockerfile与jar包上传至服务器同一目录下,运行docker build命令
docker build -t shop-manager .
#4、编译成功后即可通过imange id运行
# 查看日志需增加文件路径映射 –v {宿主机目录}:{docker日志目录}
docker run -d -p 8080:8080 shop-manager