docker

Docker

安装Docker

环境准备

1、需要会linux基础

2、CentOS 7

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

环境查看

# 系统内核是 3.10 以上的
[root@iz2ze50r0dljy72rs9ihxwz /]# uname -r
3.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、启动docker
systemctl start docker
# 或者
service start docker

# 6、使用docker version检测是否安装成功
image-20210224152435530
# 7、hello world
docker 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/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://qluijt25.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker
sudo 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 images
docker run -i   # 以交互模式运行容器,通常与 -t 同时使用;
docker run -t   # 为容器重新分配一个伪输入终端,通常与 -i 同时使用
docker run -d   # 后台运行容器,并返回容器ID
docker 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/ tomcat

docker run -it centos /bin/bash

docker run -d -p 8080:8080 --name tomcat01 tomcat

curl -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 容器id
docker 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容器动态添加Volume

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 firewalld

systemctl stop iptables

参考

2、安装

docker pull nginx
docker 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中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值