Docker学习札记

基本概念问题

啥是Docker?

       Docker 最初是 dotCloud 革新Docke最初实现是基于LXC, 0.7 LXC 而使用自行开发的 libcontainer 1.11 使 runC containerd 2013 GitHub

  • Docker就是一个优秀的软件容器平台。
  • Docker使用Google公司推出的Go语言进行开发实现, 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
  • Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
  • Docker 在容器的基础上用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。Docker 技术比虚拟机技术格调更高,速度更快、性能更强。

为啥用Docker?

 好处多多,别的不说一张表清晰明了。

特点

动速度

盘占用

MB

GB

使用性能

几个基本概念

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

Docker 容器(Container)

容器是独立运行的一个或一组应用。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

 

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

好好理解,笔记记在这里要消化掉O(∩_∩)O

Docker安装

因为用的Windows 10系统,所以其他系统的请自行百度- ^_^ 
1,系统要求Docker for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V。
2,点击以下链接下载 Stable 或 Edge 版本的 Docker for Windows。
3,下载好之后双击 Docker for Windows Installer.exe 开始安装。
4,在 Windows 搜索栏输入 Docker 点击 Docker for Windows 开始运行。

然后会出现一个小鲸鱼的图标就okey啦。因为Docker Hub国外服务器,可以配置镜像加速器。例如:
Azure 中国镜像 https://dockerhub.azk8s.cn,七牛云加速器 https://reg-mirror.qiniu.com等。。。
对于使用 Windows 10 的系统, Docker 图标内右键菜单选择Settings ,打开配置窗口后左侧导航菜单选择 Daemon 。
在 Registry mirrors 一栏中填写加速器地址 https://dockerhub.azk8s.cn,保存后 Docker 就会重启并应用配置的镜像地址了。

镜像使用

  1. docker pull [选项] [Docker Registry 地址[:端口号]]仓库名[:标签]  用来获取镜像
    Docker 镜像仓库地址: <域名/IP>[:端口号] 。默认地址是 Docker Hub。仓库名:即 <用户名>/<软件名> 。
    eg:$ docker pull ubuntu:16.04 默认获取ubuntu16在官方库library/ubuntu的镜像
  2. docker run 运行容器:
    -it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。
    --rm :容器退出后随之将其删除。默认不会立即删除,除非手动 docker rm 。
    ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
    exit 退出了这个容器。
  3. docker image ls 列出镜像
  4. Docker 镜像维护原理?Docker 使用 Union FS 。具体的在分析,详见博文https://www.cnblogs.com/ilinuxer/p/6188654.html

容器操作

仓库访问

数据管理

 

2019年12月30日13:44:43 重新学习

docker info 查看信息

docker help常用帮助

安装常用软件Tomcat、MySQL、Redis

  1. 搜索镜像  docker search ------
  2. 拉取镜像  docker pull 
  3. 查看镜像  docker images
  4. 启动镜像  docker run -***
  5. 停止容器 stop
  6. 删除容器 rm
     

此处在新建mysql如果用的8.0以上,远程连接会失败2059,因为加密方式的区别:

这个本地root也是我改过后的截图,如果想远程连接不报错,需要修改加密方式,就ok了。

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES; #刷新权限

常用操作

如何批量清理临时镜像文件?
答:可以使用  docker image prune  命令。
如何查看镜像支持的环境变量?
答:可以使用  docker run IMAGE env  命令。
本地的镜像文件都存放在哪里?
答:与 Docker 相关的本地资源默认存放在  /var/lib/docker/  目录下,以
aufs  文件系统为例,其中  container  目录存放容器信息, graph  目录存放
镜像信息, aufs  目录下存放具体的镜像层文件。
如何停止所有正在运行的容器?
答:可以使用  docker stop $(docker container ls -q)  命令。
如何批量清理已经停止的容器?
答:可以使用  docker container prune  命令。
如何获取某个容器的 PID 信息?
答:可以使用  docker inspect --format '{{ .State.Pid }}' <CONTAINER ID or NAME>  命令。
如何获取某个容器的 IP 地址?
答:可以使用  docker inspect --format '{{ .NetworkSettings.IPAddress
}}' <CONTAINER ID or NAME>  命令
如何给容器指定一个固定 IP 地址,而不是每次重启容
器 IP 地址都会变?
答:使用以下命令启动容器可以使容器 IP 固定不变
$ docker network create -d bridge --subnet 172.25.0.0/16 my-net
$ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-con
tainer busybox
如何临时退出一个正在交互的容器的终端,而不终止它?
答:按  Ctrl-p Ctrl-q  。如果按  Ctrl-c  往往会让容器内应用进程终止,进而
会终止容器。
使用  docker port  命令映射容器的端口时,系统报
错“Error: No public port '80' published for xxx”?
答:创建镜像时  Dockerfile  要通过  EXPOSE  指定正确的开放端口;
容器启动时指定  PublishAllPort = true  。
可以在一个容器中同时运行多个应用进程么?
答:一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过
一些额外的进程管理机制,比如  supervisord  来管理所运行的进程。可以参考
https://docs.docker.com/config/containers/multi-service_container/ 。
如何控制容器占用系统资源(CPU、内存)的份额?
答:在使用  docker create  命令创建容器或使用  docker run  创建并启动容
器的时候,可以使用 -c|--cpu-shares[=0] 参数来调整容器使用 CPU 的权重;使用 -
m|--memory[=MEMORY] 参数来调整容器使用内存的大小。

容器操作

容器的操作包括启动、终止、使用、进入、删除。

启动容器
有两种方式,一种新建一个容器并启动,还有就是把终止状态的容器重新启动。
docker run  
docker container start 

终止容器
docker container stop 。当 Docker 容器中指定的应用终结时,容器也自动终止。
docker container ls -a  查看终止状态的容器。
docker container start  重启处于终止状态的容器。

导出和导入容器
docker export  导出本地某个容器。
docker import  从容器快照文件中再导入为镜像。


删除容器
docker container rm  删除一个处于终止状态的容器。如果要删除一个运行中的容器,可以添加  -f  参数。
docker container ls -a  查看所有状态容器
docker container prune清理掉所有处于终止状态的容器。

仓库访问

仓库( Repository  )集中存放镜像。可以被认为是一个具体的项目或目录。

除了公共的DockerHub公共仓库 还可以建立私有仓库!DockerHub就不说了,正常操作注册-登录-拉取、推送镜像。

官方提供docker-registry ,构建私有的镜像仓库。
安装运行 docker-registry
$ docker run -d -p 5000:5000 --restart=always --name registry registry
使用官方的  registry  镜像来启动私有仓库。默认情况下,仓库会被创建在容器的  /var/lib/registry  目录下。你可以通过  -v  参数来将镜像文件存放在本地的指定路径。
在私有仓库上传、搜索、下载镜像。创建好私有仓库之后,就可以使用  docker tag  来标记一个镜像,然后推送它到仓库。例如私有仓库地址为  127.0.0.1:5000  。用  curl  先在本机查看已有的镜像。
$ curl 127.0.0.1:5000/v2/_catalog
{"repositories":["ubuntu"]}
这里可以看到  {"repositories":["ubuntu"]}  ,表明镜像已经被成功上传了。先删除已有镜像,再尝试从私有仓库中下载这个镜像。
$ docker image rm 127.0.0.1:5000/ubuntu:latest
$ docker pull 127.0.0.1:5000/ubuntu:latest
$ docker image ls

yeasy大神的:注意事项
如果你不想使用  127.0.0.1:5000  作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如  192.168.199.100:5000  这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。
这是因为 Docker 默认不允许非  HTTPS  方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过  HTTPS  访问的私有仓库。

Tips:
批量清理临时镜像文件,  使用  docker image prune  命令。
查看镜像支持的环境变量,  使用  docker run IMAGE env  命令。
本地的镜像文件都存放在哪里?与 Docker 相关的本地资源默认存放在  /var/lib/docker/  目录下.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Thompson

相互学习,欢迎指正。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值