docker学习1

1. docker的概念

Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。

docker是为了解决:

  • 1, 解决环境不一致问题
  • 2, 在多用户的操作系统下,会相互影响
  • 3, 解决用户量暴增,运维成本问题
  • 4, 学习一门新技术,技术环境成本过高

2. 安装docker

macOS 我们可以使用 Homebrew 来安装 Docker。

brew install --cask --appdir=/Applications docker

大约要输入两次密码(打开docker app图标还需要输入一次密码),
打开app后就可以从操作界面上看到操作docker的内容,也可以使用bash命令行来操作docker
;以下主要操作命令行来示范

由于国内网络问题, 所以是需要指定下载镜像的镜像源 如阿里的镜像源:

第1步 查看镜像源:

sudo docker info | grep Registry

第2步 修改镜像源:
点击setting图标,配置路径:Preferences -> Docker Engine。添加如下配置,上面是 docker 官方国内源,下方为中科大国内 docker 镜像源

{
  "features": {
    "buildkit": true
  },
  "experimental": false,
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

3. docker的基本操作

1. 查看docker版本

docker --version

2. 启动docker

1. 点击鲸鱼图标启动
2. 运行命令行启动
open /Applications/Docker.app

3. run命令 拉取并运行镜像成为一个容器

docker run hello-world 

4. docker的中央仓库(注册中心)

有其他用户上传的镜像集中地,分为几种:

  • 1 . docker官方镜像 ,在国外速度慢
  • 2 . 阿里云 网易蜂巢 daocloud
    (http://hub.daocloud.io/)
  • 3 . 公司会采用私服的方式拉去镜像(添加配置)
    需要在 /etc/docker/daemon.json下添加如下配置(若没有需要添加)
{
"registry-mirrors":["xxxx"],      #镜像加速的地址,增加后在 docker info中可查看。
"insecure-registries": ["ip: import"],       #配置docker的私库地址
}

并重启 两个服务, docker和daemon

4. 镜像操作

1. 拉取镜像到本地

docker pull 镜像名称[:tag]

实际操作 需要取镜像网站获得到镜像加速的地址,例如:daocloud.io/library/tomcat:8.0.21-jre7
实际命令为:

docker pull daocloud.io/library/tomcat:8.0.21-jre7

2. 查看全部本地镜像

docker images

3. 删除本地镜像 rm remove, i 代表镜像 , 唯一标识为区别于其他的镜像image-id,不用写全 只要能区分就行

docker rmi 镜像的标识

注意:拥有容器的镜像不能删除, 需要先删除容器

4. 本地镜像的导入导出(不规范)

1.导出到本地
docker save -o 本地导出路径 镜像id
实际例子 需要 重命名镜像名字
 docker save -o /Users/wangrong/Desktop/docker练习/tomcat  1
2. 本地导入到docker
docker load -i 镜像文件
实际例子 被上传后没有 REPOSITORY  和 TAG  还有images还是和以前一样
docker load -i /Users/wangrong/Desktop/docker练习/tomcat
3, 给镜像改名字
docker tag 镜像id 修改后的名字(REPOSITORY):版本 (tag)
docker tag 1cc tomcat:1.1

5. 容器操作 (容器就是启动起来的镜像 )

1,运行镜像

# 简单语法
##(镜像名称[:tag]这种形式启动话 如果本地有 就会直接运行,没有会下载后在直接运行)
docker run  镜像id|镜像名称[:tag]   

# 复杂语法  -d 后台运行容器,并返回容器ID;  -p(小写)则可以指定要映射的IP和端口
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像id|镜像名称[:tag]   
## 实际复杂语法的例子 
 docker run -d -p 3000:80 --name vueApp vuenginx:latest

2, 查看正在运行的容器

# -a all全部    -q 只查看容器的标识 可以混用
docker ps 【-aq】

3,查看容器的日志

# -f 可以滚动查看日志后面几行
docker logs -f 容器id
# 实际例子
 docker logs -f fa

4,进入到容器内部

# -i 选项指示 docker 要在容器上打开一个标准的输入接口,-t 指示 docker 要创建一个伪 tty 终端,连接容器的标准输入接口,之后用户就可以通过终端进行输入
docker exec -it  容器id bash
docker exec -it fa bash

5,退出容器

exit

6, 删除容器,删除容器前需要先停止运行中的容器

# 删除一个容器
 docker rm 容器id 

# 删除全部容器 
docker rm $(docker ps -qa)

7, 停止容器运行

# 停止一个容器
 docker stop 容器id 

# 停止全部容器 
docker stop $(docker ps -qa)

8, 启动容器

docker start 容器id 

6.数据卷的操作 主要是映射容器内部方便操作; 比较专业 ,我这边应用场景不多,暂时就不储备了,时间也不太允许

7. 自定义docker镜像 没有后缀

基本原理: 需要在docker环境下, 在项目中新建Dockerfile文件,来进行相对应的配置,一般有如下配置:

 # 1. FORM  依赖什么其他镜像 例如web前端应用的部署需要nginx
 # 2. COPY  拷贝相对路径下内容复制到镜像内
 # 3. WORKDIR 指定镜像的工作目录
 # 4. CMD 需要运行的命令(多个只会执行一个) 
 
 ###### 实际文件代码######
 
 FORM nginx
 COPY ./dist usr/etc/nginx/html/
 WORKDIR /
 CMD ["npm", "run", "build"]

最后在docker环境下打包镜像,命令如下:

# -t 为容器重新分配一个伪输入终端
docker build -t 镜像名称:tag版本号
docker build -t vueApp:1

8. docker-compose

1. 使用docker-compose的原因

docker-compose负责实现对Docker容器集群的快速编排,解决Dockerfile只能编译一个镜像&容器的问题,Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。

2. 安装docker-compose

brew install docker-compose

安装完成可以使用docker-compose -v 验证是否安装成功

3. docker-compose配置文件.yml 编写的格式

yml 以key: value的格式方式指定配置信息,多个配置信息以换行+缩进的方式来区分,key的冒号后必须有空格,字符串必须是单引号,不要使用制表符tab只用空格

version: '3.1'    # 指定了 compose file 的版本
services:    # 容器服务
  mysql:
    restart: always    # 启动docker就运行
    image: daocloud.io/library/mysql:5.7.7    # 镜像版本
    container_name: mysql    # 名称
    ports:    # 端口
    - 3306:3306
    volumes:    # 数据卷映射到本地
    - /Users/wangrong/Desktop/docker练习/mysql:/var/lib/mysql
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.0.21-jre7
    ports:
      - 8080:8080
    volumes:
    - /Users/wangrong/Desktop/docker练习/tomcat:/usr/local/tomcat/webapps    # 进入容器内部发现后面这个路径

4. 使用docker-compose管理文件, 下载并且运行命令

 docker-compose up -d

5. 使用docker-compose管理文件, 删除容器

 docker-compose down

6. 开启或关闭由docker-compose维护的容器

docker-compose start|stop|restart

7. 查看由 docker-compose 管理的容器

docker-compose ps

8. 查看docker-compose的日志

docker-compose logs -f

9.使用 docker-compose和Dockerfile 一起管理自定义镜像容器

  1. docker-compose.yml
version: '3.1'    # 指定了 compose file 的版本
services:    # 容器服务
  vueNginx:
    restart: always    # 启动docker就运行
    build:
      context: ./    # 当前路径
      dockerfile: Dockerfile    # 使用当前的Dockerfile取编排镜像
    image: vueapp1    # 镜像版本
    ports:    # 端口
    - 80:80
  1. Dockerfile
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
  1. 运行命令启动
docker-compose up -d 

10. 重新构建自定义镜像

docker-compose build 

11. 运行前重新构建

docker-compose up -d --build 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值