Docker重点知识操作汇总

旨在记录Docker重点知识及操作,并无概念讲解

1、Docker安装

注:要求CentOS7及以上版本

1.1 安装Docker

卸载旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum安装gcc

yum -y install gcc
yum -y install gcc-c++

安装需要的软件包

yum install -y yum-utils

设置stable镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新包索引

yum makecache fast

安装DOCKER CE

yum -y install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

查看docker版本

docker version

查看docker启动状态

systemctl status docker

1.2 卸载docker

systemctl stop docker 
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

1.3 阿里云镜像加速

阿里云开发者平台——>控制台——>容器镜像服务——>加速器地址
在这里插入图片描述配置镜像加速器

mkdir -p /etc/docker
vim  /etc/docker/daemon.json

# 粘贴以下内容到daemon.json
{
  "registry-mirrors": ["https://q4xbpjoo.mirror.aliyuncs.com"]
}

#重启
systemctl daemon-reload
systemctl restart docker

2、Docker常用命令

2.1 启动查看类命令

# 启动docker
systemctl start docker
# 停止docker 
systemctl stop docker
# 重启docker 
systemctl restart docker
# 查看docker状态 
systemctl status docker
# 开机启动:
systemctl enable docker
# 查看docker概要信息 
docker info
# 查看docker总体帮助文档
docker --help
# 查看docker命令帮助文档
docker 具体命令 --help

2.2 镜像相关命令

# 列出本地主机上的的镜像
docker images 
# 列出本地所有的镜像
docker images -a
# 只显示镜像ID
docker images -q
# 查询镜像
docker search 镜像名字
# --limit: 只列出N个镜像,默认25个
docker search --limit 数字 镜像名字
# 下载镜像
docker pull 镜像名字
# 查看镜像/容器/数据卷所占的空间
docker system df
# 删除单个镜像
docker rmi -f 镜像名字ID
# 删除多个镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG 
# 删除全部镜像
docker rmi -f $(docker images -qa)

2.3 容器命令

2.3.1 新建+启动容器

docker run -it 镜像ID /bin/bash		#交互式启动
docker run -d 镜像ID		#后台启动


--name="容器新名字"    为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-P: 随机端口映射,大写P
-p: 指定端口映射,小写p

2.3.2 查询当前正在运行的镜像

docker ps [OPTIONS]

-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
# 两种退出方式: exit,ctrl+p+q

# 删除已停止的容器
docker rm 容器ID
# 强制停止容器
docker kill 容器ID或容器名
# 查看容器日志
docker logs 容器ID
# 查看容器内运行的进程
docker top 容器ID
# 查看容器内部细节
docker inspect 容器ID

2.3.3 进入正在运行的容器并以命令行交互

docker exec -it 容器ID /bin/bash

2.3.4 文件在容器与主机间的导入导出

# 从容器内拷贝文件到主机上
docker cp  容器ID:容器内路径 目的主机路径
# export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID > 文件名.tar
# import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

3、Docker镜像容器

Docker镜像commit操作

# commit提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

4、本地镜像发布到阿里云

1、镜像的生成方法
使用commit生成新得镜像
2、将本地镜像推送到阿里云
阿里云开发者平台——>控制台——>容器镜像服务——>实例列表——>个人实例——>创建命名空间——>创建镜像仓库

# 将镜像推送到Registry,修改用户名,镜像ID,镜像仓库名和仓库地域是自动生成的
$ docker login --username=[username] registry.cn-guangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-guangzhou.aliyuncs.com/docker1_001/ubuntu-vim:[镜像版本号]
$ docker push registry.cn-guangzhou.aliyuncs.com/docker1_001/ubuntu-vim:[镜像版本号]

3、从Registry中拉取镜像

docker pull registry.cn-guangzhou.aliyuncs.com/docker1_001/ubuntu-vim:[镜像版本号]

5、本地镜像发布到私有库

1、卸载docker registry 私有库

docker pull registry 

2、运行私有库Registry

docker run -d -p 5000:5000  -v /username/myregistry/:/tmp/registry --privileged=true registry

3、commit生成新的镜像

docker commit -m="ifconfig cmd add" -a="username" a69d7c825c4f ubuntuPlus:1.2

4、将新镜像ubuntuPlus:1.2修改符合私服规范的Tag

#公式: docker tag 镜像:Tag Host:Port/Repository:Tag
docker tag  ubuntuPlus:1.2  192.168.111.111:5000/ubuntuPlus:1.2

5、修改daemon.json支持HTTP

# 在daemon.json中添加
"insecure-registries": ["192.168.111.111:5000"]

6、push推送到私服库

docker push 192.168.111.111:5000/ubuntuPlus:1.2

7、从私服库pull到本地

docker pull 192.168.111.162:5000/ubuntuPlus:1.2

6、DockerFile操作

6.1 DockerFile常用保留字指令

FROM:当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令;shell格式:RUN <命令行>,例RUN yum -y install vim;exec格式:RUN [“可执行文件”,“参数1”,“参数2”];RUN是在 docker build时运行
EXPOSE:当前容器对外暴露出的端口
WORKDIR:指定在创建容器后,终端默认的工作目录
USER:指定执行镜像的用户,默认是root
ENV:设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中
VOLUME:容器数据卷,用于数据保存和持久化工作
CMD:指定容器启动后的要干的事情
ENTRYPOINT:指定容器启动时要运行的命令

6.2 Dockerfile文件实例:

FROM centos
MAINTAINER usrname<username@qq.com>
 
ENV MYPATH /usr/local
WORKDIR $MYPATH
 
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
 
EXPOSE 80
 
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

7、Docker-compose容器编排

7.1 安装 Docker compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

7.2 Compose常用命令

docker-compose -h           # 查看帮助
docker-compose up           # 启动所有docker-compose服务
docker-compose up -d        # 启动所有docker-compose服务并后台运行
docker-compose down         # 停止并删除容器、网络、卷、镜像。
docker-compose exec 服务id   # 进入容器实例内部
docker-compose ps       # 展示当前docker-compose编排过的运行的所有容器
docker-compose top      # 展示当前docker-compose编排过的容器进程
docker-compose logs  yml里面的服务id     # 查看容器输出日志
docker-compose config     # 检查配置
docker-compose config -q  # 检查配置,有问题才有输出
docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

在这里插入图片描述

7.3 docker-compose流程

1、编写微服务项目
2、打jar包上传到Linux
3、编写Dockerfile并运行,将项目构建成镜像

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER username
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为spring_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /spring_docker.jar'
ENTRYPOINT ["java","-jar","/spring_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001

4、编写docker-compose.yml文件

version: "3"
 
services:
  microService:
    image: spring_docker:1.0
    container_name: sd01
    ports:
      - "6001:6001"
    volumes:
      - /app/microService:/data
    networks: 
      - spring_net 
    depends_on: 
      - redis
      - mysql
 
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - spring_net
    command: redis-server /etc/redis/redis.conf
 
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'spring'
      MYSQL_USER: 'user'
      MYSQL_PASSWORD: '123456'
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - spring_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
 
networks: 
   spring_net: 

5、执行 docker-compose up或docker-compose up -d

8、Docker轻量级可视化工具Portainer

安装

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

登录:默认用户名和密码为admin
使用:可视化操作docker

9、Docker容器监控之CAdvisor+InfluxDB+Granfana

使用docker-compose构建三件套

version: '3.1'
 
volumes:
  grafana_data: {}
 
services:
 influxdb:
  image: tutum/influxdb:0.9
  restart: always
  environment:
    - PRE_CREATE_DB=cadvisor
  ports:
    - "8083:8083"
    - "8086:8086"
  volumes:
    - ./data/influxdb:/data
 
 cadvisor:
  image: google/cadvisor
  links:
    - influxdb:influxsrv
  command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
  restart: always
  ports:
    - "8080:8080"
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
 
 grafana:
  user: "104"
  image: grafana/grafana
  user: "104"
  restart: always
  links:
    - influxdb:influxsrv
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  environment:
    - HTTP_USER=admin
    - HTTP_PASS=admin
    - INFLUXDB_HOST=influxsrv
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root
```
启动docker-compose文件: docker-compose up
![在这里插入图片描述](https://img-blog.csdnimg.cn/bf686cd3308547f5bd6277eeffcaba3f.png#pic_center)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值