ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker基本使用-有这一篇就够了。

2021-12-23 14:34:15  阅读:169  来源: 互联网

标签:一篇 ouge redis 就够 nginx usr docker local


安装Docker CE社区版本


yum remove docker-common

cd /etc/yum.repos.d/

wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce

docker version

docker info

Docker启动


systemctl enable docker        #开机启动

systemctl restart docker        #启动Docker

docker version        #验证安装,查看版本

Docker仓库的配置


vim /etc/docker/daemon.json

{

  "registry-mirrors": ["http://hub-mirror.c.163.com/"]

}

systemctl restart docker

简单使用

docker pull hub-mirror.c.163.com/library/centos:7    # 下载镜像

docker images        # 查看本地镜像

docker tag hub-mirror.c.163.com/library/centos:7 centos:7        #重命名

docker save hub-mirror.c.163.com/library/centos:7 >/tmp/centos.tar        #导出镜像

docker rmi centos:7        #删除镜像

docker load < /tmp/centos7.tar        #镜像导入

docker run -it centos:7 /bin/bash            # i表示交互式,t表示打开一个Shell窗口




docker ps        #查看运行的容器。

docker ps -a        #查看所有容器

docker inspect        #查看容器详细信息,run起来后不会显示作者信息。

docker logs        #查看容器日志

docker rm        #删除容器,-f 强制删除容器

docker stop xxx         # 停止容器

docker start xxx            # 启动容器

启动一个后台的docker

如果没有永久运行的程序,终端一退出容器就会马上退出

容器永久运行的条件:需要有永久运行的程序,并且使用run -d后台启动容器


docker run -d centos:7 /bin/bash -c "while true;do echo ouge; sleep 5; done"        # 启动后台容器

docker exec -it xxx /bin/bash        # 进入后台容器

基于commit制作镜像



docker run -it centos /bin/bash        # 进入容器

yum install net-tools -y        # 安装软件

vi /usr/bin/ougerun        # 编写脚本

while true;do

echo ouge

sleep 5

done




docker commit xx centos:ifconfig         # 生成新的镜像,如果没有指定tag,默认使用latest

基于dockerfile制作镜像

  • Dockerfile使用说明

FROM        #基于哪个基础镜像

MAINTAINER        #代表维护者信息

COPY        #往镜像里添加文件

RUN        #运行命令构建镜像

ENTRYPOINT        #镜像启动时运行的命令,不可替换

CMD        #镜像启动时运行的命令,可替换

  • Dockerfile配置文件实战:/docker/yum163/Dockerfile
FROM centos:7

MAINTAINER ouge 361589194@qq.com

COPY CentOS-Base.repo /etc/yum.repos.d/        # CentOS-Base.repo文件要在本地

RUN yum -y install net-tools


docker build -t centos7:163 /docker/yum163/        # 制作

docker run -it centos7:163 /bin/bash        # 测试是否制作成功

Dockerfile构建nginx镜像

  • Nginx安装脚本/docker/nginx/install.sh

yum install -y wget tar gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

cd /usr/local/src

wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'

tar -zxf nginx-1.14.2.tar.gz

cd nginx-1.14.2

./configure --prefix=/usr/local/nginx && make && make install

\rm -rf /usr/local/src/*

  • nginx启动方式

默认nginx以daemon的方式启动,无永久运行的程序,容器会马上退出:/usr/local/nginx/sbin/nginx

Nginx使用永久运行的方式:/usr/local/nginx/sbin/nginx -g “daemon off;”


Dockerfile文件/docker/nginx/Dockerfile

FROM centos7:163

COPY install.sh /tmp/install.sh

RUN sh /tmp/install.sh

COPY sjgrun /usr/bin/sjgrun

ENTRYPOINT ["sjgrun"]

  • 编写启动脚本sjgrun,加执行权限

#!/bin/bash

/usr/local/nginx/sbin/nginx -g "daemon off;"

  • 制作Nginx镜像

docker build -t ouge:nginx /docker/nginx/

docker inspect ouge:nginx

Dockerfile构建Redis镜像

  • Redis安装脚本/docker/redis/install.sh

yum install -y wget gcc gcc-c++ make tar openssl openssl-devel cmake

cd /usr/local/src

wget 'http://download.redis.io/releases/redis-4.0.9.tar.gz'

tar -zxf redis-4.0.9.tar.gz

cd redis-4.0.9

make && make PREFIX=/usr/local/redis install

mkdir -pv /usr/local/redis/conf/

cp redis.conf /usr/local/redis/conf/

\rm -rf /usr/local/src/*

  • Redis镜像制作配置文件/docker/redis/Dockerfile

FROM centos7:163

COPY install.sh /tmp/install.sh

RUN sh /tmp/install.sh

COPY sjgrun /usr/bin/sjgrun

CMD ["sjgrun"]

  • 编写启动脚本/docker/redis/sjgrun,加执行权限

#!/bin/bash

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

  • 构建Redis镜像

docker build -t ouge:redis /docker/redis/

docker exec -it xxx /bin/bash

/usr/local/redis/bin/redis-cli

构建多个服务成一个镜像就在基础脚本上加就好了。

Docker网络模式


docker network ls        # 查看网络方式

bridge模式        #让容器跟docker0网卡桥接,通过nat上网

host模式        #让容器和宿主机共享网络

none        #关闭容器网络



yum install bridge-utils -y        #网桥工具可以看具体的桥接

brctl show

  • 桥接docker0加端口映射可以实现跟外界通讯

docker run -d -p 8080:80 ouge:nginx

docker run -d -p 172.16.7.211:8080:80 ouge:nginx

docker run -d -p 8080:80 -p 6381:6379 ouge:web        #多端口映射

  • 使用host模式,直接使用宿主机的网络,可直接外界通讯

docker run --net=host -d ouge:web        # 直接就能外网通讯

运行ifconfig查看网卡信息

  • 使用none模式,关闭容器网络,用得比较少

docker run --net=none -d ouge:web        # 只有127.0.0.1网卡

Docker文件共享


mkdir -pv /ouge/logs /ouge/apps

docker run --net=host -d -v /ouge/logs:/usr/local/nginx/logs -v /ouge/apps:/usr/local/nginx/html/apps ouge:nginx

# -v 映射目录,删除容器时不会把映射的文件夹删除。

Docker特权指令

  • 有时候要用到一些容器特殊的指令
route del default gw 172.17.0.1

SIOCDELRT: Operation not permitted

docker run --privileged=true -d ouge:nginx        # --privileged=true开启特权

Docker-compose操作容器

  • Docker-compose安装

curl -L "https://github.com/docker/compose/releases/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

  • 配置文件


/docker/compose/redis/docker-compose.yml

version: '2'

services:

  redis:

    image: ouge:redis

  • 操作命令


docker-compose up -d        #后台启动容器

docker-compose ps        #查看容器

docker-compose down        #停止并删除容器

docker-compose stop; docker-compose start        #停止启动容器

docker-compose exec xxx /bin/bash        # 进入容器

#需要在配置文件所在的目录下执行命令!!

  • 映射端口跟目录

version: '2'

services:

  nginx:

    image: ouge:nginx

    ports:        

    - "8080:80"

    - "9090:80"

    volumes:

    - /ouge/logs:/usr/local/nginx/logs

  • compose同个镜像启动多个容器

docker-compose up -d --scale redis=3        # 启动三个

docker-compose exec --index=2 redis bash        # --index 选择进入的容器

Harbor镜像仓库搭建

  • 需要安装docker,docker-compose

Harbor离线版下载地址offline


tar xf harbor-offline-installer-v2.3.4.tgz

mv harbor /usr/local/

cd /usr/local/harbor

cp harbor.yml.tmpl harbor.yml

./install.sh

默认用户名admin,密码:Harbor12345

Harbor简单使用

  • 配置http的协议访问仓库


{

  "registry-mirrors": ["http://hub-mirror.c.163.com/","http://172.16.7.211/"],

  "insecure-registries":["http://172.16.7.211"]

}

  • 推送镜像

# Harbor上创建一个项目ouge

docker login 172.16.7.211        #需要先登录到Harbor

docker tag ouge:nginx 172.16.7.211/ouge/ouge:nginx    # 打标签

docker push172.16.7.211/ouge/ouge:nginx        # 推送

  • 拉取镜像

 docker pull 172.16.7.211/ouge/ouge:nginx        # 拉取私有仓库需要登录

标签:一篇,ouge,redis,就够,nginx,usr,docker,local
来源: https://blog.csdn.net/qq_28864483/article/details/122106172

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有