docker日常操作

1) Docker官网要求部署Docker引擎(虚拟化软件)的底层Host OS的Linux系统内核版本3.8+,最早期Windows操作系统不支持Docker虚拟化部署,新版的Windows系统可以支持Docker;
2) Docker虚拟化建议部署至Linux操作系统平台(稳定、高效、开源、免费的),生产环境推荐Linux内核版本3.10+,对应的Linux操作系统发行版:RHEL7.x和CentOS7.x;
3) 基于CentOS6.x(6.5+)部署Docker引擎服务,指令如下:
#YUM安装Docker引擎服务;
yum install docker-io lxc cgroup device-mapper* -y
#查看Docker软件是否安装;
rpm -qa|grep docker
#启动Docker引擎服务;
service docker restart
#查看Docker引擎服务进程;
ps -ef|grep docker
4) 基于CentOS7.x(7.0+)部署Docker引擎服务,指令如下:
#YUM安装Docker引擎服务;
yum install docker* -y
#查看Docker软件是否安装;
rpm -qa|grep docker
#启动Docker引擎服务;
service docker restart
systemctl restart docker.service
#查看Docker引擎服务进程;
ps -ef|grep docker
如果出错要更换yum源,阿里云的不行,要换清华源:
清华大学CentOS 镜像使用帮助
请注意,CentOS 8 (非 Stream 版)已提前进入 EOL 停止服务阶段,因此镜像已被官方移动。如果您正在寻找关于这些系统的镜像,请参考 centos-vault 的帮助。
该文件夹只提供 CentOS 7 与 8,架构仅为 x86_64 ,如果需要较早版本的 CentOS,请参考 centos-vault 的帮助,若需要其他架构,请参考 centos-altarch 的帮助。
建议先备份 /etc/yum.repos.d/ 内的文件。
然后编辑 /etc/yum.repos.d/ 中的相应文件,在 mirrorlist= 开头行前面加 # 注释掉;并将 baseurl= 开头行取消注释(如果被注释的话)。 对于 CentOS 7 ,请把该行内的域名(例如mirror.centos.org)替换为 mirrors.tuna.tsinghua.edu.cn。 对于 CentOS 8 ,请把 mirror.centos.org/$contentdir 替换为 mirrors.tuna.tsinghua.edu.cn/centos。
以上步骤可以被下方的命令一步完成
# 对于 CentOS 7
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo

# 对于 CentOS 8
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
注意其中的*通配符,如果只需要替换一些文件中的源,请自行增删。
注意,如果需要启用其中一些 repo,需要将其中的 enabled=0 改为 enabled=1。
最后,更新软件包缓存
sudo yum makecache

5) 如上步骤Docker引擎服务配置完毕,并且启动完成,如图所示:

6) Docker虚拟化属于C/S(Client/Server)模式,Server-Engine服务,Client-Docker命令工具,查看docker客户端和服务端版本号:docker version;

7) Docker虚拟化技术实施之前,了解三个概念:Docker镜像、Docker容器、Docker仓库;
 Docker镜像
Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;
 Docker容器
Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);
 Docker仓库
Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);
8) 如果通过Docker引擎运行Docker容器,首先从公共仓库下载Docker镜像,基于Docker镜像再启动容器(默认Docker引擎从Docker国外官网下载镜像文件);
#查看本地服务器的镜像列表;(从远程仓库下载的)
docker images
#从docker官网仓库搜索tomcat|nginx|redis镜像;
docker search tomcat
docker search nginx
docker search redis
#从公共仓库下载tomcat镜像;
docker pull docker.io/tomcat
docker pull docker.io/nginx
docker pull docker.io/redis

#查看已经下载docker镜像;

#基于Docker镜像启动Tomcat容器(-i interactive交互、-t tty终端、-d daemon后台运行);

Docker run -–privileged –name=yeng-web01 –itd –p 80:80 docker.io/tomcat:latest
Privileged是超级管理权限意思,--name改名

Docker exec –it id或名称 passwd root
直接执行命令改密码等

Cp /etc/skel/.bash* /root/
这样解决容器里面的centos机器名称问题老是显示bash-4.1

Docker history docker.io/nginx
查看镜像到底是怎么做的,可以看到一些初始密码之类的东西

docker run -itd docker.io/tomcat:latest
#查看Docker tomcat容器的运行状态;
docker ps

#查看Docker tomcat容器的IP地址;
docker inspect 0499058becea |grep -i ipaddr

#如何访问创建Tomcat容器(Tomcat软件服务,监听8080端口);
wget 172.17.0.2:8080

#将宿主机系统的8080端口映射到容器的8080端口;(第一个端口宿主机监听的,第二个端口是容器内部服务端口)
docker run -p 8080:8080 -itd docker.io/tomcat:latest

http://47.98.151.187:8080/




1、Docker虚拟化技术实战一(容器和镜像概念)
 Docker镜像
Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;
容器系统:
基于底层镜像启动,并且在镜像最上层添加一层(容器层)读写层,容器层可以支持修改和读取的,对容器所有的写操作只作用于容器层,容器层需要的软件或者文件可以从镜像层去读取,没有镜像就不会有容器。(只写-容器层)
 Docker容器
Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);
 Docker仓库
Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);
2、Docker虚拟化技术实战二(容器和镜像实战)
1)Docker命令行指令实战:
#查看Docker镜像;
docker images
#删除Docker镜像;(强制删除-f参数)
docker rmi 6759d91a032b
#查看运行中的容器;
docker ps
#查看运行、停止、关闭的所有容器;
docker ps -a
#进入Docker容器系统bash终端;(exit退出即可)
docker exec -it 4f3a529813ce /bin/bash
#停止Docker容器;
docker stop 4f3a529813ce
#启动Docker容器;
docker start 4f3a529813ce
#删除Docker容器;
Docker rm 4f3a529813ce(-f强制删除运行中的容器);
#删除所有的Docker容器;
for i in `docker ps|awk 'NR>=2 {print $1}'`;do docker rm -f $i ;done
docker ps -aq|xargs docker rm -f
docker rm -f `docker ps -aq`
docker rm -f $(docker ps -aq)
3、Docker虚拟化技术实战三(1台Nginx均衡2台Tomcat)
1) 基于一台物理机,部署1台Nginx均衡2台Tomcat,通过访问Host OS的80端口,能够访问Tomcat容器中的测试页面;
2) 基于Docker引擎启动3个Docker容器,首先下载Nginx和Tomcat镜像,下载的指令如下:
docker pull docker.io/nginx
docker pull docker.io/tomcat

3) 其中一个为Nginx容器,并且对外映射80:80端口规则,启动Nginx容器并且映射80端口的指令如下:
docker run -itd -p 80:80 docker.io/nginx:latest
docker ps -a
docker inspect 9ac1f1f9cdf4|grep -i ipaddr

4) 另外两台为Tomcat容器,启动Tomcat容器(无需映射端口)的指令如下:
docker run -itd docker.io/tomcat
docker run -itd docker.io/tomcat

5) 查看2台Tomcat容器的IP地址,并且记录IP地址;
docker inspect `docker ps -a|grep tomcat|awk '{print $1}'`|grep -i ipaddr|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort|uniq

6) 配置Nginx均衡2台Tomcat,实现负载均衡+反向代理,操作方式如下:
#进入Nginx容器;
docker exec -it 9ac1f1f9cdf4 /bin/bash
#进入Nginx WEB配置文件目录;
cd /etc/nginx/conf.d/
#排除#和空行的代码;
grep -vE "#|^$" default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
#通过sed或者cat将新内容写入default.conf文件中;
cat>default.conf<<EOF
upstream tomcat_web {
server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_set_header Host \$host;
proxy_pass http://tomcat_web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
#修改替换未成功的部分参数指令;
sed -i 's/default.conf/\t/g' default.conf
#重启nginx服务即可;
nginx -t
nginx -s reload

#一台宿主机,启动99个Nginx WEB服务,指令如下:
for i in `seq 1 99`;do docker run -itd -p 80$i:80 docker.io/nginx;done


4、Docker虚拟化技术实战四(Docker启动CentOS容器)
1) 从Docker仓库下载CentOS6系统镜像;
docker pull docker.io/lemonbar/centos6-ssh

2) 基于CentOS6系统镜像启动CentOS6.x Docker容器,启动指令如下:(映射宿主机80和6022至容器中:80和22);
docker run -itd -p 80:80 -p 6022:22 docker.io/lemonbar/centos6-ssh:latest

3) 基于CentOS6.5容器部署各种软件、应用程序,部署方法跟物理机部署方法,完全一样,没有什么区别;

Docker exec 容器ID 命令行
Dokcer exec 65898f50bb44 ifconfig //直接操作容器系统

4) Docker虚拟化在生产环境有两种使用方式:
 基于Docker Engine直接启动应用APP(软件)容器;(管理和使用不方便)
 基于Docker Engine启动CentOS容器-容器中部署APP软件;(管理和使用方便),生产环境推荐方案;
5) Docker宿主机跟容器拷贝资源或者共享资源操作指令:
#从宿主机拷贝文件至docker容器;
docker cp zabbix-3.2.6.tar.gz 1ccbd29c12c5:/tmp/
#从docker容器拷贝文件至宿主机;
docker cp 1ccbd29c12c5:/tmp/zabbix-3.2.6.tar.gz .
#将宿主机的/var/www/html目录挂载至docker容器的/usr/share/nginx/html目录,指令如下;
docker run -itd -v /var/www/html/:/usr/share/nginx/html/ docker.io/nginx

原文链接:https://blog.51cto.com/u_9185533/5930913

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享