一、下载与安装
1.1 Windows安装
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
下载这个stable的就可以啦
安装完成后有一些操作:
1、修改下载默认源
右键桌面右下角Docker Desktop图标,选择setting - Docker Engine,修改"registry-mirrors": [ "http://hub-mirror.c.163.com","https://mirror.baidubce.com" ],
2、修改镜像存放目录
默认镜像存放目录有足够容量可以跳过此步
首先查看setting - Docker Engine - Resources - Disk image location找到默认镜像存放目录,例如:C:\ProgramData\DockerDesktop\vm-data。将文件夹内DockerDesktop.vhdx剪切到想要改变的目标镜像存放目录,例如:D:\DockerDesktop,然后修改镜像存放目录为D:\DockerDesktop
1.2 Ubuntu安装
https://www.runoob.com/docker/ubuntu-docker-install.html
1.3 Centos安装
https://www.runoob.com/docker/centos-docker-install.html
二、开始使用
2.1 从DockerHub拉取一个镜像并启动它
1、搜索镜像:https://hub.docker.com/search?type=image,输入你想使用的镜像,比如我想要一个已经配置好pytorch和cuda的的linux系统,那么就可以输入pytorch,点开第一个
点tags
就会看到很多不同tag的镜像列表,从中选择你想要的,复制右上角的命令行语句就可以了
比如我选的是这个
然后回到cmd粘贴这个命令行,就可以拉取这个镜像到本地了。
2、拉取镜像到本地
docker pull <username>/<imagename>:<tag>
3、查看所有镜像
docker images
可以看到镜像已经下载到本地了。
4、启动基于某个镜像的容器:
docker run -it <username>/<imagename>:<tag>或docker run -it <imageID>
如果想对某个镜像进行操作,一般要同时指定镜像名和tag,tag相当于这个镜像的版本号,<imagename>:<tag>,也可以直接给出该镜像的imageID。username是发布这个镜像的用户名字,如果没有的话也可以不用加上。-it是指以交互的形式启动该镜像,启动镜像后可以在容器中用命令行操作
关于run命令的语法,看https://www.runoob.com/docker/docker-run-command.html
5、查看历史运行的容器:
docker ps
6、查看所有正在运行的容器:
docker ps -a
7、在容器外面停止某个容器:
docker stop <containerID>
指定一个容器的时候可以通过containerID或contanerName来指定,如果在run的时候没有指定contanier的name的时候系统会随机分配一个名字,或者可以通过docker run --name <containerName> <imageName>:<tag>来指定一个名字
8、删除容器:
docker rm <containerName>
注意如果容器不是Exited状态是无法删除的,需要先stop才能删除
9、删除所有容器:
docker rm `docker ps -a -q`
10、删除镜像:
docker rmi <imageID>
注意如果没有删除所有已启动容器是不能删除该镜像的
9、当我们在容器里面的时候,退出容器的方式有:
方式 | 结果 | 再次启动 |
exit(命令) | 退出后,这个容器也就消失了,容器销毁ps查不到 | docker start 容器名/容器id |
Ctrl+D(快捷方式) | 退出后,这个容器也就消失了,容器销毁ps查不到 | docker start 容器名/容器id |
先按,Ctrl+P;再按,Ctrl+Q(快捷方式) | 退出容器,ps能查到,还在后台运行 | docker attach 容器名/容器id |
三、构建镜像
参考:https://www.cnblogs.com/hanyifeng/p/6116067.html
3.1 交互式构建镜像
在某个镜像的基础上通过命令行手动修改容器,并基于此修改构建新的镜像。
1、基于某个镜像启动一个容器(以交互式启动):
docker run -it <username>/<imagename>:<tag>
2、然后在打开的容器中用命令行安装一些软件:apt-get install xxx或者安装一些基础的python库等,或者添加一些文件,修改配置等等,看你的需求。
3、对安装了软件(做了修改)的容器打包成一个新的镜像:打开另一个终端,输入
docker commit <containerName> <username>/<newImageName>:<tag>
containerName是刚才你修改过的容器名称,newImageName是你想要构建的新的镜像的名称,tag是你为它分配的版本号,可以是v1.0或者任意字符,username是你的用户名,要登陆了才会有效。登录:docker login,输入用户名和密码就可以了。若没有账号可先到https://hub.docker.com/先注册一个
4、输入
docker images
就能看到刚刚生成的新镜像
5、运行该镜像:
docker run -it <username>/<newImageName>:<tag>
可以看到这个镜像是不同于原来镜像的
3.2 使用DockerFile
Dockerfile包含创建镜像所需要的全部指令。基于在Dockerfile中的指令,我们可以使用Docker build命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。
新建一个目录,在里面新建一个DockerFile文件
1、编写DockerFile
参考网上的例子https://www.jianshu.com/p/89f1a77d6378
https://blog.youkuaiyun.com/bear507/article/details/108330373
https://www.cnblogs.com/hanyifeng/p/6116067.html
2、构建镜像:
docker build -t <user_name>/<newImageName >:<tag> .
注意后面有一个 . ,代表在当前目录的上下文构建镜像
3、运行镜像:
docker run -it <user_name>/<newImageName >:<tag>
关于run命令的语法,看https://www.runoob.com/docker/docker-run-command.html
有一些常用的:
-
-d: 后台运行容器,并返回容器ID;
-
-i: 以交互模式运行容器,通常与 -t 同时使用;
-
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-
--name="nginx-lb": 为容器指定一个名称;
-
--volume , -v: 绑定一个卷
四、上传镜像
1、登录账户:
docker login
输入用户名和密码(没有账户的要先到https://hub.docker.com/注册)
2、上传:
docker push <user_name>/<image_name>:<tag>