docker 学习笔记
docker官网:docker.com
dockerHub --安装docker镜像的仓库,国外的仓库访问慢,国内可以使用阿里云。
docker的基本组成
- 镜像 image
- 容器 container
- 仓库 repository
docker 常用命令
1、帮助启动类命令
- 启动docker: systemctl start docker
- 停止docker: systemctl stop docker
- 重启docker: systemctl restart docker
- 查看docker状态: systemctl status docker
- 开机启动: systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker总体帮助文档: docker --help
- 查看docker命令帮助文档: docker 具体命令 --help
2、镜像命令
docker images list : 列出本地主机上的镜像
docker search 名称: 查找某个镜像
docker search ubuntu --limit 2
docker pull 名称【:TAG】:下载docker镜像
docker pull ubuntu
docker system df: 查看镜像。容器、数据卷 所占用的空间
docker rmi IMAGE_ID :删除镜像
docker commit:提交容器副本使其成为一个新的镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
3、容器命令
-
新建+启动容器
docker run [OPTIONS] IMAGE COMMAND
说明:有些参数是一个减号、有些参数是两个减号- –name=“容器的新名字” : 为容器指定一个名称
- -d: 后台运行容器并返回容器的ID,即启动守护式容器(后台运行)
- -i: 以交互式运行容器,通常结合-t使用
- -t: 为容器重新分配一个伪输入终端
- -P: 随机端口映射,大写P
- -p:指定端口映射,小写p
参数 说明
-p ip:hostPort:containerPort 端口映射 -p 10.0.0.100:8080:80
-p hostPort:containerPort 端口映射 -p 8080:80
docker run -it --name=my_ubuntiu ubuntu /bin/bash
-
列出所有当前运行的容器
docker ps [OPTIONS]
-a: 列出当前所有正在运行的容器+历史上运行过的
-l: 显示最近创建的容器
-n: 显示最近n个创建的容器
-q: 静默模式,只显示容器编号
docker ps -
退出容器
方式1
使用命令:exit
run 进入容器,exit退出,容器停止
方式2
使用快捷键: ctrl+p+q
run进入容器,ctrl+p+q退出,容器不会停止 -
启动已经停止的容器
docker start 容器ID或者容器名称 -
重启容器
docker restart 容器ID或者容器名称 -
停止容器
docker stop 容器ID或者容器名称 -
强制停止容器
docker kill 容器ID或者容器名称 -
删除已停止的容器
docker rm 容器ID或者容器名称 -
查看容器日志
docker logs 容器ID -
查看容器运行的进程
docker top -
查看容器内部细节
docker inspect 容器ID -
进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
docker exec -it ID /bin/bash
docker attach 容器ID
说明:attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止。
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器停止。 -
从容器内部拷贝文件到主机
docker cp 容器ID:容器内路径 目的主机路径 -
导入和导出容器
export导出容器的内容作为一个tar归档文件
docker export 容器ID > 文件名.tar
import从tar包中的内容创建一个新的文件系统再生成为镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:版本号
4、docker镜像
待补充 原理
是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包成一个可交付的运行环境(代码运行时需要的库文件、环境变量和配置文件等),这个打包好的运行时环境就是image镜像文件。
只有通过镜像才能生成docker实例。
引申:
-
UnionFS(联合文件系统):是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交,来一层层的叠加,同时可以将不同的目录挂载到同一个虚拟文件系统下。UnionFS是docker镜像的基础。
-
需要创建一个本地的私人仓库,供团队使用,基于公司内部项目构建镜像。
Docker Registry是官方提供的工具,可以构建镜像仓库
1.下载镜像 docker pull registry
2.运行私有库Registry,相当于本地有个私有Docker hubdocker run -d -p 500:500 -v /tda/myregistry:/tmp/registry --privileged=true registry docker ps
3.案例演示创建一个新镜像:Ubuntu安装ifconfig命令
apt-get install net-tools
4.curl验证私服库上有什么镜像
curl -XGET http://192.168.111.162:500/v2/_catalog5.将新镜像 Ubuntu:1.2修改为符合私服规范的Tag
docker tag ubuntu:1.2 192.168.111.168/ubuntu:1.2
6.修改配置文件使其支持http
cat /etc/docker/daemon.json
在文件内部增加,取消Docker默认不允许http方式推送镜像,重新启动Docker
“insecure-registries”:[“192.168.111.168:500”]
7.push推送到私服库
docker push 192.168.111.168/ubuntu:1.2
8.curl验证私服库上有哪些镜像
9.pull到本地运行
docker pull 192.168.111.168:500/ubuntu:1.2
5、容器数据卷
docker run -d -p 500:500 -v /zz/myhostRegistry:/tmp/registry --privileged=true registry
默认情况下,仓库被创建在容器的/var/lib/registry目录下。
建议自行创建容器映射,方便主机联调。
5.1 坑:容器记得卷加入–privileged=true
docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决版办法:在挂载目录后多加一个privileged参数即可
扩大容器的权限解决挂载目录没有权限的问题,使用该参数,container内的root拥有了真正的root权限,否则,container内的root只是外部的一个普通用户权限。
5.2 数据卷的目的
用容器数据卷的方式,完成数据的持久化,重要数据做备份。
容器内的数据备份,并持久化本地。
5.3 什么是数据卷
卷就是目录或文件,存在一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System(不属于容器),用于一些持久化存储或数据共享。
数据卷完全独立于容器的生存周期,因此docker删除容器后,数据卷仍能保持。
将docker容器内的数据保存进宿主机的磁盘中。
5.4 如何运行带有容器卷存储功能的容器实例
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 /bin/bash
docker 会自建没有的目录
1)查看容器是否挂载成功
docker inspect 容器id
2)容器映射读写规则
默认创建时,容器内部:可读可写
但docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 /bin/bash
创建实现容器内部:只读不可写
ro -->read only
3)卷的继承与共享
要求:
容器1完成和宿主机的映射,容器2继承容器1的卷规则
关键点:
docker run -it --privileged=true --volumes-from 父类 --name container2(名称或ID) ubuntu文章来源:https://www.toymoban.com/news/detail-540535.html
实现:文章来源地址https://www.toymoban.com/news/detail-540535.html
docker run -it --privileged=true -v /myhost/share:/tmp/share --name container1 ubuntu
docker run -it --pricileged=true --volumes-from container1 --name container2 ubuntu
到了这里,关于docker 学习笔记1-基础命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!