系统运维
使用CentOS在线安装:
yum install epel-release ##安装epel源,需要开启CentOS的yum源
yum install docker -y ##同时安装docker-cli客户端
setenforce 0 ##设置selinux为disable并重启
systemctl start docker
官方最新CE版安装:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo ##官方repo源获取
(阿里云源安装:wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo)
yum list docker-ce –showduplicates | sort -r ##查看版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
docker –version ##测试是否安装成功
(版本升级删除旧版本:yum remove docker docker-common docker-selinux docker-engine)
Docker加速配置:
前提:方式不可同时使用、配置完成需要重启daemon
方式一:
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
registry-mirrors: [https:/jzngeu7d.mirror.aliyuncs.com]
}
EOF
方式二:
vim /etc/sysconfig/docker
OPTIONS=\’–selinux-enabled –log-driver=journald –signature-verification=false –registry-mirror=http://hub-mirror.c.163.com \’
if [ -z ${DOCKER_CERT_PATH} ]; then
DOCKER_CERT_PATH=/etc/docker
fi
查看镜像:docker images == docker image ls
docker image build ##
docker image history ##
docker image inspect ##查看镜像属性信息
docker image pull/push nginx:1.11 ##拉去和推送指定版本镜像
docker image rm nginx == docker rmi nginx
docker image save、tag、load、import、 ##image可省略
查看信息:docker info ##使用docker –help查看可使用命令
镜像重新标记:docker tag 621d57f27e93 test:1.0
下载镜像:docker pull hub.c.163.com/library/mysql:latest ##阿里云提供镜像加速器:cr.console.aliyun.com
上传镜像:docker push
保存镜像:docker save Mysql:5.6.34 > /opt/MYSQL-5.6.34.tar.gz
加载镜像:docker load < /opt/mysql-5.6.34.tar.gz
导出镜像:docker image export 容器id > xxx.tar(导出容器文件系统到tar归档文件)
导出镜像:docker image import xxx.tar test:latest(导入容器文件系统tar归档来创建镜像)
查看容器:docker ps ##-a 查看所有,-aq查看ID,杀死容器docker rm -f ID
运行容器:(需要每个容器必要的参数指定)
docker run –restart=always –name=db -dit -p 3306:3306
-e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=数据库名 hub.c.163.com/library/mysql
docker run -p 3306:3306 mysql:5.6.34 ##指定容器中镜像版本来启动,如果未指定则会到镜像服务器中下载
docker container run:(其中container可以省略)
-p:作端口映射
-d:后台运行
-v 宿主机目录:容器目录 :宿主机目录映射到容器,可用于做数据库的数据保存
-it:交互式分配tty
-e:添加变量,格式“-e y=abc”
–name:在容器中命名
–ip string:设置容器ip,只能用于自定义网络
–restart=always:当容器退出时重启,默认为no
–add-host list:添加其他主机到容器中/etc/hosts
–dns list:设置DNS服务器
–mount mount:挂载宿主机分区到容器
–memory:容器可以使用最大内存量,-m
–memory-swap:允许使用交换内存量
–memory-swappiness=<0-100>:容器使用swap分区的百分比,默认为-1
–oom-kill-disable:当宿主机内存不足时,内核会杀死容器中的进程,建议使用-m参数之后再使用此参数
–cpus:限制容器使用cpu资源
–cpuset-cpus:限制容器使用特定cpu
docker start container_id1,container_id2……
docker stop ……
docker restart ……
docker top container_id ##查看指定容器中的进程
docker stats container_id:查看资源使用情况
docker port container_id:查看端口映射
docker update [options] container_id:在线调整内存、cpu限制(-c、-m)
docker inspect 容器id ##查看所有属性
docker cp 宿主机目录 容器名:/目录 ##实现文件复制,也可反过来复制
docker exec 容器id ip a ##查看分配的IP
docker exec -it 容器id bash ##-it分配终端,之后运行bash命令,之后输入的命令是在容器中输入和输出的
docker container attach 容器id ##进入容器系统,退出使用“Ctrl+p+q”
docker commit 容器名 镜像名:tag ##将改变的数据保存并重新生成新的镜像,实现数据持久化(重启、删除数据都不会丢失)
docker logs 容器id ##查看日志,容器id使用“docker ps”查看
docker rm -fv 容器id ##删除容器,也可tag、短ID
docker rm $(docker ps -qa) ##批量删除容器
docker rmi -f REPOSITORY:TAG(或者镜像id) ##删除镜像
Docker主机数据挂载到容器:
① volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
② bind mounts:可以存储在宿主机系统的任意位置
③ tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统
Docker网络管理:
支持的网络模式:docker network ls
① bridge:默认网络,Docker启动后默认创建一个docker0网桥,默认创建的容器会添加到这个网桥中
② host:不会获取network namespace,而是与宿主机共用一个
③ none:获取独立的network namespave,但不配置任何网络
④ container:与指定容器使用同一个network namespave,使用 –net=container:NAME_or_ID 指定
⑤ 自定义:自定义网桥,默认与bridge网络一样
docker私有仓库的搭建:
DockerHub:docker官方维护的一个公共仓库(https://hub.docker.com,其中包括了15000多个的镜像)
DockerPool:国内专业的docker技术社区(http://www.dockerpool.com,也提供官方镜像的下载)
搭建步骤:
① 先拉取registry镜像(用来启动仓库)和busybox镜像(用来上传)
docker pull registry
docker pull busybox
② 使用docker tag命令将这个镜像标记为x.x.x.x:5000/busybox
docker tag docker.io/busybox x.x.x.x:5000/busybox
docker images ##查看镜像
③ 修改docker配置文件,增加参数 –insecure-registry=x.x.x.x:5000
(注:此处的参数指定为非安全模式,也就是http而不是https,然后重启docker服务)
④ 创建registry容器并启动
docker run -d -p 5000:5000 –privileged=true -v /myregistry:/var/lib/registry registry
(注:/tmp/registry是registry版本1的仓库目录,此处使用v2版)
⑤ 在客户端中输入如下命令,push镜像到仓库
docker push x.x.x.x:5000/busybox
⑥ 查看本地目录/myregistry以及在客户端上pull刚才push的镜像
tree /myregistry/docker/
也可通过“curl http ://192.168.200.103:5000/v2/_catalog”查看
Harbor:企业级私有镜像仓库
Harbor是VMware开源的企业级Docker Registry项目,地址:https://github.com/vmware/harbor
docker中LNMP平台搭建:
步骤:
(1)创建自定义网络
docker network create lnmp
(2)创建MySQL数据库容器
docker run -itd –name lnmp_mysql –net lnmp -p 3306:3306 –mount src=mysql_vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql –character-set-server=utf8
(3)创建所需数据库
docker exec lnmp_mysql sh -c \’exec mysql -uroot -p$MYSQL_ROOT_PASSWORD -ecreate database wp\’
(4)创建PHP环境容器
mkdir -p /app/wwwroot
docker run -itd –name lnmp_web –net lnmp -p 808:80 –mount type=bind,src=/app/wwwroot,dst=/var/www/html richarvey/nginx-php-fpm
(5)以wordpress博客为例测试
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
tar zxvf wordpress-4.7.4-zh_CN.tar.gz -C /app/wwwroot
浏览器访问:http://ip:808/wordpress