Docker使用备忘
这里记录在学习以及使用Docker时的一些点,用到的Linux版本为Debian10
安装
打开Docker官方文档并找到Install
指引页面,选中自己正在使用的系统,按照指引进行安装即可
指南中的步骤,依次介绍了如何卸载旧版本的Docker
,如何安装Docker
(使用推荐的通过repository
的安装方式,或者在没有外网的环境时通过安装包进行安装),这里需要注意的事,如果服务器不具备相关网络条件,可以使用阿里云镜像地址:https://mirrors.aliyun.com,或者直接使用适用于国内环境的安装脚本:
1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后可以按照官方文档,试着运行sudo docker run hello-world
测试是否是否正确安装,这个命令检测到本地还没有hello-world
这个镜像,就会去拉取这个镜像到本地,拉取并成功运行后,可以通过docker images
命令,查看当前已经安装的所有镜像
卸载
在官方文档中也有提及,使用:sudo apt-get purge docker-ce docker-ce-cli containerd.io
,注意,执行命令之后,宿主机上的镜像,容器,挂载卷,还有一些自定义配置信息不会被自动删除,如果想要删除它们,可以使用:
1
2
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
配置国内镜像加速服务
- 如果没有文件夹
etc/docker
,则先创建它 在该文件夹中的
deamon.json
文件中(若无则创建),添加registry-mirrors
字段的内容,该字段是一个字符串数组,可以在其中添加多个加速镜像源,以便docker
在源不可用时,自动切换到可用的源,这里可以用命令:1 2 3 4 5 6 7 8 9
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors":[ "https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/", "https://reg-mirror.qiniu.com" ] } EOF
- 编辑完并保存之后,重启服务即可:
1 2
$ sudo systemctl daemon-reload $ sudo systemctl restart docker
Docker的常用命令
1
2
3
docker version # 显示docker的版本信息
docker info # docker的运行信息,包括`Containers`和`Images`的数量
docker <command> --help # 帮助命令
镜像命令
docker images
:查看本地镜像
docker search
:搜索镜像
docker pull
:拉取镜像
docker rmi mysql
:删除本地镜像
容器命令
运行容器
1
2
3
4
5
6
7
8
9
10
docker run
# 可选参数
--name # 容器名,用来区分容器
-d 后台方式运行 # 后台运行是有前提的,如果运行之后没有前台进程,容器就会自动退出,所以需要使用一些阻塞挂起命令启动容器,或者使用交互方式运行后再不停止并退出容器
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
-P 随机指定容器端口
--rm 在容器停止后自动删除容器以及其挂载的相关匿名卷 # 用于测试的情况比较多
-v 将容器内的目录挂载到宿主机上的目录(在挂载时指定的容器目录后可以加:ro或者:rw,指定在容器内文件的独写权限)
--volumes-from 同步容器之间的数据(eg: docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7)
列出容器
1
2
3
4
5
docker ps
# 可选参数
-a # 列出当前正在运行的容器 + 历史运行过的容器
-n=<数量> # 显示最近创建的指定数量个容器
-q # 只显示容器的编号
退出容器
exit
:停止并退出容器 Ctrl + P + Q
:不停止并退出容器
删除容器
1
2
3
docker rm <容器ID>
docker rm -f $(docker ps -aq) # 强制删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
启动和停止容器的操作
1
2
3
4
docker start <容器ID> # 启动一个容器
docker restart <容器ID> # 重启一个容器
docker stop <容器ID> # 停止一个容器
docker kill <容器ID> # 强制停止一个容器
查看容器中的进程信息
1
docker top <容器ID>
查看容器的元数据
1
docker inspect <容器ID>
进入当前正在运行的容器
1
docker exec -it <容器ID> /bin/bash
1
docker attach <容器ID>
其他命令
拷贝命令(从容器内拷贝到主机上)
1
docker cp <容器ID>:<文件路径> <目标文件夹>
查看运行中容器的资源占用情况
1
docker stats
运行Portainer可视化面板
1
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
基于现有容器的改动创建新的镜像
1
docker commit -a"<author>" -m"<message>" <容器ID> <新镜像名称>
DockerFile
用途:用来构建docker镜像的文件
指令:
FROM # 基础镜像
MAINTAINER # 镜像维护者信息
RUN # 构建镜像时需要运行的命令
ADD # 添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载目录
EXPOSE # 暴露端口
CMD # 指定容器启动时要运行的命令,只有最后一个会生效
ENTRYPOINT # 指定容器启动时要运行的命令,可以在命令后进行追加
ONBUILD # 构建时要执行的指令
COPY # 类似ADD命令,将文件拷贝到镜像中
ENV # 构建的时候设置环境变量
通过Dockerfile构建镜像
docker build -f <Dockerfile路径> -t <镜像名>:<tag> <PATH>
查看Docker镜像的构建步骤
docker history <ImageId>