docker笔记

目录

1 docker常用命令


0启动docker 

systemctl start docker

1.1 镜像命令

docker images #查看本地镜像

docker search 镜像名         docker search 镜像名 -fillter=条件=? #查看hub.docker中的镜像/条件查询

docker pull 镜像名 #拉取镜像                                                                                                        

docker rmi -f 镜像名  #删除镜像  docker rmi -f $(docker images -aq) #删除所有镜像

1.2容器命令

1.2.1开启容器

docker run --name 镜像别名  镜像名 #开启一个容器

docker run -d “镜像名” #后台方式运行一个容器

docker run -it “镜像名” #交互运行一个容器(常用)

docker run -p 8080:8080 #指定端口运行

docker run -P #随机端口运行

1.2.2 容器ps

docker ps -a #查看容器全部历史

docker ps -n=? #查看n个

docker ps -aq  #查全部 只显示容器id

1.2.3 退出容器

exit #停止并推出

CTRL + P +Q #推出不停止

1.2.4删除容器

docker rm 容器id #删除

docker rm -f $(docker ps -aq) #删除全部

docker ps -a -q|xargs docker rm #查看后删除全部

1.2.5启停容器

docker start 容器id 

docker restart 容器id #重启

docker stop 容器id #停止

docker lill 容器id #强制停止

#后台运行容器时,必须有一个前台进程

1.2.6查看日志

docker logs -f -t 容器id #查看指定容器日志

docker logs -tf 容器id 

docker logs -t -f tail? 容器id  #查看?条日志

1.2.7查看docker内进程

docker top 容器id

1.2.8查看容器元数据

docker inspect 容器id

1.2.9进入正在运行的容器

docker exec -it 容器id 

docker exec -it 容器id  /bin/bash

docker attach 容器id 

#exec 进去容器后开启一个新终端,进行操作,attach 进去容器当前正在执行的终

1.2.10拷贝容器内部文件至外部

docker cp 容器id:/xx/xx/xxx                /xx/xx

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

例: docker run -d --name nginx01 -p 8081:80 nginx  #以后台方式运行nginx 别名nginx01 指定外部端口8081 内部端口80

例: docker run -d --name tomcat01 -p 8082:8080 tomcat:9.0    #

例: docker exec -it nginx01 /bin/bash   # /bin/bash 进入终端

#使用docker 阿里云镜像仓库 默认都是最小镜像 会阉割部分内容,如tomca 容器运行后 缺少欢迎页等。保证最小运行环境

#安装portainer(docker可视化工具)

docker run -d -p 8083:9000 --restart=always -v /var.run.docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

docker run -d --name portainer -p 8083:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

访问后首次出现设置密码页面

#docker镜像加载原理(联合文件系统unionfs)

特性: 一次同时加载多个文件系统,联合加载会把各层文件系统叠加起来. 最终的文件系统会包含所有底层文件和目录。

1.2.11commit镜像

docker commit  -a="tomcattest" -m="cp webapps.dxxx in  webapps" 5b6c34faa8ba tomcattest

docker commit  -a="别名" -m="备注" 容器id 新容器id

#将改动后的容器 提交成一个新的镜像

1.2.12docker 部署elasticsearch

省略查询镜像,pull镜像

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch

#elasticsearch 耗内存  设置最小64m 最大512m 

1.2.13docker容器数据卷

什么是容器数据卷:容器之间有一个数据共享的技术 docker容器中产生的数据,可以同步到本地,容器删除数据还在。(容器的持久化和同步操作)

双向绑定,容器内部与本地数据同步变化

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器内目录  镜像名

docker run -it -v /home/volumtest:/home centos /bin/bash

#运行centos镜像 将容器内home目录下的数据同步至 本机 /home/volumtest目录下

#mysql实战

docker run -d -p 8083:3306 -v /home/maozi/volumtest/mysql/conf:/etc/mysql/conf.d -v/home/maozi/volumtest/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=907353 --name mysql01 mysql:8.0

#启动mysql 指定端口 设置密码  同时挂载 conf.d 文件与 mysql的data至本地目录

1.2.14具名和匿名挂载

#匿名挂载

docker run -d -P --name nginx01 -v  /etc/nginx nginx    #随机端口启动nginx,匿名挂载内部目录/ect/nginx  ,这里没有指定本机目录

#具名挂载

docker run -d -P --name nginx02 -v jumingnginx:/etc/nginx nginx

#查看数据卷

docker volume ls  #查看数据卷  匿名挂载的是一长串码  具名则是自己的命名

docker volume inspect  数据卷名   #查看数据卷具体信息

#所有的docker容器的数据卷,没有指定目录情况下 都在 /var/lib/docker/volumes/xxxx/...里

-v 容器内路径 #匿名挂载                                                                                                                     -v 卷名:容器内路径  #匿名挂载                                                                                                           -v /宿主机路径:容器内路径  #指定路径挂载

#拓展

#通过 -v 容器内路径:ro 或rw  改变读写权限  ro 只读  rw可读可写                        
一点这个设置了ro权限,就说明这个路径只能通过宿主机来操作,容器无权操作

1.2.15初识dockerfile
#创建一个dockerfile文件,文件中的内容明亮大写
FROM CENTOS
VOLUME ["volume01","volume02"]
CMD echo "--end---"

CMD /bin/bash

docker build -f /home/maozi/volumtest/dockerfile01 -t maozi_centos:1.0 .

docker build -f 脚本目录 -t 新镜像名 .

#根据脚本生成一个新镜像 
基础知识:
1.保留每个关键字(指令)都是大写    2.执行顺序从上到下  3.#表示注释  4.每一个指令都会创建一个新的镜像层,并提交。

#DockerFile的指令
FROM      #基础镜像
MAINTAINER  #镜像是谁写的  姓名+...
RUN         #镜像构建的时候需要运行的命令
ADD         #添加的内容:  比如tomcat压缩包等
WORKDIR #镜像的工作目录
VOLUME   #挂载的目录 (数据卷)
EXPOSE   #端口
CMD          #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  #指定这个容器地洞的时候要运行的命令,可以追加命令
ONBUILD   #当构建一个被继承dockerfile 这个是运行ONBUILD的指令
COPY         #类似ADD 将文件拷贝到镜像中
ENV            #构建的时候设置环境变量
 

1.2.16数据卷共享 --volume-from

 例:docker run -it --name maozicentos01 maozi_centos:1.0  

      docker run -it --name maozicentos02 --volume-from maozicentos01 maozi_centos:1.0

      docker run -it --name 容器名 --volume-from 父容器名 镜像名:版本号

#实现mysql数据共享

docker run -d -p 8083:3306 -v /home/maozi/volumtest/mysql/conf:/etc/mysql/conf.d -v/home/maozi/volumtest/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=907353 --name mysql01 mysql:8.0 

docker run -d -p 8083:3306  -e MYSQL_ROOT_PASSWORD=907353 --name mysql02 --volumes -from mysql01 mysql:8.0 

数据卷的生命周期一直持续到没有容器其使用位置,如果持久化到了本地,则持久存在

安装Docker(yum安装)

基于 CentOS 7 安装

  1. 官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/

  2. 确定你是CentOS7及以上版本

    [root@192 Desktop]# cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)
  3. yum安装gcc相关(需要确保 虚拟机可以上外网 )

    yum -y install gcc
    yum -y install gcc-c++
  4. 卸载旧版本

    yum -y remove docker docker-common docker-selinux docker-engine
    # 官网版本
    yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-engine
  5. 安装需要的软件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
  6. 设置stable镜像仓库

    # 错误
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    ## 报错
    [Errno 14] curl#35 - TCP connection reset by peer
    [Errno 12] curl#35 - Timeout
    
    # 正确推荐使用国内的
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  7. 更新yum软件包索引

    yum makecache fast
  8. 安装Docker CE

    yum -y install docker-ce docker-ce-cli containerd.io
  9. 启动docker

    systemctl start docker
  10. 测试

    docker version
    
    docker run hello-world
    
    docker images

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值