Docker三大核心概念及常用命令

Dokcer的三大核心概念

1、镜像(image)
简单理解:镜像是创建一个docker容器的基础、前提条件。就好比你安装一个软件需要一个安
装包一样,你要安装QQ就需要下载一个QQ的安装包;假如你需要构建一个mysql容器就需要一
个mysql的镜像。
2、容器(container)
简单理解:容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器
都是相互隔离、互不可见的。就好比你现在装了一个QQ的可执行文件QQ.exe,你可以去运(启
动、开始)它,也可以关闭(停止)它,也可以卸载(删除)它,当你把它卸载后,想要再次运行,
你就得再一次通过安装包去安装(通过镜像去构建容器)
3、仓库(repository)
简单理解:仓库就是存放一个个镜像的地方,下载镜像就是从仓库去下载。类似于maven中的中
央仓库一样。
一、Docker操作命令
# 下载镜像,不加版本号,默认下载最新版本的镜像
docker pull [镜像名]:[版本号]
# 列出所有镜像  列出指定[镜像名]:[版本号]的镜像
docker images
docker image ls [镜像名]:[版本号]
# 删除镜像 选项: -f  --->强制删除
docker rmi [选项][镜像名]:[版本号]


# 创建并启动容器
docker run [选项] [镜像名]:[版本号] [参数]
常用选项:
--name 给容器起一个名字
-p 映射端口    -p [宿主机端口]:[容器端口]
-v 映射数据卷
-d 后台运行容器
-it 进入容器
栗子:
docker run --name tomcat -p 8080:8080 -v /home/zsm/webapps:/usr/local/apache8.0/webapps/ -d [镜像名]:[版本号]
# 进入容器
docker exec -it [容器id] [参数]
选项:
-it 以交互式进入容器
参数通常指定终端 /bin/bash
栗子:
docker exec -it [容器id] /bin/bash
# 查看容器
docker ps   --->查看当前正在运行的容器
docker ps -a    --->查看当前有的所有容器
# 删除容器
docker rm [容器id]   ---> 删除指定[容器id]的容器
二、Dockerfile
什么是Dockerfile?
简单理解: 用来构建自定义镜像的一组指令的文件!

栗子: 构建一个ubuntu:18.04镜像的Dockerfile文件内容
# 基础镜像 ubuntu
FROM   ubuntu:18.04
# 复制jdk到容器/usr/local目录
COPY jdk-8u221-linux-x64.tar.gz  /usr/local/
#进入容器/usr/local目录
WORKDIR /usr/local/
# 解压jdk并删除jdk压缩包
RUN tar -zxf jdk-8u221-linux-x64.tar.gz && rm -rf jdk-8u221-linux-x64.tar.gz
# 配置环境变量
ENV  JAVA_HOME /usr/local/jdk1.8.0_221/
ENV  CLASSPATH ${JAVA_HOME}/lib;${JAVA_HOME}/jre/lib;
ENV  PATH $PATH: ${JAVA_HOME}/bin
# 复制 tomcat 安装包
ADD  apache-tomcat-9.0.26.tar.gz   /usr/local/
# 删除 tomcat压缩包
RUN  rm -rf apache-tomcat-9.0.26.tar.gz
# 运行run 容器的时候执行,启动tomcat
CMD ["/usr/local/apache-tomcat-9.0.26/bin/catalina.sh","run"]

# 注意: COPY、ADD等命令操作的文件必须和Dockerfile在同一个目录下或是在Dockerfile当前目录的子目录,不能是Dockerfile目录的外层目录!

# 通过Dockerfile自动构建镜像
docker build -t [构建的镜像名]:[版本号] -f [Dockerfile文件的目录]
# 注意: -f ./ 代表当前目录,若Dockerfile的名字默认为Dockerfile,也可以不叫Dockerfile,此时需要带上Dockerfile的名称.
# 假设Dockerfile的名字叫Dockerfile2
栗子: 
docker build -t build -t [构建的镜像名]:[版本号] -f ./Dockerfile

构建自定义镜像

三、Docker-compose
Docker-compose的作用:
可以一次性启动多个服务(容器),不用再通过docker run 的命令去一个一个的启动容器!
# 指定docker-compose的版本
version: '3'
# 要启动的服务
services:
  app-account:
    #  表示从dockerfile文件中构建镜像  build和image命令在一个服务中只能二选一
       build: ./account/
       # 容器名
       container_name: app-account
       # 如果容器崩了自动重启
       restart: always
       # 映射数据卷
       volumes:
        - /opt/java/tomcat/webapps:/usr/local/apache-tomcat-9.0.24/webapps
       # 映射端口号
       ports:
        - 8080:8080

  mysql: 
    #  从仓库下载镜像
    image: mysql:5.7.22
    restart: always
    container_name: mysql
    ports: 
      - '3308:3306'
    # 配置环境变量
    environment:
    # root用户的密码
      MYSQL_ROOT_PASSWORD: root
    # 创建一个mysql用户
      MYSQL_USER: mysql
    # mysql用户的密码为mysql
      MYSQL_PASSWORD: mysql
    # 创建一个test_db数据库
      MYSQL_DATABASE: test_db
    # 时区
      TZ: Asia/Shanghai
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    # 数据卷映射
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/log:/var/log/mysql
      - ./mysql/config:/etc/mysql

---------------------------------------------------------------------
命令行(在docker-compose.yml文件的目录下): docker-compose up -d
通过docker-compose.yml文件后台启动多个services服务(容器)

新手上路,以上纯属个人见解,欢迎理解更深刻的各位前辈指点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值