docker安装和使用
Docker Desktop
安装
平时要使用 Docker 不想安装虚拟机,也不想买服务器时推荐安装官方提供的「Docker Desktop」
1、官网下载安装包
2、修改默认安装位置
默认是安装在 C 盘中的并且无法修改,后续下载一些镜像时也会存放在 C 盘,我这里通过「mklink 创建软链接」的方式,将文件映射到我的 D 盘中,先在 D 盘创建好如下四个目录结构:
1 | mkdir D:\Docker |
然后以管理员身份打开 cmd,在打开的 cmd 窗口中依次执行下面四个 mklink
命令
1 | mklink /j "C:\Program Files\Docker" "D:\Docker" |
3、安装
Accept 后出现以下弹窗:Docker Desktop 需要更新的 WSL 内核版本。通过运行 “wsl –update” 更新 WSL 内核
更改镜像下载源
复制以下代码覆盖掉要更改部分,重启 Docker Desktop 即可,「registry-mirrors」配的都是国内的一些镜像源
1 | { |
参考
Windows中也可以安装使用Docker (qq.com)
Docker 学习
前言 - Docker — 从入门到实践 (gitbook.io)
Docker 安装
Ubuntu Docker 安装 | 菜鸟教程 (runoob.com)
linux/ubuntu 下的安装命令 (使用阿里云镜像):
1 | sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https:``//download``.[docker.com](http://docker.com/)``/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository "deb [arch=amd64] [http://mirrors.aliyun.com/docker-ce/linux/ubuntu](http://mirrors.aliyun.com/docker-ce/linux/ubuntu) $(lsb_release -cs) stable" && sudo apt-get update && sudo apt-get install -y docker-ce |
一条命令就可以搞定安装,不过安装可能需要一些时间,等着就行。
在使用过程中,当需要查找某个镜像的时候,我们可以去 docker 中央仓库:https://hub.docker.com/ 查看,从中我们可以看到该名称镜像历史的 release 的版本,我们可以根据需求选择自己需要的版本。
Docker 常用管理命令
Docker 命令大全 | 菜鸟教程 (runoob.com)
service docker start # 启动 docker 服务器
(1) 拉取某个镜像
docker pull xxxx
(2) 查看镜像与删除镜像
查看所有镜像:docker images
删除镜像 :docker rmi xxxx
注意:删除镜像前必须先停用、删除该镜像产生的实例
(3) 查看与删除实例
查看所有实例:docker ps -a
查看 activate 实例:docker ps
删除实例:docker rm xxx
(4) 根据镜像创造 docker 实例,这里以 nginx 为例
docker run --name nginx -p 80:80 -v /root/docker_conf/nginx/nginx.conf:/etc/nginx/nginx.conf -d docker.io/nginx
其中: -name 是镜像的名称, -p 是端口映射, -v 是绑定一个卷, 我们可以把自己的文件目录映射到镜像内部目录, 冒号前面为自己的实际机器, : 后面是对应镜像的目录。
(5) 当 docker 启动失败的时候 debug 原因:
docker logs xxID
(6) 进入实例
根据上面的命令创建的实例之后,如果成功的话会默认启动实例,我们可以使用下列命令进入到该实例内部:
docker exec -it nginx bash
docker run -it --rm ubuntu /bin/bash
运行存在的镜像,并以交互的方式进入容器,运行完删除容器
(7) 复制文件到实例内部系统
docker cp my.cnf mysql5.7:/etc/mysql/my.cnf
把宿主机文件拷到容器里面docker cp 要拷贝的文件路径 容器名: 要拷贝到容器里面对应的路径
容器里面拷文件到主机docker cp 容器名: 要拷贝的文件在容器中的路径 要拷贝到宿主机器的响应路径
(8) 实例内系统安装软件
实例内也是一个操作系统,我们可以安装需要使用的程序:
apt update
例如安装 vim 命令 : apt install vim
(9) 停止,启动,重新启动 docker 实例
docker start/stop/restart xxx
(10) 卸载 docker
yum remove docker-ce
删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
Docker 资源管理命令
docker 镜像在很多时候会耗占比较多的内存和 cpu, 甚至某个镜像被用来挖矿的情况下, cpu 会达到 100%(都是血与泪的实践经历啊), 所以我们可以使用下面的命令来限制性设置某个实例的内存与 cpu 占用量。
(1) docker 各个镜像资源使用情况查看 (包括 cpu 和内存):
docker stats
(2) 限制 docker 内存
docker update -m 20M --memory-reservation 20M --memory-swap 20M nginx
(3)限制 docker cpu
docker update --cpu-period=100000 --cpu-quota=20000 nginx
在每 100 毫秒的时间里,运行进程使用的 CPU 时间最多为 20 毫秒,这里仅仅考虑百分比。
Docker 镜像文件保存与加载
(1) 保存 docker 镜像文件到本地:
docker save nginx >./nginx.tar
(2) 在另一台主机加载本地文件到镜像 :
docker load < nginx.tar
然后看 docker images ,就能看到该镜像 ,但是名字和标签都是 none
(3)执行完上述语句后,查看本地镜像,会看到新加载的镜像名字和标签都是 none,利用该镜像的 id 对名字和标签重新命名即可:
指令:docker tag 镜像id 镜像名:标签 docker tag 172825a55619 confluence6.12_cracked:0.1
(4) 启动镜像
docker run -it --name nginx 172825a55619 /bin/bash
Docker 镜像文件的提交与上传到中央仓库
很多时候,我们会需要在已有的镜像上进行一些自定义修改,然后重新打包上传自己的镜像供别人使用,我们可以使用下面的流程来上传自己新打包的镜像到中央仓库。
(5.1) 官网账号注册
首先我们先到 docker 官网注册一个账号,这样我们才能将制作好的镜像上传到 docker 仓库,
打开 https://hub.docker.com/
(5.2) 提交自己要上传的镜像
docker commit Container_name yourdockerhub/nginx:latest
注意:commit 对包名命名有要求,Container_name 容器名称,yourdockerhub 改成自己的账号,否则无法上传
(5.3) 登录到远程 docker 仓库 (输入自己注册的账号和密码)
docker login
(5.4) 上传至 docker 云端
docker push yourdockerhub/nginx:latest
注意: 这里 push 对包名命名有要求,yourdockerhub 改成自己的账号,否则无法上传 上传成功了就可以在中央仓库你的账号下搜到你刚上传的镜像了。
解决方案
Docker 内程序如何访问宿主机的端口
请在你的 docker-compose.yml
的服务中加上
1 | extra_hosts: |
例如
1 | version: '3.5' |
来源:mongodb - lookup host.docker.internal: no such host - Stack Overflow