docker(持续更新中)
Posted 小蜗牛爱远行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker(持续更新中)相关的知识,希望对你有一定的参考价值。
-
docker启动:docker daemon -g /home/dockeruser/mydocker:在新的目录中的启动docker
-
docker启动容器:
- docker run --detach(-d) --name web nginx:latest:创建守护进程
- docker --interactive --tty(可以组合:-it) --link web:web --name web_test busybox:latest /bin/sh:创建虚拟终端,并绑定标准输入或输出到运行中的容器
-
docker导出:
- 导出容器:docker export 容器名称(推荐)-o aaaaaa.tar
- 导出镜像:推荐:docker save 容器名称 -o aaaaaa.tar;不推荐:docker save 镜像ID(导入时需要重新命名) -o aaaaa.tar
-
docker导入:
- 导入镜像(推荐):docker load < fileName.tar 或docker load -i fileName.tar
- 导入容器(生成的也是镜像):docker import fileName.tar REPOSITORY:TAG
- docker import:丢弃了所有的历史记录和元数据信息,仅保存容器当时的快照状态。在导入的时候可以重新制定标签等元数据信息;
- docker load:将保存完整记录,体积较大
-
docker 命名:
- 镜像命名:docker tag 镜像ID REPOSITORY:TAG
- 容器重命名:docker rename 原名称 新名称
-
docker容器中运行额外进程:
- docker exec -d --name web busybox:latest /bin/sh -c “sleep 3000”
-
docker查看命令:
- 查看日志
docker logs 容器名称 - 查看容器配置信息:
docker inspect -f “json .Config.Env” centos8
docker inspect -f “json .Mounts” centos8
- 查看日志
-
创建只读容器:
- –read-only 标志创建容器时,会将挂载的容器文件系统设置为只读,防止容器被修改
-
容器重启策略:
- –restart 标志,系统故障时自动重试,时间间隔为上次重启时间翻倍
-
docker项目设计:
- 镜像适合打包和分发相对静态的文件,如程序;
- 存储卷则持有动态或专门数据
- 绑定挂载卷:指向主机文件系统上用户指定的位置
- 文件映射:docker run -d --name myweb -v /home:/usr/local/apache2/htdocs -p 80:80 httpd:latest 冒号前本机路径,冒号后docker的httpd运行的容器文件路径,可在页面展示
- 文件映射只读模式:docker run -d --name myweb -v /home:/usr/local/apache2/htdocs/:ro -p 80:80 httpd:latest
- 创建一个与宿主机共享卷容器
docker run -itd -v /home:/home/gy -v ~/web-logs-example:/home/web-logs-example --name myos1 0d120b6ccaa8 /bin/bash - 复制任何本卷所有引用的源容器到新的容器中
docker run --name myos2 --volumes-from myos --volumes-from myos1 0d120b6ccaa8 ls -l /home/
-
docker容器删除:
- 删除所有未运行的容器和卷,-v防止产生孤立卷
docker rm -v $(docker ps -aq) - 删除虚悬镜像(这个镜像既没有仓库名,也没有 标签,均为)
docker image prune或者docker rmi $(docker images -q -f dangling=true) - 删除同镜像ID不同tag的镜像:docker rmi REPOSITORY:TAG
- 删除所有未运行的容器和卷,-v防止产生孤立卷
-
docker网络设置:
- docker -d -icc=false:跨容器通信被禁止,除非被显式允许的流量
-
docker容器八个命名空间(可能会有更新):
- MNT:文件系统 访问和结构
- NET:网络访问和结构
- UTS:主机和域名
- USR:用户名和标识符
- IPC:通过共享内存进行通讯
- PID:进程标识符和进程能力
- Cgroups:资源保护
- chroot():控制文件系统跟目录的位置
-
docker添加私有仓库:
-
vim /etc/docker/daemon.json #添加信息,远程仓库和私有仓库 "registry-mirrors": [ "https://pak31uuv.mirror.aliyuncs.com", "https://registry.docker-cn.com" ], #私有仓库地址 "insecure-registries": [ "私有仓库IP地址" ] #重启docker systemctl restart docker
-
-
docker使用Harbor管理镜像
- docker镜像上传的一套操作:
-
dokcer login 私有镜像IP:端口 -u admin -p 123456 docker build -t REPOSITORY:TAG Dockerfile所在文件夹 docker tag REPOSITORY:TAG 私有镜像IP:端口/Harbor创建的项目/REPOSITORY:TAG docker push 私有镜像IP:端口/Harbor创建的项目/REPOSITORY:TAG #push报错"received unexpected HTTP status: 500 Internal Server Error" #修改:vim /etc/selinux/config ---> SELINUX=disabled
-
- docker镜像上传的一套操作:
-
问题:
- 已经创建的容器可以修改那些参数?
- 多个容器之间怎么相互通讯关联?
以上是关于docker(持续更新中)的主要内容,如果未能解决你的问题,请参考以下文章