Docker私人学习笔记

俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步!

此笔记主要是antlr4.13版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。


一、基础概念:

1、docker是基于Go语言实现的开源容器项目。诞生于2013年年初,最初发起者是dotCloud公司。docker开源后受到业界广泛的关注与参与,目前已有80

多个相关开源组件项目,逐渐形成了围绕docker容器的完整生态体系。

官方网站:https://www.docker.com/

官方文档:https://docs.docker.com/

官方仓库:https://hub.docker.com/ 账号密码:cat4416/guowenjie 邮箱:565335545@qq.com

中文学习教程:https://www.runoob.com/docker/docker-tutorial.html

源代码:https://github.com/docker

2、docker在开发和运维中的优势:

(1)更快速的交付和部署。

(2)更高效的资源利用。

(3)更轻松的迁移和扩展。

(4)更简单的更新管理。

3、docker的三大核心概念:

(1)docker镜像:类似于虚拟机镜像,是一个只读的模板。类似于java类文件。

(2)docker容器:是基于镜像创建的的应用运行实例。类似于生成的java对象。

(3)docker仓库:类似于代码仓库,用于集中存放镜像文件的仓库中心。

4、docker的特点:

(1)环境的标准化。

(2)隔离性。

(3)可以快速创建和销户。

5、数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于linux的mount行为。

数据卷可以在容器之间共享和重用,并且修改后会立马生效,数据卷的更新不会影响镜像。

6、Dockerfile是由一行行指令语句组成,指令又分为配置指令和操作指令。

7、容器与应用是同生共死的关系,启动容器就是启动主进程,当容器中指定的应用终结时,容器也会自动停止,此时容器处于stopped状态。

故需要注意有使用伪终端交互时,不能使用exit命令终止终端交互,应使用Ctrl+p+q快捷键退出方式。

8、禁止在docker环境下使用sudo命令来提升权限,因为sudo命令会在当前进程下,创建子进程来执行对应的命令。

与docker容器只有一个主进程的要求相背离,并且宿主机向改容器发送信号量时,变为被sudo进程收了,而不是sudo后面对应的命令。

应该为使用gosu工具来代替,此工具在提升权限的同时,在当前线程下执行对应的命令,使得容器继续保持一个主进程。

9、默认情况下,创建容器时,如果不知道网络,则默认为bridge网桥模式,容器与宿主机直接可以直接通过网桥进行通信,但是如果外网需要

访问容器,必须经过宿主机的ip,同时还需要创建容器时主动暴露映射端口,否则外网无法访问容器。但是宿主机可以直接访问容器没有暴露

的服务和端口,不需要容器额外声明暴露。

二、基础功能:

1、从Docker Hub网站上获取镜像,直接执行命令:docker pull Name[:TAG],

例如 docker pull ubuntu:18.04。如果不指定TAG,则默认会选择latest标签,即下载仓库的最新版本镜像。

如果不用官方的仓库获取,也可以指定注册服务器的地址。例如 docker pull index.tenxcloud.com/docker_library/node

2、相同的镜像文件只能会有一个,相同的容器也只能有一个,但是一个镜像可以有生成多个容器。

镜像是否相同:是根据 镜像名称+版本号 来判断的。容器是否相同:是根据容器ID来判断的。

3、容器与应用是同生共死的关系,当容器中指定的应用终结时,容器也会自动停止,此时容器处于stopped状态。

故需要注意有使用伪终端交互时,不能使用exit命令终止终端交互,应使用Ctrl+p+q快捷键进行不停止退出方式。

4、配置镜像源加速(使用国内镜像来加快docker的镜像访问):

(1)具体配置可参考https://docs.docker.com/engine/reference/commandline/dockerd/。

(2)创建并配置docker的守护进程:vim /etc/docker/daemon.json

{

"registry-mirrors":["http://hub-mirror.c.163.com"]

}

(3)重新加载配置使其生效:systemctl daemon-reload

(4)重启docker: systemctl restart docker

5、docker的linux版本安装参考:https://docs.docker.com/engine/install/centos/#install-using-the-repository

6、docker的命令参数,可以用=或者空格来赋值参数,比如 --network=host 或者为 --network host 都是一样的意思。

三、使用笔记:

1、docker常用操作命令:

(1)查看当前linux系统下有哪些docker镜像文件:docker images ,可以加 --filter 过滤。

(2)查看当前运行的docker镜像:docker ps ,如果需要查看全部容器(包括已经停止的),可以加 -a,如果需要查看容器大小,加上 --size

(3)进入运行的镜像环境: docker exec -it 《镜像CONTAINER ID》 /bin/bash

(4)给镜像增加别名和打标签:docker tag 《镜像名:版本》 《新别名:版本》

(5)查看镜像详细信息:docker inspect 《镜像名:版本》 或者查看容器或则数据卷 《容器名》、《数据卷名》

(6)在镜像仓库中搜索镜像: docker search 《keyword》

(7)删除本地镜像:docker rmi 《镜像名:版本》 如果镜像有运行中的容器,删除会报错,可以加 -f 强行删除

(8)删除容器:docker rm 《容器ID》

(9)清除镜像遗留文件或未使用的镜像: docker image prune

(10)根据镜像生成容器实例并运行: docker run 《镜像ID》

(11)启动已存在的容器: docker start 《容器ID》,如果容器本身是运行状态,则忽略。

(12)镜像创建:用commit、import和build三种形式的子命令。

(13)存出和载入:docker save -o 和 docker load -i

(14)上传镜像到仓库中心:docker push 《镜像名:版本》 相对应的拉取镜像用 docker pull 《镜像名:版本》

(15)查看docker信息:docker info

(16)查看docker的镜像层:docker history 《镜像名:版本》

2、创建镜像:

(1)基于已有容器创建(对于在容器环境定制化后进行多机部署非常实用):

命令:docker commit [options] 《container》 《repository:tag》

示例:docker commit -m "me added a new file" -a "Cat" 9ca1fdd53ac0 mytestubuntun:1.0

说明:-m 表示提交信息, -a表示作者, 9ca1fdd53ac0是容器id,mytestubuntun:1.0 是新镜像的名称和标签。

(2)基于本地模板导入:

命令:docker import [options] 《repository:tag》

说明:导入一个镜像,可以使用OpenVZ提供的模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奕辰杰

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值