博客
关于我
docker
阅读量:350 次
发布时间:2019-03-04

本文共 4278 字,大约阅读时间需要 14 分钟。

Docker

安装Docker

环境准备

1、需要会linux基础

2、CentOS 7

3、使用Xshell链接远程服务器进行操作

环境查看

# 系统内核是 3.10 以上的[root@iz2ze50r0dljy72rs9ihxwz /]# uname -r3.10.0-514.26.2.el7.x86_64
# 系统版本[root@iz2ze50r0dljy72rs9ihxwz /]# cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装

帮助文档:

# 1、卸载旧的版本yum remove docker \                  docker-client \                  docker-client-latest \                  docker-common \                  docker-latest \                  docker-latest-logrotate \                  docker-logrotate \                  docker-engine                  # 2、需要的安装包yum install -y yum-utils# 3、设置镜像的仓库yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推荐使用阿里云的,比较块# 更新yum软件包索引yum makecache fast# 4、安装docker的相关的内容  docker-ce 社区版  ee 企业版yum install docker-ce docker-ce-cli containerd.io# 5、启动dockersystemctl start docker# 或者service start docker# 6、使用docker version检测是否安装成功
image-20210224152435530
# 7、hello worlddocker run hello-world

image-20210224152714831

# 8、查看镜像docker image

了解:卸载docker

# 1.卸载依赖yum remove docker-ce docker-ce-cli containerd.io# 2.删除资源rm -rf /var/lib/docker

阿里云镜像加速

阿里 容器镜像服务

image-20210224153046170

镜像加速器

image-20210224153246163

  1. 配置使用
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{     "registry-mirrors": ["https://qluijt25.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart dockersudo service restart docker

Docker run hello-world 流程

image-20210224155752658

底层原理

Dockers是怎么工作的?

docker是一个Client - Server 结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。

Docker 基本命令

帮助命令

docker version     # docker的系统信息docker info        # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help  # 帮助命令

镜像命令

image-20210224160517002

image-20210224160538384

可视化

  • portainer (先用这个)
docker run -d -p 8080:9000 \--restart=always -v /var/run/docker.sock:var/run/docker.sock --privileged=true portainer/portainer
  • Rancher(CI/CD再用)

什么是portainer?

Docker图形化界面管理工具!提供一个后台面板供我们操作!

docker run -d -p 8080:9000 \--restart=always -v /var/run/docker.sock:var/run/docker.sock --privileged=true portainer/portainer
# docker 常用命令docker imagesdocker run -i   # 以交互模式运行容器,通常与 -t 同时使用;docker run -t   # 为容器重新分配一个伪输入终端,通常与 -i 同时使用docker run -d   # 后台运行容器,并返回容器IDdocker ps       # 查看运行是否成功docker ps -a    # 查看容器docker run --name  # 容器名docker run -p   # 指定端口映射,格式为:主机(宿主)端口:容器端口docker run -v   # 指定容器目录 为 主机下的某个目录
# 实例docker run -d -p 8888:8080 -v /root/tomcat/:/usr/local/tomcat/webapps/ tomcatdocker run -it centos /bin/bashdocker run -d -p 8080:8080 --name tomcat01 tomcatcurl -i url
# 进入镜像docker exec -it tomcat01 /bin/bash# docker 运行并进入docker run -it centos /bin/bash# 退出容器exit                # 停止容器并退出Ctrl + P + Q        # 不停止 退出
# 删除容器docker rm 容器id                # 删除指定容器,不能删除正在运行的容器,-f可以docker rm -f $(docker ps -ap)   # 删除所有容器docker ps -aq | xargs docker rm # 删除所有容器
# 启动容器docker start 容器iddocker restart 容器id# 停止docker stop 容器id# 停止docker kill 容器id 强制

docker 文件拷贝

方法一:

从主机复制到容器docker cp host_path containerID:container_path从容器复制到主机docker cp containerID:container_path host_path

方法二

# 用-v挂载主机数据卷到容器内docker run -v host_path:container_path $container# 在容器内拷贝cp /mnt/sourcefile /path/to/destfile

方法三:用输入输出符

Docker 分层原理

UnionFS 联合文件系统

Docker热挂载

参考:

Docker 安装nginx

1、可能遇到的坑

iptables: No chain/target/match by that name.

原因:

如果再启动docker service的时候网关是关闭的,那么docker管理网络的时候就不会操作网关的配置(chain docker),然后网关重新启动了,导致docker network无法对新container进行网络配置,也就是没有网管的操作权限,做重启处理。

解决方法

# 重启service docker restart或systemctl restart  docker

使用的centos7服务器,在部署docker的过程中,因端口问题有启停firewalld服务,在centos7里使用firewalld代替了iptables。在启动firewalld之后,iptables还会被使用,属于引用的关系。所以在docker run的时候,iptables list里没有docker chain,重启docker engine服务后会被加入到iptables list里面。(有必要深入研究一下docker network)

另一个解决方法

# 关闭网关systemctl stop firewalldsystemctl stop iptables

2、安装

docker pull nginxdocker run --name ngnix01 -p 8080:80 -d nginx

配置

linux的/etc目录是存放所有的系统管理所需要的配置文件和子目录

docker 中的ngnix的配置文件放在 /etc/nginx/下

3、注意点

不像windows中的nginx的配置直接放在nginx.conf中,docker中的nginx有关 / 的配置放到了/etc/nginx/conf.d目录下的default.conf中

转载地址:http://wtsq.baihongyu.com/

你可能感兴趣的文章
mysql 状态检查,备份,修复
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>