Docker学习笔记
一、简介:
-
Docker使用客户端-服务器CS架构模式,使用远程API来管理和创建Docker容器,容器通过Docker镜像来创建。其中docker镜像是用于创建容器的模板,docker容器是独立运行的一个或一组应用,是镜像运行时的实体,类似类和对象的关系。
-
Docker和虚拟机的区别:
-
Docker自身特点:
二、Docker安装:
-
设置repository:
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
-
安装docker engine:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
-
配置镜像源:
修改或创建daemon.json文件(/etc/docker/daemon.json)
{ "registry-mirrors" : [ "https://mirror.ccs.tencentyun.com", "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug" : true, "experimental" : true }
重启docker
sudo systemctl daemon-reload sudo systemctl restart docker
三、Docker容器使用
- 使用镜像启动容器:docker run -itd ubuntu /bin/bash,其中i表示交互式操作,t表示终端,d表示后台运行,若使用后台运行方式,则默认不进入容器,进入容器时需要docker exec命令;
- 停止一个容器:docker stop;
- 重新启动一个容器:docker restart;
- 启动已停止运行的容器:docker start container_name(container_id);
- 导出一个容器:docker export container_id -o xxx.tar;
- 导入一个容器快照为镜像:docker import xxx.tar image_name;
- 删除一个容器:docker rm -f container_id;
- 查看正在运行的容器:docker ps,加-a表示显示所有已经创建的容器;
- 查看容器日志和进程:docker logs;docker top;
- 查看docker容器的底层信息:docker inspect;
- docker run详细参数命令:-P为随机端口映射,-p为指定端口映射(主机端口:容器端口),-v为绑定一个卷。
- 从容器来创建一个新的镜像:docker commit container image。
四、Docker镜像使用
- 查看本地主机所有镜像:docker images;
- 预先下载镜像:docker pull;
- 查找镜像:docker search;
- 删除镜像:docker rmi;
- 查看镜像创建历史:docker history;
- 将指定镜像保存成tar文件:docker save image -o xxx.tar;
- 导入使用save命令导出的镜像:docker load -i xxx.tar。
五、Dockerfile制作
- dockerfile是一个用来构建镜像的文本文件,包含了一条条构建镜像所需要的指令和说明;
- 构建镜像命令:docker build -t image . ,这里的t表示镜像名字,.表示上下文路径;
- FROM:定制的镜像都是基于FROM的镜像;
- RUN:用于执行后面的命,对于多个命令可以使用&&进行连接,则只会创建1层镜像;
- COPY source_dir target_dir:从上下文复制文件或者目录到容器指定路径;
- ENV:设置环境变量,后续可以加$进行使用;
- VOLUME:定义匿名数据卷;
- EXPOSE:声明端口;
- WORKDIR:指定工作目录
问题
-
Q: ERROR:Docker Got permission denied while trying to connect to the Docker daemon socket at unix://
A: 将当前用户加入docker组: sudo gpasswd -a ${USER} docker. newgrp docker.
参考文献:
[1] https://docs.docker.com
[2] https://www.runoob.com/docker/