Docker 基础学习

Docker 基础学习

基础命令 docker desktop 中可以直接运行该软件就好了

# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop
  • 镜像

    docker image ls   # 已经存在的镜像
    # 或者
    docker images
    
    • 拉取镜像

      # 官方镜像
      docker image pull 镜像名称 
      # 注意版本号,如果没有版本号默认会拉取 lastest,可能报错,所以在镜像网站搜索的时候查看对应的版本
      
      # 或简写为 
      docker pull 镜像名称
      # 比如
      docker pull ubuntu
      docker pull ubuntu:16.04
      
      # 个人镜像
      docker pull 仓库名称/镜像名称
      docker pull xunmi/django
      
      # 第三方仓库拉去
      docker pull 第三方仓库地址/仓库名称/镜像名称
      docker pull hub.c.163.com/library/mysql:latest
      (默认仓库名为library,所有从官方获取镜像相当于`sudo docker image pull library/镜像名称`)
      
    • 删除镜像 docker desktop中可以通过按钮直接删除

      docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID
      docker image rm hello-world
      docker rmi 9e64176cd8a2
      
  • 容器 docker desktop中可以通过按钮完成创建容器

    docker run [可选参数] 镜像名 [向启动容器中传入的命令]
    
    • 参数

      • -p 指定宿主机与容器内的端口映射 -p 3306:3306 前面是宿主机,后面是容器
      • -d 后台运行
      • --name 指定容器名称
      • -v把宿主机的目录挂载到容器中 -p /home/mslsy/data /data 把宿主机的/home/mslsy/data路径挂载到容器内/data路径;如果是宿主机的绝对路径:将宿主机的路径与容器内的路径同步,可以理解为同一个路径,宿主集中修改,容器内立刻发生变化;
      • -i 控制台交互,通常与-t一期使用
      • -t 支持终端登录,分配一个伪终端 ,通常与-i一期使用
      • -e 设置容器内的环境变量
      • --link添加容器链接 --link mysql:mm是mysql容器的名称,也是当前容器访问mysql容器的域名
      • --network指定容器的网络 --network= 使用docker创建网络docker network create -d bridge my-net 使用内置bridge网络驱动程序创建网络
    • 查看容器

      # 查看当前所有正在运行的容器
      docker ps
      # 查看当前所有的容器
      docker ps -a
      # 使用过滤器(除了name外,常用的还可以指定id:id= 、所有停止的容器:status=exited,正在运行的容器:status=running 等)
      docker ps -f name=指定的名字
      # 显示2个上次创建的容器(2可以改变)
      docker ps -n 2
      # 显示最新创建的容器(包括所有状态)
      docker ps -l
      # 仅显示ip
      docker ps -q
       # 显示容器大小
      docker ps -s
      
    • 启动和关闭容器 docker desktop中可以通过按钮进行

      # 停止容器
      docker container stop 容器名或容器id
      # 或可简写为
      docker stop 容器名或容器id
      
      # 强制关闭容器
      docker container kill 容器名或容器id
      # 或可简写为
      docker kill 容器名或容器id
      
      # 启动容器
      docker container start 容器名或容器id
      # 或可简写为
      docker start 容器名或容器id
      
    • 终端交互模式进入容器

      docker exec -it 容器名称或ID 进入的目录
      
    • 删除容器

      docker rm -f 容器ID
      docker container prune   # 清理掉所有终止的容器
      
  • Dockerfile

    • Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
    • 全部指令都是大写
    # FROM 基础镜像源   必须是第一个
    FROM nginx:latest
    # MAINTAINER 维护者信息
    MAINTAINER weihuzhexinxi 
    
    # RUN 构建镜像时执行的命令
    RUN ["cd","/data"]
    RUN cd /data
    
    # ADD 复制宿主机的文件到容器  如果是压缩文件会加压,网络压缩文件除外
    ADD test /test
    
    # COPY 与ADD作用相同,但是只限于本地的文件,压缩文件不会解压
    COPY AAA /aaa
    
    # CMD  构建容器后调用的指令   及docker run创建容器之后执行的,同时docker run 后面的指令会覆盖CMD
    CMD ["/usr/bin/wc","--help"]
    CMD echo "test"
    
    # ENTRYPOINT   一个dockerfile中只有一个有效,当有多个时取最后一个,不会被docker run 后面的指令覆盖,当不是完整的指令时,会通过CMD传参
    ENTRYPOINT ["top", "-b"]
    CMD ["-c"]
    
    # LABEL   为镜像添加元信息
    LABEL version="1.0" description="这是一个Web服务器" by="IT笔录"
    
    # ENV  设置环境变量
    ENV myname TEST
    ENV myage=20
    
    # VOLUME:用于指定持久化目录
    
    # WORKDIR:工作目录,类似于cd命令  后面所有的RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行
    WORKDIR /data
    
    #EXPOSE 映射端口
    EXPOSE 80
    
    #USER  指定运行容器是的用户明或者UID
    
    • 构建镜像

      • Dockerfile必须在项目目录下
      • docker build -t 容器名称:tag .
    • 容器之间的网络通信

      • --link

        # 
        docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=password -d batnami/mysql:5.7.36
        # 
        docker run --name nginx_e --link mysql_1:mysql -d nginx:lastest
        
      • 共同的网络

        docker network create -d bridge my-net
        
        docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=password --network=my-net -d batnami/mysql:5.7.36
        
        docker run --name nginx_e --network=my-net -d nginx:lastest
        
  • Docker Compose

    • Compose 是用于定义和运行多容器 Docker 应用程序的工具。

    • docker-compose.yml 文件配置

      version: '3'
      services:
        web:
          build: .
          ports:
         - "5000:5000"
          volumes:
         - .:/code
          - logvolume01:/var/log
          links:
         - redis
        redis:
          image: redis
      volumes:
        logvolume01: {}
      
    • docker-compose up 运行整个应用

    • docker-compose 运行的容器之间是可以正常通信的

  • 几个常用的容器

mysql

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7.36

minio

docker run -p 9000:9000 --name minio_wsx -v D:\Docker\data\minio\data:/data -v D:\Docker\data\minio\config:/root/.minio minio/minio:13487-5f20027 server /data

redis

docker run -p 6379:6379 --name redis -e ALLOW_EMPTY_PASSWORD -d batnami/redis:6.0

Dockerfile 示例文件

# Base images 基础镜像
FROM ubuntu:16.0.4

#MAINTAINER 维护者信息
MAINTAINER mslsy

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值