本文共 4278 字,大约阅读时间需要 14 分钟。
环境准备
1、需要会linux基础
2、CentOS 7
3、使用Xshell链接远程服务器进行操作
环境查看
# 系统内核是 3.10 以上的[root@iz2ze50r0dljy72rs9ihxwz /]# uname -r3.10.0-514.26.2.el7.x86_64
# 系统版本[root@iz2ze50r0dljy72rs9ihxwz /]# cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="7"
安装
帮助文档:
# 1、卸载旧的版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2、需要的安装包yum install -y yum-utils# 3、设置镜像的仓库yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推荐使用阿里云的,比较块# 更新yum软件包索引yum makecache fast# 4、安装docker的相关的内容 docker-ce 社区版 ee 企业版yum install docker-ce docker-ce-cli containerd.io# 5、启动dockersystemctl start docker# 或者service start docker# 6、使用docker version检测是否安装成功
# 7、hello worlddocker run hello-world
# 8、查看镜像docker image
了解:卸载docker
# 1.卸载依赖yum remove docker-ce docker-ce-cli containerd.io# 2.删除资源rm -rf /var/lib/docker
阿里 容器镜像服务
镜像加速器
- 配置使用
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://qluijt25.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart dockersudo service restart docker
Dockers是怎么工作的?
docker是一个Client - Server 结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
docker version # docker的系统信息docker info # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令
docker run -d -p 8080:9000 \--restart=always -v /var/run/docker.sock:var/run/docker.sock --privileged=true portainer/portainer
什么是portainer?
Docker图形化界面管理工具!提供一个后台面板供我们操作!
docker run -d -p 8080:9000 \--restart=always -v /var/run/docker.sock:var/run/docker.sock --privileged=true portainer/portainer
# docker 常用命令docker imagesdocker run -i # 以交互模式运行容器,通常与 -t 同时使用;docker run -t # 为容器重新分配一个伪输入终端,通常与 -i 同时使用docker run -d # 后台运行容器,并返回容器IDdocker ps # 查看运行是否成功docker ps -a # 查看容器docker run --name # 容器名docker run -p # 指定端口映射,格式为:主机(宿主)端口:容器端口docker run -v # 指定容器目录 为 主机下的某个目录
# 实例docker run -d -p 8888:8080 -v /root/tomcat/:/usr/local/tomcat/webapps/ tomcatdocker run -it centos /bin/bashdocker run -d -p 8080:8080 --name tomcat01 tomcatcurl -i url
# 进入镜像docker exec -it tomcat01 /bin/bash# docker 运行并进入docker run -it centos /bin/bash# 退出容器exit # 停止容器并退出Ctrl + P + Q # 不停止 退出
# 删除容器docker rm 容器id # 删除指定容器,不能删除正在运行的容器,-f可以docker rm -f $(docker ps -ap) # 删除所有容器docker ps -aq | xargs docker rm # 删除所有容器
# 启动容器docker start 容器iddocker restart 容器id# 停止docker stop 容器id# 停止docker kill 容器id 强制
从主机复制到容器docker cp host_path containerID:container_path从容器复制到主机docker cp containerID:container_path host_path
# 用-v挂载主机数据卷到容器内docker run -v host_path:container_path $container# 在容器内拷贝cp /mnt/sourcefile /path/to/destfile
UnionFS 联合文件系统
参考:
iptables: No chain/target/match by that name.
原因:
如果再启动docker service的时候网关是关闭的,那么docker管理网络的时候就不会操作网关的配置(chain docker),然后网关重新启动了,导致docker network无法对新container进行网络配置,也就是没有网管的操作权限,做重启处理。
解决方法
# 重启service docker restart或systemctl restart docker
使用的centos7服务器,在部署docker的过程中,因端口问题有启停firewalld服务,在centos7里使用firewalld代替了iptables。在启动firewalld之后,iptables还会被使用,属于引用的关系。所以在docker run的时候,iptables list里没有docker chain,重启docker engine服务后会被加入到iptables list里面。(有必要深入研究一下docker network)
另一个解决方法
# 关闭网关systemctl stop firewalldsystemctl stop iptables
docker pull nginxdocker run --name ngnix01 -p 8080:80 -d nginx
配置
linux的/etc目录是存放所有的系统管理所需要的配置文件和子目录
docker 中的ngnix的配置文件放在 /etc/nginx/下
不像windows中的nginx的配置直接放在nginx.conf中,docker中的nginx有关
/
的配置放到了/etc/nginx/conf.d目录下的default.conf中
转载地址:http://wtsq.baihongyu.com/