官网:https://www.docker.com/
Github Docker 源码:https://github.com/docker/docker-ce
英文文档:https://docs.docker.com/
中文文档:https://www.dockerdocs.cn/index.html
下载步骤 略 。
Tips:
- linux docker需要sudo权限,在安装后可以把用户加入Docker用户组
- windows下载比较麻烦,需要wsl2以及其他虚拟机支持,不同docker版本的文件组织方式也有些微区别,在下载安装过程中,如果报错,确保您follow的教程是最新的!
验证安装成功,在命令行中输入
docker version
Get Started
Docker是介于虚拟环境与虚拟机之间的,提供程序运行容器的平台。Docker在应用程序开发中可为开发人员提供方便的标准化环境;在服务器部署时,Docker使您能轻松移植到不同服务器或虚拟机中;在深度学习环境配置时,也能通过Docker实现不同本机Cuda的隔离。
首先,我们需要明确几个术语:
- Docker daemon: docker后台,是docker处理用户命令的应用程序
- Images:映像,是用于构建Container的静态文件
- Containers:容器,是用于运行程序的动态文件,可由Images构建
- Registry:docker仓库,可从远程仓库下载Images文件
- Dockerfile:docker脚本,可批量运行docker命令,常用于构建Images或Containers
Step1: 配置Docker hub镜像源(选择一个即可,如果都不行了,请使用魔法)
- 参考网址1:https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea
- 参考网址2:https://linux.do/t/topic/150936
- 参考网址3:https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
Step2: 拉取镜像
docker pull [OPTIONS] [Docker Registry Address]<Image Name>[:Image Tag]
其中[]中的内容可以省略,<Image Name>:<Image Tag> 可以从Docker Registry(如Docker hub和其镜像)中查到,取决于您所需要的基础环境
如:在命令行中输入
docker pull ubuntu:18.04
Step3: 运行镜像
docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...]
注意,以上如果本地没有指定image文件,指令其实也能自动抓取image
如:
在后台执行
docker run ubuntu
or 在命令行执行
docker run -it ubuntu:18.04 /bin/bash
-it
:这是两个参数,一个是-i
:交互式操作,一个是-t
终端。我们这里打算进入bash
执行一些命令并查看返回结果,因此我们需要交互式终端。ubuntu:18.04
:这是指用ubuntu:18.04
镜像为基础来启动容器。bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是bash
常用指令
Images
镜像体积
docker system df
列出镜像
docker image ls
-
列出dangling image(同名镜像中,失去意义的旧镜像)
docker image ls -f dangling=true # 删除它 docker image prune
-
列出中间层镜像(被上层镜像所依赖的,重复利用的镜像)
docker image ls -a
-
列出筛选的镜像
# 通过 名称 筛选 docker image ls ubuntu # 通过 名称:标签 筛选 docker image ls ubuntu:18.04 # 通过 过滤器 --filter 筛选 docker image ls -f since=mongo:3.2
-
格式化列出镜像
docker image ls --format "{{.ID}}: {{.Repository}}"
删除镜像
docker image rm <参数>
其中参数可以是image ID、镜像名:标签、或镜像摘要(DIGEST)
Container
新建/启动
docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...]
以<IMAGE NAME>镜像新建/启动容器,其中启动选项为[OPTIONS],启动后执行命令[COMMAND] [ARG...]
OPTION | Description |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: :<容器目录> |
-d | 守护进程,后台运行该容器 |
-p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
-P | 随机端口映射,容器内部端口随机映射到主机的端口 |
--name<image name> | 容器名字 |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 host name |
--dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username="admin" | 设置环境变量 |
如:
以ubuntu:18.04镜像构建容器,并输出"Hello world",之后终止容器(/bin/echo 'Hello world')
docker run ubuntu:18.04 /bin/echo 'Hello world'
以ubuntu:18.04镜像构建容器,在交互模式下(-i);分配命令行(-t);启动bash终端(/bin/bash)
docker run -it ubuntu:18.04 /bin/bash
以ubuntu:18.04镜像构建容器,命名为Myubuntu(--name);在交互模式下(-i);分配命令行(-t);将容器/usr/local/webapps挂载到主机/home/webapps目录,这意味着可以直接修改主机目录中的文件,从而修改容器中的文件(-v);将容器8080端口映射到主机的8888端口(-p);以后台模式启动容器(-d);启动容器后,在容器内执行命令(bash)
docker run -d -p 8888:8080 -v /usr/local/webapps:/home/webapps -it --name Myubuntu ubuntu:18.04 bash
当利用docker run
来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从 registry 下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
终止/启动
启动容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
OPTION | Description |
---|---|
-a | 附加到容器的标准输入输出流 |
-i | 附加并保持标准输入打开 |
- 启动一个容器
docker start my_container
- 同时启动多个容器
docker start container1 container2 container3
终止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
OPTION | Description |
---|---|
-t,--time | 停止容器之前等待的秒数,默认是 10 秒 |
- 停止一个容器:
docker stop my_container
- 指定等待时间30秒停止容器:
docker stop -t 30 my_container
- 同时停止多个容器:
docker stop container1 container2 container3
重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
OPTION | Description |
---|---|
-t,--time | 停止容器之前等待的秒数,默认是 10 秒 |
- 重启一个容器:
docker restart my_container
- 指定等待时间30秒重启容器:
docker restart -t 30 my_container
- 同时重启多个容器:
docker restart container1 container2 container3
进入容器
在使用 -d
参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,包括使用 docker attach
命令或 docker exec
命令。
attach命令
在容器后台运行时,输入
docker attach <Container ID>
exec进入容器命令(推荐)
在容器后台运行时,输入
docker exec -it <Container ID> bash
导出/导入容器
导出容器
docker export <Container ID> > ubuntu.tar
导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1
通过指定URL导入
docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
对已经停止的容器,可以使用命令删除
docker rm -f <Container ID>
删除所有处于终止状态的容器
docker container prune
其他
查看正在运行的容器
docker ps
查看容器端口的映射情况
docker port <Container ID>|<Container Name>
查看容器内部的标准输出
docker logs -f <Container ID>
查看容器内部运行的进程
docker top <Container ID>|<Container Name>
查看 Docker 的底层信息
docker inspect <Container ID>|<Container Name>
标题:Docker学习笔记(一)
作者:Departure
地址:https://www.unreachablecity.club/articles/2024/10/26/1729943776943.html
Comments | 0 条评论