本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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 - 数据卷/数据映射
类似于共享文件夹,将宿主机的目录作为一个数据卷,映射到容器内部,可供容器使用。
- 创建数据卷:docker volume create v-tomcat
- 查看数据卷(v-tomcat)信息:docker volume inspect v-tomcat
- 查看全部数据卷:docker volume ls
- 删除数据卷:docker volume rm 数据卷名
- 数据卷的使用:
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 容器
- 编写 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
- 查看已经启动的容器是否占用文件里的端口号
- 上传 yml 文件到 /opt/xs/ 目录下
- 执行compose命令:docker-compose up -d
场景2:用 docker-compose.yml 管理 Dockerfile 生成镜像并启动
- 准备一个 xxx.war 项目文件
- 在本地创建一个文件 Dockerfile
- 本地创建 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 # 环境配置是伤害时间
- 将以上3个文件放到 /opt/xs2目录下,执行 docker-compose up -d
- 注意:
不想重新创建镜像,执行:docker-compose up -d
想重新创建新镜像,执行:docker-compose up -d --build
6、docker - 自制镜像
6.1 制作这个镜像:在原有的tomcat镜像下增加一个war包
- 在本地创建一个文件 Dockerfile
from daocloud.io/library/tomcat:8.5.16-jre8-alpine
copy xxx.war /user/local/tomcat/webapps
from 后面是从网站上找的环境, copy 后面是开发给的包
- 根目录下创建了docker_demo文件夹,并将xxx.war、Dockerfile上传到目录下
- docker_demo目录下执行 Dockerfile 文件:docker build -t tomcat_001:1.0 .
当前目录下,注意命令最后的点,当前目录下制作了镜像tomcat_001,并且是1.0的版本
6.2 镜像在工作中的使用场景一
- 开发创建 Dockerfile ,并且自定义镜像信息
from 指定当前自定义镜像依赖的环境
copy 把一些文件复制到镜像中
workdir 镜像工作目录
cmd 在workdir下要执行的命令
- 查看镜像是否创建成功:docker images
- 开发把镜像导出给测试、运维:docker save -o 导出的路径和命名 镜像id
- 测试把开发给的镜像导入测试服务器中:docker load -i 文件名称