docker-01
2019-12-11 本文已影响0人
你好_请关照
docker-01
官网地址:hub.docker.com
1.什么是容器
容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止,容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理
程序: 代码,软件,命令
进程:正在运行的程序
2:容器和虚拟化的区别
虚拟机: 硬件cpu支持(vt虚拟化),模拟计算硬件,走正常的开机启动
bios开机自检--根据bios启动项--读取硬盘第一个扇区grub,uefi, centos7, 加载内核,启动系统第一个进程/sbin/init systemd
容器: 不需要硬件cpu的支持,共用宿主机内核,启动容器的第一个进程,作用于linux 内核上的一个技术
容器优势: 启动快,性能高,损耗少,轻量级,
3:docker-ce的安装
主机名 | 内存 | ip |
---|---|---|
docker01 | 2G | 10.0.0.11 |
docker02 | 2G | 10.0.0.12 |
#安装docker-ce
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
#验证
[root@docker01 yum.repos.d]# docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
4:docker主要内容
docker是一个cs架构, docker主要内容:镜像 容器 仓库 网络 存储 监控
docker是一个软件的打包技术.
docker run -d -p 80:80 nginx:latest docker镜像名称
run 创建并启动一个容器
-d 放后台启动
-p 端口映射
nginx:latest docker镜像名称
5:docker镜像常用命令
docker search 搜索镜像, 优先选官方,stars数量多
docker pull 拉取镜像(下载镜像)
docker push 推送镜像(上传镜像)
docker load 导入镜像
例子: docker load -i docker_nginx.tar.gz
docker save 导出镜像
例子:docker save centos:7 -o docker_centos7.tar.gz
docker images 查看镜像列表
docker rmi 删除镜像
docker tag 给镜像打标签
docker inspect 查看镜像属性
docker history 查看构建的历史
docker
6:docker容器的常用命令
docker run 创建并启动容器
例子:docker run -d -it -p 80:80 nginx:latest
如果不加 -ti bash 命令执行了自动会退出,加-ti 后docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出
docker create 创建容器 --name
docker start 启动容器
docker stop 停止容器
docker restart 重启容器
docker kill 强制停止容器
docker ps 查看容器列表 -a 查看所有容器
docker rm 删除容器
批量删除所有容器 docker rm -f `docker ps -a -q`
docker exec 进入正在运行的容器
例子: docker exec -it 容器id/容器名字 /bin/bash(/bin/sh)
容器的初始命令,必须夯住(前台一直运行),否则容器就会退出.
nginx -g 'daemon off;'
7:docker端口映射
docker run
-p 宿主机端口:容器端口
-p 宿主机ip1:宿主机端口:容器端口
-p 宿主机ip1::容器端口 随机端口映射
-p 宿主机ip1::容器端口/udp 使用udp协议做随机端口映射
-p 80:80 -p 3306:3306
-p 1111-1119:1111-1119 端口范围映射
8:docker数据卷
docker run
-v 宿主机目录:容器目录
-v 容器目录 #创建一个卷,来持久化容器的目录下的数据
--volumes-from 跟某一个容器挂载所有相同的卷
9:手动制作docker镜像
制作一个基于centos系统的nginx镜像(单服务)
思路:还记得上面说的吗?必须使容器的初始命令必须夯住(在前台运行),想办法让启动的服务在前台运行。nginx -g 'daemon off;' 就是让nginx程序在前台运行
1:启动一个纯净的centos:6.9容器,安装nginx
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install nginx -y
2:把安装好服务的容器,提交为镜像
docker container commit eb109f194821 centos6.9_nginx:v1
3:测试镜像的功能
docker run -d -p 82:80 centos6.9_nginx:v1 nginx -g 'daemon off;'
制作一个基于centos6系统的kod网盘的镜像(多服务)
思路:还记得上面说的吗?必须使容器的初始命令必须夯住(在前台运行),那在多服务里也是如此,想办法让最后执行启动的一个服务启动命令在前台夯住,或者使用一个能够持续夯住的命令来实现,比如 tail -f 、top 等
1:启动一个centos6.9_nginx:v1,再安装php
yum install php-fpm php-gd php-mbstring -y
vi /etc/php-fpm.d/www.conf
service php-fpm start
cd /etc/nginx/conf.d/
vi default.conf
mkdir /html
cd /html
wget http://192.168.19.200/191127/kodexplorer4.40.zip
curl -o kodexplorer4.40.zip http://192.168.19.200/191127/kodexplorer4.40.zip
yum install unzip -y
unzip kodexplorer4.40.zip
chown -R nginx:nginx .
vi /init.sh
#!/bin/bash
service php-fpm start
nginx -g 'daemon off;'
2:把安装好服务的容器,提交为镜像
docker commit 47208e3e3796 kod:v2
3:测试镜像的功能
docker run -d -p 83:80 kod:v2 /bin/bash /init.sh
制作一个基于centos7系统的nginx+sshd双服务镜像
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install nginx -y
yum install openssh-server -y
yum install initscripts -y
/usr/sbin/sshd-keygen
echo '123456'|passwd --stdin root
/usr/sbin/sshd -D
vi /init.sh