docker入门笔记

简介

一种相较于虚拟机更加轻量的虚拟技术

安装

  • windows安装要求
    win7/8必须需要通过docker toolbox来安装, win10专业版(企业版、教育版)只需安装Docker for windows
  • docker engine(centos)
yum install -y yum-utils
# 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 修改源信息
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 刷新缓存
yum makecache [fast] # centos 8 没有fast参数
yum -y install docker-ce

docker-machine安装(deprecated)

  • docker-machine是用来简化docker安装的cli,目前已经基本兼容主流的虚拟机和云服务器
  • 当docker-machine在本地使用时,实际上其作用就是虚拟机管理工具(类似vagrant),
    不过其管理的虚拟机有指定的镜像,比如,使用的驱动是virtualbox时,则指定的镜像为boot2docker,该镜像是一个轻量级的ubuntu系统
  1. 执行原理
  • 即用一个轻量级的linux(boot2docker)镜像创建一台主机,该主机已经包含了docker的守护进程和docker客户端。
  1. 常用命令(其中虚拟主机就是docker的宿主机
  • docker-machine ip 获得虚拟主机的IP
  • docker-machine ssh 通过ssh连接到虚拟主机(实际上,使用ssh docker@虚拟主机的ip 密码**tcuser**同样可以连接到虚拟主机中,比如使用外部数据库客户端就是使用此方法连接)
  • docker-machine start/stop/restart 相当于对虚拟主机进行关机/开机/重启操作
  • docker-machine status 查看虚拟主机的状态
  • docker-machine create/rm 创建和删除虚拟主机

添加镜像加速器

  • tencent cloud

  • 阿里云

  • 创建虚拟主机时添加,docker-machine create --engine-registry-mirror=<your accelerate address> -d virtualbox default

  • 已有的虚拟主机中添加,首先通过docker-machine ssh <machine-name>登录虚拟机
    然后修改/var/lib/boot2docker/profile文件,将--registry-mirror=<your accelerate address>添加到EXTRA_ARGS中,最后sudo /etc/init.d/docker restart重启Docker服务就可以了

  • daocloud 使用方法(需要注册,推荐使用)

  • 网易蜂巢 (不需要注册)

  • ghostcloud (需要注册)

常用命令(客户端)

  • docker help 命令
attach           # 当前 shell 下 attach 连接指定运行镜像 
build            # 通过 Dockerfile 定制镜像 
commit           # 提交当前容器为新的镜像 
cp               # 从容器中拷贝指定文件或者目录到宿主机中 
create           # 创建一个新的容器,同 run,但不启动容器 
diff             # 查看 docker 容器变化 
events           # 从 docker 服务获取容器实时事件 
exec             # 在已存在的容器上运行命令 
export           # 导出容器的内容流作为一个 tar 归档文件[对应 import ] 
history          # 展示一个镜像形成历史 
images           # 列出系统当前镜像 
import           # 从tar包中的内容创建一个新的文件系统映像[对应 export] 
info             # 显示系统相关信息 
inspect          # 查看容器详细信息 
kill             # kill 指定 docker 容器 
load             # 从一个 tar 包中加载一个镜像[对应 save] 
login            # 注册或者登陆一个 docker 源服务器 
logout           # 从当前 Docker registry 退出 
logs             # 输出当前容器日志信息 
port             # 查看映射端口对应的容器内部源端口 
pause            # 暂停容器 
ps               # 列出容器列表 
pull             # 从docker镜像源服务器拉取指定镜像或者库镜像 
push             # 推送指定镜像或者库镜像至docker源服务器 
restart          # 重启运行的容器 
rm               # 移除一个或者多个容器[在运行中的容器无法删除或使用-f强制删除]
rmi              # 移除一或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除] 
run              # 创建一个新的容器并运行一个命令 
save             # 保存一个镜像为一个 tar 包[对应 load] 
search           # 在 docker hub 中搜索镜像 
start            # 启动容器 
stop             # 停止容器 
tag              # 给源中镜像打标签 
top              # 查看容器中运行的进程信息 
unpause          # 取消暂停容器 
version          # 查看 docker 版本号 
wait             # 截取容器停止时的退出状态值 
运行 'docker COMMAND --help' 查看更多的命令

启动docker服务

  • 启动
    systemctl start docker
  • 停止
    systemctl stop docker
  • 重启
    systemctl restart docker

常用命令(客户端)详细介绍

  • docker tag # 给自己的私有仓库推送时必须先给自己的镜像打上tag
  • docker push #将镜像推送至自己的仓库中
  • docker run [options] 镜像 [COMMAND]
    • -i #创建交互式容器
    • -h #指定容器主机名
    • -d #使容器后台运行
    • -e #指定环境变量
    • -t #创建容器时打开terminal
    • -rm #若容器存在,则移除它
    • -p <本地主机端口>:<容器端口> #指定容器端口映射
    • -P #随机端口映射
    • -v <本地主机路径>:<容器路径>(可以指定多个,是一个数组) #给容器添加数据卷
    • --name <容器名> #给容器取名
    • --entrypoint COMMAND #容器运行时的命令会覆盖Dockerfile中entrypoint指定的命令
    • --volumes-from <容器名> #使用指定容器的数据卷
    • --network <已创建的网络名称> #连接到指定的网络
    • --restart=always # 允许自动重启
    • --link 容器名:别名 #给连接的容器取一个别名,当容器重启时ip会发生改变,而使用别名可避免该问题

Example

docker run --name db -e MYSQL_ROOT_PASSWORD=example  --restart=always -v /my/custom:/etc/mysql/conf.d --network mysql -p 3306:3306 -d mysql --default-authentication-plugin=mysql_native_password

参考文献