Docker基础总结

获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。
对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

列出镜像
docker image ls
虚悬镜像(dangling image):由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。(docker build和docker pull)
docker image prune #删除虚悬镜像
docker image ls -a #显示中间层镜像和顶层镜像
docker image ls ubuntu #列出特定镜像
docker image ls -f since/before=mongo:3.2 #-f 过滤器 列表在 mongo:3.2 之后/前建立的镜像
docker image ls --format “{{.ID}}: {{.Repository}}” #Go模板自定义组织列
删除镜像
docker image rm [选项] <镜像1> [<镜像2> …]
可用 ID、镜像名、摘要删除镜像

用 docker image ls 命令来配合:
	$ docker image rm $(docker image ls -q redis)  #删除所有仓库名为 redis 的镜像
	docker image rm $(docker image ls -q -f before=mongo:3.2) #删除所有在 mongo:3.2 之前的镜像

启动容器
docker run ubuntu:18.04 /bin/echo ‘Hello world’ #输出一个 “Hello World”,之后终止容器
docker run -t -i ubuntu:18.04 /bin/bash #-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
		检查本地是否存在指定的镜像,不存在就从公有仓库下载
		利用镜像创建并启动一个容器
		分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
		从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
		从地址池配置一个 ip 地址给容器
		执行用户指定的应用程序
		执行完毕后容器被终止

-d:后台运行(容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关)
	$ docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"  #后台运行,返回id
	77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a	
后台运行查看日志:
	docker container ls #查看启动中容器
	docker container logs [container ID or NAMES] #获取容器输出信息 [container ID]可输入前几位

终止容器
docker container stop [container ID] #终止容器 当 Docker 容器中指定的应用终结时,容器也自动终止。
docker container ls -a #查看终止状态的容器
docker container start #启动容器
docker container restart #终止再启动

进入容器
在使用 -d 参数时,容器启动后会进入后台。
进入容器进行操作:用 docker attach 命令或 docker exec 命令
docker attach [container ID]#进入docker后,exit会导致容器停止
docker exec -it [container ID] bash #进入docker后,exit不会导致容器停止
docker exec -it 69d1 bash

导出/导入
docker export [container ID] > xxx.tar #导出容器快照
docker import 快照文件/URL 仓库名:标签 #导入容器快照成镜像
docker import ubuntu.tar test/ubuntu:v1.0
可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时可以重新指定标签等元数据信息。
删除容器
docker container rm [container ID] #删除一个处于终止状态的容器
docker container rm -f [container ID] #删除一个处于启动状态的容器
docker container prune #清理所有处于终止状态的容器

在私有仓库上传、搜索镜像
docker run -d -p 5000:5000 --restart=always --name registry registry #获取官方 registry 镜像运行
$ docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry #通过-v参数来将镜像文件存放在本地的指定路径。将上传的镜像放到本地的 /opt/data/registry 目录

docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]  #打标签
docker push [container ID or NAMES] #上传镜像

数据卷
docker volume create my-vol #创建一个数据卷
docker volume ls #查看所有的数据卷
docker volume inspect my-vol #查看指定数据卷

创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /webapp 目录:
 docker run -d -P \
	--name web \
	# -v my-vol:/wepapp \
	--mount source=my-vol,target=/webapp \
	training/webapp \
	python app.py
				
删除数据卷:$ docker volume rm my-vol

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,
并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。如果需要在删除容器的同时移除数据卷。
可以在删除容器的时候使用 docker rm -v 这个命令。

docker volume prune #清除无主数据卷

挂载主机目录
docker run -d -P
–name web
# -v /src/webapp:/opt/webapp
–mount type=bind,source=/src/webapp,target=/opt/webapp
training/webapp
python app.py

Docker 挂载主机目录的默认权限是 读写,也可以通过增加 readonly 指定为 只读
docker run -d -P \
	--name web \
	# -v /src/webapp:/opt/webapp:ro \
	--mount type=bind,source=/src/webapp,target=/opt/webapp,readonly \
	training/webapp \
	python app.py

--mount 标记也可以从主机挂载单个文件到容器中
docker run --rm -it \
 # -v $HOME/.bash_history:/root/.bash_history \
--mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
ubuntu:18.04 \
bash
#可记录在容器中输入过的命令

使用网络
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
docker container ls 可查看端口映射信息
docker logs查看应用信息
例子:docker logs -f ee51
docker port#查看端口映射配置
-p 标记可以多次使用来绑定多个端口

容器互联
创建新的 Docker 网络
docker network create -d bridge my-net
-d 参数指定 Docker 网络类型,有 bridge overlay

连接容器(运行终端,并连接容器)
docker run -it --rm --name busybox1 --network my-net busybox sh
docker run -it --rm --name busybox2 --network my-net busybox sh

配置容器dns
在容器中使用 mount 命令可以看到挂载信息。
配置全部容器的 DNS ,也可以在 /etc/docker/daemon.json 文件中增加以下内容来设置。
如果想要手动指定容器的配置,可以在使用 docker run 命令启动容器时加入如下参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是 Docker 的超详细基础教程: ## 什么是 Docker Docker 是一个开源的应用容器引擎,它可以让开发者将应用程序打包成一个容器,然后部署到任何一个支持 Docker 的环境中,而不用担心环境的差异性。 ## 安装 Docker 在安装 Docker 之前,需要先安装一个支持 Docker 的操作系统,如 Ubuntu、CentOS、Debian 等,然后按照以下步骤安装 Docker: 1. 添加 Docker 的官方 GPG 密钥: ```shell curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - ``` 2. 添加 Docker 的 APT 软件源: ```shell sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ``` 3. 更新 APT 软件包索引: ```shell sudo apt-get update ``` 4. 安装 Docker: ```shell sudo apt-get install docker-ce ``` 5. 验证 Docker 是否安装成功: ```shell sudo docker run hello-world ``` 如果输出如下信息,则说明 Docker 安装成功: ``` Hello from Docker! This message shows that your installation appears to be working correctly. ``` ## Docker 基本概念 在使用 Docker 之前,需要了解一些 Docker 的基本概念: ### Docker 镜像 Docker 镜像是一个只读的模板,它可以用来创建 Docker 容器。Docker 镜像是由 Dockerfile 构建而成的,Dockerfile 是一个文本文件,包含了一条条的指令,每条指令都对应着镜像的一层。 ### Docker 容器 Docker 容器是 Docker 镜像的一个运行实例。可以将 Docker 容器看作一个轻量级的虚拟机,它拥有自己的文件系统、网络和进程空间。 ### Docker 仓库 Docker 仓库是用来存储 Docker 镜像的地方,可以将 Docker 仓库看作一个代码仓库,开发者可以将代码提交到仓库中,其他开发者可以从仓库中拉取代码进行开发。 ### Dockerfile Dockerfile 是一个文本文件,包含了一条条的指令,用来构建 Docker 镜像。 ## Docker 常用命令 以下是 Docker 的常用命令: - `docker images`:列出本地所有的 Docker 镜像。 - `docker pull`:从 Docker 仓库中拉取 Docker 镜像。 - `docker run`:创建并启动一个 Docker 容器。 - `docker ps`:列出所有正在运行的 Docker 容器。 - `docker stop`:停止一个正在运行的 Docker 容器。 - `docker rm`:删除一个已经停止的 Docker 容器。 - `docker rmi`:删除一个 Docker 镜像。 - `docker build`:根据 Dockerfile 构建一个 Docker 镜像。 ## Docker 构建镜像流程 以下是 Docker 构建镜像的流程: 1. 编写 Dockerfile; 2. 使用 `docker build` 命令构建 Docker 镜像; 3. 使用 `docker run` 命令创建并启动 Docker 容器。 ## 总结 以上就是 Docker 的超详细基础教程,希望对你有所帮助。Docker 是一个非常强大的工具,可以大大简化开发者的部署流程,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值