Docker | docker-compose 笔记记录
[TOC]
一、docker 常用命令:
-
docker镜像相关命令
# 查看所有镜像 docker images # 根据名查看镜像,例如: docker images tomcat # 删除镜像 docker rmi [镜像名]或[镜像id] # 删除所有镜像,根据id删除 docker rmi $(docker images -aq)
-
docker容器相关命令
# 查看运行的容器 docker ps # 查看所有的容器 docker ps -a # 删除容器 docker rm [-f](强制删除,删除运行的容器需要-f) [容器名]或[容器id] # 删除所有容器 docker rm -f $(docker ps -aq) # 根据镜像id/名称启动一个容器 docker run [-i] [-t] -[d] [--name(指定容器的名称,例如:--name mytomcat)] [-p](指定端口,例如:8080:8080,宿主的8080映射容器的8080端口) [-v(目录挂载,宿主目录:容器目录),例如:-v /usr/local:/usr/data] 镜像名/镜像id [/bin/bash] # 启动容器 docker start 容器名字/容器id # 重启容器 docker restart 容器名字/容器id # 停止容器 docker stop 容器名字/容器id
-
查看容器信息
[root@localhost tiger-test]# docker inspect --help Usage: docker inspect [OPTIONS] NAME|ID [NAME|ID...] Return low-level information on Docker objects Options: -f, --format string Format the output using the given Go template -s, --size Display total file sizes if the type is container --type string Return JSON for specified type # docker inspect 返回的是 JSON 格式的信息,如果您想获取其中指定的一项内容,可以通过 -f 来指定,如获取镜像大小: # 查看tomcat容器信息 docker ps inspect tomcat/容器id # 根据当前的容器生成新的镜像 docker commit -a="author"(作者) -m="描述" my-tomcat:1.0(容器id/容器名 新镜像的名字和标签)
-
查看容器日志
docker logs -t -f [--tail 100(查看最后100日志)]
二、编写Dockerfile文件
-
Dockerfile 构建tomcat,java1.8 的镜像文件
-
编写Dockerfile文件
# 制作tomcat镜像 FROM centos MAINTAINER nzg<957608954@qq.com> # 把java和tomcat添加到容器中 ADD ./apache-tomcat-7.0.105.tar.gz /usr/local/ ADD ./jdk-8u251-linux-x64.tar.gz /usr/local/ # 安装vim编辑器 # RUN yum -y install vim # 设置工作访问是的目录,WORKIR,登录落脚点 ENV MYPATH /usr/local WORKDIR $MYPATH # 匿名挂载卷,例如:把容器中的 /local/apache-tomcat-7.0.105/webapps 目录挂载到本机的/var/lib/docker/volumes/*** VOLUME /local/apache-tomcat-7.0.105/webapps # 配置java和tomcat环境变量 ENV JAVA_HOME /usr/local/jdk1.8.0_251 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.105 ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.105 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 容器运行是监听的端口 EXPOSE 8080 # 启动时运行tomcat CMD /usr/local/apache-tomcat-7.0.105/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.105/logs/catalina.out
-
执行
build
命令,生成镜像# 到Dockerfile的目录,执行docker build 命令 docker build -t tomcat:1.0 .
命令说明:
-t :镜像的名称:标签
. :当前目录
-
启动容器
docker run -it --network host --name shunlu-app -v /home/shunlu/:/usr/local/apache-tomcat-7.0.105/webapps/ -v /etc/resolv.conf:/etc/resolv.conf:ro -v /etc/localtime:/etc/localtime:ro --privileged=true -p 8080:8080 48b3b86285c1
-
三、镜像搜索和下载
-
搜索
docker search 镜像名称
-
镜像拉取
docker pull 镜像名称:版本号
四、镜像推送push
未完待续...
五、Docker 安装mysql5.7
- 启动命令
docker run --name mysql-5.7 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:5.7.32
六、docker-compose
参考
-
常用指令
下面介绍一些在使用 Docker Compose 时常用的命令。 1) docker-compose up 用于部署一个 Compose 应用。 默认情况下该命令会读取名为 docker-compose.yml 或 docker-compose.yaml 的文件。 当然用户也可以使用 -f 指定其他文件名。通常情况下,会使用 -d 参数令应用在后台启动。 2) docker-compose stop 停止 Compose 应用相关的所有容器,但不会删除它们。 被停止的应用可以很容易地通过 docker-compose restart 命令重新启动。 3) docker-compose rm 用于删除已停止的 Compose 应用。 它会删除容器和网络,但是不会删除卷和镜像。 4) docker-compose restart 重启已停止的 Compose 应用。 如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。 5) docker-compose ps 用于列出 Compose 应用中的各个容器。 输出内容包括当前状态、容器运行的命令以及网络端口。 6) docker-compose down 停止并删除运行中的 Compose 应用。 它会删除容器和网络,但是不会删除卷和镜像。
-
docker-compose 部署jar包
创建docker-compose.yml 文件
version: "3" #版本号 services: my-springboot-service: #服务名称(不是容器名) image: ascdc/jdk8 #使用的镜像 ports: - 8089:8089 #暴露的端口信息和docker run -d -p 80:80 一样 restart: always #重启策略,能够使服务保持始终运行,生产环境推荐使用 container_name: my-springboot-demo #容器名称 #挂载文件ps:如果是挂载文件必须在容器中也指定名称,推荐是挂载文件夹,下面只是做个文件挂载的案例也可以 #挂载文件夹/root/compose_test/jdk/:/data volumes: - /etc/localtime:/etc/localtime # 指定容器时间为宿主机时间 - ./spring-demo-1.0.jar:/data/spring-demo-1.0.jar environment: - TZ=Asia/Shanghai #指定时区 上海 - LANG=en_US.UTF-8 #中文乱码 entrypoint: java -jar /data/spring-demo-1.0.jar #启动容器后执行的命令
-
-
extra_hosts:
-
添加主机名映射。类似 docker client --add-host。
extra_hosts: - "somehost:162.242.195.82" - "otherhost:50.31.209.229"
-
以上会在此服务的内部容器中 /etc/hosts 创建一个具有 ip 地址和主机名的映射关系:
162.242.195.82 somehost 50.31.209.229 otherhost
执行
docker-compose
命令
-