docker学习总结3 - 镜像、容器、网络、数据卷、compose、自制镜像

1、docker - 镜像命令

1.1 拉取镜像到本地(下载安装包)

docker pull 镜像名字
docker pull tomcat

1.2 删除镜像

docker rmi 镜像标识的前n位
如果该镜像启动过容器,不能直接删除
docker rmi 9

1.3 镜像的导入导出

导出:

docker save -o 绝对路径到文件名 镜像ID
docker save -o /opt/tomcat.image 904a98253fbf

导入:

docker load -i 要导入的镜像文件名
docker load -i tomcat.image

1.4 修改镜像名称

docker tag 镜像的标识 新名字:新版本号
docker tag 904 tomcat:9.0

2、docker - 容器命令

2.1 启动镜像,生成容器

docker run -d -p 8011:8080 --name first_tomcat tomcat:9.0

  • tomcat:9.0 要运行的镜像名字,一般写的是镜像id
  • -d daemon 的首字母,让进行后台运行,非交互式无界面的
  • -p 8011:8080 外网访问tomcat的本来是8080端口,我们将容器里的端口映射到了linux的8011端口,意思就是外网ip+8011就可以访问tomcat了,如果我们不做映射会怎么样,8080能访问到tomcat吗?
  • –name first_tomcat 给容器起了名字叫first_tomcat
  • -i input首字母,保持容器的标准输入
  • -t ternal 保持在终端输入,在前台运行的那种

2.2 查看容器

  • docker ps 查看运行的容器
  • docker ps -q 查看运行的容器标识
  • docker ps -a 查看所有容器
  • docker ps -aq 查看所有容器标识

2.3 查看容器日志

  • docker logs -f 容器标识

2.4 进入容器、退出

  • docker exec -it 容器标识 bash
  • exit

exec 执行的意思
-it 交互式运行
bash linux操作系统的默认界面shell

2.5 停止容器

  • docker stop 容器标识

2.6 启动容器

  • docker start 容器标识

2.7 重动容器

  • docker restart 容器标识

2.8 删除容器

  • docker rm 容器标识

运行状态的容器无法被删除,删除之前先停止容器

  • docker stop $(docker ps -qa)
  • docker rm $(docker ps -qa)

删除所有容器的id

2.9 复制文件

  • docker cp 文件路径及文件名 容器id:容器内部路径
  • docker cp XGYSytest12.war 70:/user/local/tomcat/webapps

3、docker - 网络命令

  • 查询所有网络:docker network ls
  • 删除网络:docker network rm 网络名grid

4、docker - 数据卷/数据映射

类似于共享文件夹,将宿主机的目录作为一个数据卷,映射到容器内部,可供容器使用。

  1. 创建数据卷:docker volume create v-tomcat
  2. 查看数据卷(v-tomcat)信息:docker volume inspect v-tomcat
  3. 查看全部数据卷:docker volume ls
  4. 删除数据卷:docker volume rm 数据卷名
  5. 数据卷的使用:

1、首先创建一个数据卷,然后用数据卷的名称映射到容器内部的路径,当你的数据卷不存在时,docker会自动创建

docker volume create 数据卷
docker run -d -p 80:8080 --name mytomcat -v v-tomcat:/user/local/tomcat/webapps 镜像id

只需要把项目包war放到这个目录v-tomcat的_data目录就可以了,容器就会自动获取

2、docker run -d -p 81:8080 --name tomcat001 -v /opt/volumes/v-tomcat03:/user/local/tomcat/webapps 镜像id

直接指定路径也会自动创建数据卷,最后面的路径不要加/

5、docker-compose 常用命令

5.1 常用命令

官方的开源项目,主要docker容器集群的快速编排,主要是用来批量执行docker run命令

  • docker-compose up -d 【执行yml文件,创建并启动容器】
  • docker-compose down 【关闭并删除容器】
  • docker-compose stop 【关闭】
  • docker-compose start 【启动】
  • docker-compose restart 【重新启动】
  • docker-compose logs -f 【查看日志】

5.2 常用场景

场景1:用docker-compose 管理 mysql 和 tomcat 容器
  1. 编写 docker-compose.yml 文件
services:  # 一个文件可以管理多个服务/容器
  mysql:  # 一个服务的名称
    restart: always  # docker服务启动,容器自动启动 
    image: daocloud.io/library/mysql:5.7.7  # 镜像名称
    container_name: mysql-compose-001  # 容器名称
    ports:  # 端口号,一个容器可以暴露出多个端口号
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 123456  # 数据库root账号密码
      TZ: Asia/Shanghai  # 数据库采用的时区
    volumes: 
      - /opt/xs/volumes/mysql: /var/lib/mysql  # 数据卷
services:
  mysql:
    restart: always
    image: daocloud.io/library/mysql:5.7.7
    container_name: mysql-compose-001
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    volumes:
      - /opt/xs/volumes/mysql:/var/lib/mysql
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.0.45
    container_name: tomcat-compose-001
    ports:
      - 8080:8080
    environment:
      TZ: Asia/shanghai
    volumes:
      - /opt/xs/volumes/webapps:/usr/local/tomcat/webapps
      - /opt/xs/volumes/tomcat/logs:/usr/local/tomcat/logs
  1. 查看已经启动的容器是否占用文件里的端口号
  2. 上传 yml 文件到 /opt/xs/ 目录下
  3. 执行compose命令:docker-compose up -d
场景2:用 docker-compose.yml 管理 Dockerfile 生成镜像并启动
  1. 准备一个 xxx.war 项目文件
  2. 在本地创建一个文件 Dockerfile
  3. 本地创建 docker-compose.yml 【定义了如何启动 Dockfile】
services:
  xs:
    restart: always
    build:
      context: ./
      dockerfile: Dockerfile
    image: xs:1.0
    container_name: xs-tomcat
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai
services:
  xs:  # 起个名,这个自定义,只要把war文件、Dockerfile、docker-compose.yml  放到一个目录下就行
    restart: always
    build:  # 指定运行 dockerfile文件
      context: ./   # 指定 dockfile 路径
      dockerfile: Dockerfile  # 指定 dockerfile 的名字
    image: xs:1.0  # dockfile 是用来自制镜像的,所以必须指定镜像名字
    container_name: xs-tomcat  # 会启动一个容器,容器名字是 xs-tomcat
    ports: 
      - 8081:8080   # 容器的端口映射到linux的8081
    environment:
      TZ: Asia/Shanghai  # 环境配置是伤害时间
  1. 将以上3个文件放到 /opt/xs2目录下,执行 docker-compose up -d
  2. 注意:

不想重新创建镜像,执行:docker-compose up -d
想重新创建新镜像,执行:docker-compose up -d --build

6、docker - 自制镜像

6.1 制作这个镜像:在原有的tomcat镜像下增加一个war包

  1. 在本地创建一个文件 Dockerfile
from daocloud.io/library/tomcat:8.5.16-jre8-alpine
copy xxx.war /user/local/tomcat/webapps

from 后面是从网站上找的环境,
copy 后面是开发给的包

  1. 根目录下创建了docker_demo文件夹,并将xxx.war、Dockerfile上传到目录下
  2. docker_demo目录下执行 Dockerfile 文件:docker build -t tomcat_001:1.0 .

当前目录下,注意命令最后的点,当前目录下制作了镜像tomcat_001,并且是1.0的版本

6.2 镜像在工作中的使用场景一

  1. 开发创建 Dockerfile ,并且自定义镜像信息

from 指定当前自定义镜像依赖的环境
copy 把一些文件复制到镜像中
workdir 镜像工作目录
cmd 在workdir下要执行的命令

  1. 查看镜像是否创建成功:docker images
  2. 开发把镜像导出给测试、运维:docker save -o 导出的路径和命名 镜像id
  3. 测试把开发给的镜像导入测试服务器中:docker load -i 文件名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值