docker
> windows系统下docker桌面版安装指南
- 先决条件: windows10非家庭版,启用虚拟化
- 设置容器资源
- 设置镜像加速:[阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
```
"registry-mirrors": [
"https://bp10feec.mirror.aliyuncs.com"
]
```
- 阿里云k8s镜像预加载脚本
+ load_images.ps1 for windows
+ load_images.sh for mac
+ 均使用powershell运行
- 安装参考:[k8s-for-docker-desktop](https://github.com/AliyunContainerService/k8s-for-docker-desktop)
- 官方文档:[Docker](https://docs.docker.com/)
> ## docker常用命令
- docker version : docker版本信息
- docker info :详细信息
- docker --help:万能命令
- 文档地址:[Use the Docker command line | Docker Documentation](https://docs.docker.com/engine/reference/commandline)
- #### 镜像命令
+ docker images : 查看镜像
+ docker images --help
+ ```
-a, --all Show all images
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet numeric IDs
```
+ docker search:搜索
+ docker pull:下载
+ docker rmi rf 镜像id:删除镜像
- #### 容器命令
- 有镜像才可以创建容器
- 新建容器并启动
- docker run [可选参数] image
- 参数说明
- --name="Name" 容器名字 用来区分容器
- -d 后台方式运行
- -it 使用交互方式运行,进入容器查看内容
- -p 指定容器端口
- -p ip:主机端口:容器端口
- -p 主机端口:容器端口(常用)
- -p 容器端口
- 容器端口
- 测试,启动并进入容器
- docker run -it centos /bin/bash
- 从容器中退回主机
- exit
- 列出所有正在运行中的容器
- docker ps:当前正在运行的容器
- docker ps -a:历史运行过的容器
- docker ps -q:只显示容器编号
- 退出容器
- exit # 直接容器停止并退出
- Ctrl + P + Q # 直接容器不停止并退出
- 删除容器
- docker rm 容器id 删除指定容器
- docker rm -f $(docker pd -aq)
- 启动和停止容器的操作
- docker start 容器id # 启动容器
- docker restart 容器id # 重启
- docker stop 容器id # 停止正在运行的容器
- docker kill 容器id # 强制停止当前容器
- 例如
- 用bash命令启动centos:Docker run -it centos /bin/bash
- #### 日志、元数据、进程查看
- 后台启动容器
```
docker run -d 镜像名
docker后台启动必须要有对应的前台进程,否则启动后会自动停止
```
- 查看日志
- docker logs (docker logs -tf --tail 10 容器id:以字符串的形式显示所有log
- 查看容器中的进程信息
```
docker top 容器id
```
- 查看镜像元数据
```
docker inspect 容器id
```
- 进入当前正在运行的容器
```
docker exec -it ID /bin/bash # 进入容器后会开启一个新的终端,可以操作
docker attach -ID # 正在执行当前的代码
```
- 从容器内拷贝文件到主机上
```
docker cp ID:容器内路径 目标主机路径
```
- docker process overview(小结)
![](C:\Users\yuanyhua\Desktop\D\learningDOC\img\docker overview.png)
```
attach # 当前shell下的attach链接指定运行镜像 Attach to a running container
build # 通过DockerFile 定制镜像 Build an image from a DockerFile
commit # 提交当前容器为新的镜像 Create a new image from a container’s changes
cp # 从容器中拷贝指定文件或目录到宿主机中 Copy files/folders between a container and the local filesystem
create #创建一个新的容器,同run,但不启动容器 Create a new container
diff # 查看docker容器变化 Inspect changes to files or directories on a container’s filesystem
events # 从docker服务获取容器实时事件 Get real time events from the server
exec # 在已存的容器上运行命令 Run a command in a running container
export # 导出容器的内容流作为一个tar归档文件[对应import] Export a container’s filesystem as a tar archive
history # 展示一个镜像形成历史 Show the history of an image
images # 列出系统当前镜像 List images
import # 从tar包中的内容创建一个新的文件系统映像 Import the contents from a tarball to create a filesystem image
info # 显示系统相关信息 Display system-wide information
inspect # 查看容器详细信息 Return low-level information on Docker objects
kill # kill指定docker容器 Kill one or more running containers
load # 从一个tar包中加载一个镜像 Load an image from a tar archive or STDIN
login # 注册或者登录一个docker源服务器 Log in to a Docker registry
logout # 从当前docker registry退出 Log out from a Docker registry
logs # 输出当前容器日志信息 Fetch the logs of a container
port # 查看映射端口对应的容器内部源端口 List port mappings or a specific mapping for the container
pause # 暂停容器 Pause all processes within one or more containers
ps # 列出容器列表 List containers
pull # 列出容器列表 Pull an image or a repository from a registry
push # 推送指定镜像或者库镜像至docker源服务器 Push an image or a repository to a registry
restart # 重启运行的容器 Restart one or more containers
rm # 移除一个或多个容器 Remove one or more containers
rmi # 移除一个或多个镜像[无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或-f 强制删除 Remove one or more images]
run # 创建一个新的容器并运行一个命令 Run a command in a new container
save # 保存一个镜像为一个tar包 Save one or more images to a tar archive (streamed to STDOUT by default)
search # 在dockerhub中搜索镜像 Search the Docker Hub for images
start # 启动容器 Start one or more stopped containers
stop # 停止容器 Stop one or more running containers
tag # 给源中镜像打标签 Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top # 查看容器中运行的进程信息 Display the running processes of a container
unpause # 取消暂停容器 Unpause all processes within one or more containers
version # 查看docker版本号 Show the Docker version information
wait # 截取容器停止时的退出状态信息 Block until one or more containers stop, then print their exit codes
```
> ## docker安装nginx
> ## docker安装tomcat
```
官方使用
docker run -it --rm tomcat:9.0 # tomcat用完即删
下载启动
docker pull tomcat
启动运行(容器)
docker run -d -p 3355:8080 --name tomcat01 tomcat
测试
进入容器
docker exec -it tomcat01 /bin/bash
```
> ## 可视化
- portainer
+ 图形化界面管理工具!提供一个后台面板供我们操作
```
docker run -d -p 8088:9000
```
- Rancher(CI/CD)
> ## Docker镜像讲解
+ 镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和机遇环境开发的软件,它包含运行某个软件所需要的代码,运行时、库、环境变量和配置文件。所有的应用。直接打包docker镜像,就可以直接跑起来
+ Docker镜像加载原理:
> Unions(联合文件系统)
文件系统是一种分层、轻量级、并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不通目录挂载到同一个虚拟文件系统下,union文件系统是docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像可以制作各种具体的应用镜像。
特性: 一次加载多个文件系统,但从外面只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
> Dockerj镜像加载原理
> commit镜像
- docker commit 提交容器成为一个新的副本
- docker commit -m "提交描述信息" -a "作者" imageID ImageName [tag]
> 实战测试
- 启动一个默认的tomcat, 没有webapps应用,镜像的原因,官方默认webapps下无文件
- 我自己拷贝进去了基本文件
- 将我们操作过的容器通过commit提交为一个新的镜像供以后使用;目录的挂载,将容器的目录挂载到linux系统上
> ## 容器数据卷
- 容器间的数据共享技术,将Docker容器产生的数据同步到本地
> ### 容器数据卷
- 方式1:直接使用命令来挂载 -v
+ docker run -it -v 主机目录:容器内目录。例如,docker run -it -v /home.ceshi:/home centos /bin/bash
- 启动起来的时候可以通过docker inspect imageID来查看挂载情况(Mounts目录);
- DockerFile
- Dockerfie被用来构建docker镜像
- 具名和匿名挂载
+ 匿名挂载: ` docker run -d -p --name nginx01 -v /etc/nginx/nginx`;
+ 查看所有volume的情况: docker volume ls
+ 具名挂载: ` docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx`;
+ 所有docker容器内的卷,在没有指定目录的情况下,存放路径为`/var/lib/docker/volumes/juming-nginx/_data`
+ 查看数据卷: ` docker volume inspect juming-nginx`
+ 区分具名挂载和匿名挂载
+ -v 容器内路径 # 匿名挂载
+ -v 卷名:容器内路径 # 具名挂载
+ 、宿主机路径::容器内路径 # 指定路径挂载
+ 拓展
1. `ro: 只读, rw:可读可写`
```
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
```
- 数据卷容器
- 容器数据同步: --volumes-from, 数据会拷贝到多个容器
> ## DockerFile
- dockerfile是用来构建docker镜像的文件,命令参数脚本
- 构建步骤
1. 编写一个dockerfie文件
2. docker build 构建成为一个镜像
3. docker run 运行镜像
4. docker push发布镜像(dockerhub,阿里云镜像库)
5. 指令
1.
> ## Docker网络