美文网首页
docker笔记

docker笔记

作者: 小镇青年Jack | 来源:发表于2019-11-20 00:59 被阅读0次

docker

1.什么是容器

容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,ip地址,主机名等
进程:正在运行的程序

2.容器和虚拟化的区别

linux容器技术,容器虚拟化和kvm虚拟化的区别

kvm虚拟化: 需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)

linux开机启动流程
bios开机硬件自检
根据bios设置的优先启动项
读取mbr引导 UEFI(gpt分区)
加载内核
启动第一个进程

容器虚拟化:不需要硬件的支持。不需要模拟硬件,共用宿主机的内核,启动时间秒级(没有开机启动流程)
总结:

(1)与宿主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
(4)避免了准虚拟化和系统调用替换中的复杂性;
(5)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享

![7{F5C~2${{CCF6]C23WM}K7.png](https://img.haomeiwen.com/i17149576/0e706b0881e720d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

docker安装

yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install docker-ce
# 检查
docker version

搜索镜像相关命令

# 搜索镜像
docker search centos
# 安装jq命令, 转化为json格式
yum install jq
curl -s https://registry.hub.docker.com/v1/repositories/centos/tags|jq
docker pull centos:7
# 查看目前的镜像
docker images
# 导出
docker save centos:7 -o centos-v7.tar
docker save centos:7 > centos-v7.tar (或者)
# 删除
docker rmi centos:7
# 导入
docker load -i centos-v7.tar
docker load < centos-v7.tar (或者)

容器相关命令

启动容器
查看当前正在运行的容器
docker ps
    
查看正在运行以及停止运行的容器
docker ps -a
    
启动一个容器并保持不退出
docker run -it -d centos:7 /bin/bash 
    
启动一个容器并保持不退出并自定义命名
docker run --name mycentos -it -d centos:7 /bin/bash 
    
进入一个容器里
docker exec -it 容器ID /bin/bash
    
停止一个容器
docker stop 容器ID
     
启动一个已经停止的容器
docker start 容器ID
     
查看容器的详细信息
docker inspect 容器ID
    
批量停止所有运行的容器
docker stop $(docker ps -q)
    
批量删除所有的容器
docker rm $(docker ps -qa)

端口映射

指定端口映射
    docker run -p 8080:80 -d nginx:latest 
    
随机端口映射
    docker run -P -d nginx:latest 

数据目录映射

1.宿主机目录映射到容器里:
小项目:运行一个小游戏
mkdir /data/ -p
cd /data 
上传软件
unzip xiaoniaofeifei.zip -d xiaoniao
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker run -d -p 80:80 -v /data/xiaoniao:/usr/share/nginx/html nginx:latest
docker ps


2.映射单个文件,映射多个目录
unzip html5.zip -d game
cat >/data/game.conf<<EOF
server {
    listen       8080;
    server_name  localhost;
    location / {
        root   /opt/game/;
        index  index.html index.htm;
    }
}

server {
    listen       8090;
    server_name  localhost;
    location / {
        root   /opt/xiaoniao/;
        index  index.html index.htm;
    }
}
EOF

docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker run -d -p 8080:8080 -p 8090:8090 -v /data/xiaoniao:/opt/xiaoniao -v /data/game:/opt/game -v /data/game.conf:/etc/nginx/conf.d/game.conf nginx:latest
docker ps

基于centos镜像制作自定义游戏镜像

docker run -it centos:7 /bin/bash
yum install wget install openssh-clients -y
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
cat >/etc/yum.repos.d/nginx.repo<<EOF  
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
yum makecache fast
yum install nginx -y
scp -r 10.0.1.51:/data/* /opt/
mv /opt/game.conf /etc/nginx/conf.d/
docker ps
docker commit 容器ID game:v1
docker images
docker save game:v1 > game-v1.tar
docker load < game-v1.tar
docker run -p 8080:8080 -p 8090:8090 -d game:v1 nginx -g 'daemon off;'

手动自定义云盘镜像

docker run -it centos:7 /bin/bash
yum install wget install openssh-clients unzip -y
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
cat >/etc/yum.repos.d/nginx.repo<<EOF  
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
yum makecache fast
yum install nginx php-fpm php-mbstring php-gd -y
sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf
sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf
sed -i '/daemonize/s#no#yes#g' /etc/php-fpm.conf     
php-fpm -c /etc/php.ini -y /etc/php-fpm.conf
ps -ef|grep php

cat> /etc/nginx/conf.d/cloud.conf <<EOF  
server {
    listen 80;
    server_name localhost;
    root /code/kod;
    index index.php index.html;

    location ~ \.php\$ {
        root /code/kod;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF
rm -rf /etc/nginx/conf.d/default.conf 
nginx -t
nginx 
mkdir /code
scp 10.0.1.51:/data/kodexplorer4.40.zip 
unzip kodexplorer4.40.zip -d kod
chown -R nginx:nginx /code/
cat >init.sh<<EOF
#!/bin/bash
php-fpm -c /etc/php.ini -y /etc/php-fpm.conf
nginx -g 'daemon off;'
EOF 
chmod +x init.sh
docker commit 9e691858a4bd kod:v1
docker run -p 80:80 -v /data/kod/data:/code/kod/data/ -d kod:v1 /bin/bash /root/init.sh

使用dockerfile自定义云盘镜像

1.创建目录
[root@db01 ~/docker]# tree -L 1 kod
kod
├── code
├── conf
├── dockerfile
└── repo


2.拷贝文件到指定目录
[root@db01 ~/docker]# tree
.
├── kod
│   ├── code
│   │   └── kodexplorer4.40.zip
│   ├── conf
│   │   ├── cloud.conf
│   │   ├── init.sh
│   │   ├── php-fpm.conf
│   │   └── www.conf
│   ├── dockerfile
│   └── repo
│       └── local.repo
└── kod.tar.gz

3.运行编译命令
docker build --network=host -t centos_kod:v1 .

4.启动容器
docker run -p 80:80 -d centos_kod:v1

私有仓库

1.下载软件包
cd /opt
wget https://github.com/goharbor/harbor/releases/download/v1.9.3/harbor-offline-installer-v1.9.3.tgz
tar xf harbor-offline-installer-v1.9.0-rc1.tgz

2.修改配置
cd harbor/
vim harbor.yml 
hostname: 10.0.1.11
harbor_admin_password: 123456

3.下载docker-compose
yum install docker-compose -y 

4.安装harbor
./install.sh

5.修改镜像名称
docker tag 019a54813db0 10.0.1.51/linux/centos_kod:v3

6.修改docker配置添加信任仓库
cat >/etc/docker/daemon.json<<EOF 
{
  "registry-mirrors": ["https://ig2l319y.mirror.aliyuncs.com"],
  "insecure-registries": ["http://10.0.1.51"] 
}
EOF

7.docker登录到harbor
docker login 10.0.1.51

8.上传镜像到私有仓库
docker push 10.0.1.51/linux/centos_kod:v3

9.客户端使用仓库下载镜像
 docker run -p 8080:80 -d 10.0.1.51/linux/centos_kod:v3 

相关文章

网友评论

      本文标题:docker笔记

      本文链接:https://www.haomeiwen.com/subject/nnrnictx.html