博客
关于我
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 CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
mutiplemap 总结
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>