docker 基本使用

docker安装

在这里就跳过了

容器的基本命令

下载一个centos镜像

docker pull   centos

启动容器

docker run   [可选]   image

--name=" name"   容器名字  用来区分容器

-d                          后台方式运行

-it                          使用交互运行 进入容器查看内容

-p                          使用容器的端口  -p   8080::8080

                             -p 主机端口:容器短空

                             -p  容器端口
-P                         随机指定端口

查看镜像

docker images

当前运行的容器

docker ps  
docker ps -a   当前以及历史运行过的容器

-n=?               显示最近的一个容器

-q                   只显示容器的编号

删除容器

docker rm  容器id

docker rm -f $(docker ps -aq)   删除所有的容器

 退出容器

exit   退出停止容器
ctrl  + P  + q   容器不停止退了

 启动和停止容器的操作

docker start   容器id                            启动容器

docker restart   容器id                         重启容器

docker stop  容器id                             停止当前的容器

docker kill  容器id                                强制停止当前的容器

docker container prune -f                    清空所有不使用的容器    

后台启动容器

docker run -d centos

# 问题docker ps 发现centos 停止了,

# 常见的坑, docker 容器使用后台运行, 就必须要有一个前台进行吗docker发现没有应用, 就会自动停止

 查看日志#

#docker logs

docker logs  -f  -t --tail    容器

-tf   显示日志

--tal  number 显示日志条数

 查看容器中的进程信息 ps

docker top  容器id

查看容器信息

docker inspect  容器id

进入到当前容器

方式1
docker exec -it  容器id   /bin/bash 
方式2
docker attach 容器id
docker attach  容器id 

两个不同
’docker exec  进入到容器后开启一个新的终端,可以在里面操作

docker attach 进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id: 容器内的路径   目的的主机路径

从主机拷贝文件到容器里面  

安装nacos

拉去

docker run -d -p 8848:8848  --env MODE=standalone --env PREFER_HOST_MODE=hostname  -v /mydata/nacos/init.d:/home/nacos/init.d -v /mydata/nacos/logs:/home/nacos/logs --name nacos -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=ip -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=dbname -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=pass nacos/nacos-server

直接安装不连接数据库

docker  run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
nacos/nacos-server:1.3.1

安装redis

docker run --restart=always -p 6379:6379 --name myredis -d redis:7.0.12  --requirepass ningzaichun
 

安装portainer

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer-ce
 

dockerFile 文件

dockerfile 是用来构建的docker镜像的文件, 

构建步骤

1. 编写有个dockerfile 文件

2. docker build 构建成为一个镜像

3. docker run  运行镜像

4. docker push s发布镜像 dockerhub  阿里云镜像

 执行命令

docker build -f dockerfilePath -t 镜像名字[: 版本号]

-f                                  代表 dockerfile 的文件路径

dockerfilePath             文件路径 

-t                                  代表镜像名字以及版本号

基础知识

1. 保留关键字(指令) 必须都是大写字母

2. 执行从上到下顺序执行

3. # 表示注释

4. 每一个指令都会创建提交一个新的镜像层

dockerfile  构建文件。定义了一切的步骤

dockerImages 通过dockerFIle构建生成的镜像,最终发布和运行的产品

docker 容器  : 容器就是镜像运行起来提供服务器

FROM      基础镜像,一切从这里开始构建

ENV         构建的时候设置环境变量!

RUN         镜像构建的时候需要运行的命令

COPY       类似ADD,将我们文件拷贝到镜像中

WORKDIR 镜像的工作目录

FROM 		#基础镜像,一切从这里开始构建
MAINTAINER	#镜像是谁写的,姓名+邮箱
RUN			#镜像构建时需要运行的命令
ADD			#步骤,tomcat镜像,这个tomcat压缩包;添加内容
WORKDIR		#镜像工作目录
VOLUME		#挂载的目录
EXPOSE		#暴露端口配置
CMD			#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		#当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY		#类似ADD,将我们的文件拷贝至镜像中
ENV			#构建的时候设置环境变量

自定义dockerfile

nginx

FROM nginx                                                                                # 依赖那个包
RUN mkdir workspace                                                                # 穿件文件
WORKDIR /workspace                                                               # 设置工作区域
COPY ./dist /workspace/dist                                                       # 复制 文件到dist下
COPY ./docker-compose/default.conf /etc/nginx/conf.d             # 复制nginx配置
EXPOSE 80                                                                                # 暴露的端口

 修改容器镜像源

echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories

FROM nginx                                                                                # 依赖那个包
RUN mkdir workspace                                                                # 穿件文件

RUN  echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories

RUN apt-get update

RUN   apt-get   install vim                                                           # 安装vim


WORKDIR /workspace                                                               # 设置工作区域
COPY ./dist /workspace/dist                                                       # 复制 文件到dist下
COPY ./docker-compose/default.conf /etc/nginx/conf.d             # 复制nginx配置
EXPOSE 80         

项目实践

前端pc 部署

DockerFile

FROM nginx 
RUN mkdir /workspace
WORKDIR /workspace
COPY ./dist /workspace/dist
COPY ./front.conf /etc/nginx/conf.d
EXPOSE 80

front.conf

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /workspace/dist;
        index  index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html; 
    }
}

dist为前端项目自备

node部署


DockerFile 

FROM node:17
WORKDIR /workspace/dist
COPY ./dist /workspace/dist
RUN  yarn config set registry https://registry.npm.taobao.org \
    && npm config set registry https://registry.npm.taobao.org \
    && yarn global add pm2  \
    &&  yarn


EXPOSE 80

CMD [ "yarn", "start" ]


dist为nodejs项目自备

 docker-compose 

安装包以及安装安装教程

基本认识

Docker-compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)1。

yml文件部分解释

version 版本号

servcies  配置服务

nginx-front: 服务名称

build  在构建时应用的配置项。一般直接指定Dockerfile所在文件夹路径,可以是绝对路径,或者相对于Compose配置文件的路径。可以指定为包含构建上下文(context)路径的字符串。

build  /  content   context指定上下文路径,使用dockerfile基于上下文路径指定Dockerfile文件,使用args指定构建参数

build  /  dockerfile  指定Dockerfile文件。Compose会使用指定的Dockerfile文件构建镜像,但必须要指定构建上下文路径

container_name  指定自定义容器的名称

deploy 配置项中包含endpoint_mode、labels、mode、placement、replicas、resources、restart_policy、update_config等子配置项

deploy / resources 配置资源限制 , 例如cpu  内存使用 

deploy / resources /  limits   用于限制该服务可以使用CPU和内存的上限:

deploy / resources /  limits / cups   表示该服务可以使用的CPU上限为多少个CPU核心。

deploy / resources /  limits / memory  表示该服务可以使用的内存上限为多少M。

deploy / resources /  reservations用于预留该服务可以使用CPU和内存的下限:

deploy / resources /  limits / cups   表示该服务至少可以使用多少个CPU核心。

deploy / resources /  limits / memory  表示该服务至少可以使用多少M的内存。

hostname 设置容器的主机名 

volumes:定义了两个卷的挂载

ports:将容器的8087端口映射到主机的端口。

注意: 

同时指定了buildimage  Compose会在./dir目录下构建一个名为webapp,标签为tag的镜像。

version: '2'
services:
  nginx-front:
    platform: linux/amd64
    container_name: hospital-front
    image: nginx-front:tag
    container_name: my-container
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8020:81
    hostname: front-system-service
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

如果docker-compose文件是docker-compose.yml 使用下面这个启动

docker-compose up -d

如果docker-compose文件不是docker-compose.yml 使用下面这个启动

docker-compose -f docker-compose-test.yml up -d --build

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值