centos7下载docker
注意下载版本要和操作系统版本对应。
docker-ce-18.06.2.ce-3.el7.x86_64.rpm
安装: yum install -y docker-ce-18.06.2.ce-3.el7.x86_64.rpm 启动服务: service docker start systemctl start docker systemctl stop docker sytstemctl restart docker # 查看dockers状态 systemctl status docker 测试安装成功 docker version 或者 docker infodocker配置镜像加速
在阿里云控制台找到docker加速器信息:
阿里云控制台
新建编辑 /etc/docker/daemon.json
修改保存后输入命令重启docker守护进程和服务
docker ps
docker ps -l 查看最近创建的容器
docker ps -n=个数 查看最新创建的n个容器
docker create nginx --name=nginx nginx 容器创建
docker run --name nginx02 -d -p 88:80 nginx 创建并运行容器 -d
docker run --name ubuntu -it ubuntu /bin/bash 交互型容器 -it
docker start xxx 启动容器
docker stop xxx
docker restart xxx
docker rm xxx
docker rm $(docker ps -a -q) 批量删除没有运行的容器
docker container prune 批量删除 prune减少,删除
docker exec -it ubuntu /bin/bash 进入正在运行的容器
docker inspect 查看容器信息 inspect:视察
docker cp index.html nginx02:/usr/share/nginx/html/ 拷贝文件到容器
docker export nginx02 > ./nginx.tar 将容器导出
cat nginx.tar | docker import - importednginx:v1 容器导入
通过容器导出的镜像运行,必须带 -t (带着命令执行) 估计是没有写CMD属性。。
docker run -dti --name nginx01 -p 8080:80 nginx /docker-entrypoint.sh nginx -g 'daemon off;'
Dockerfiledocker commit -m “update index.html” --author=‘waterkid’ nginx02 waterkid01/nginx:v1 创建本地镜像
-m :对镜像的描述
-author :作者
nginx02 : 容器的名字
waterkid01/nginx:v1 : 镜像的名字和版本
dockerfile 就是一个普通的文本文件,其内包含了一条条指令,每一条指令都会构建一层
dockerfile常用命令
| 命令 | 作用 |
|---|---|
| FROM image_name:tag | 定义了使用哪个基础镜像启动 |
| MAINTAINER user_name | 声明镜像创建者 |
| ENV key value | 设置环境变量 |
| RUN command | dockerfile的核心部分,执行系统指令 |
| ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件会在复制后自动解压 |
| COPY source_dir/file dest_dir/file | 和ADD相似,但是不会自动解压压缩文件 |
| WORKDIR path_dir | 设置工作目录 |
| CMD | 指定容器启动时运行的命令 |
在一个空白目录写一个Dockerfile文件,文件创建完成之后,执行如下命令进行构建:
docker build -t waterkid01/nginx:v1 .docker hub
dockerhub
注册一个账号
docker login 登录docker
自制的镜像要能够上传,命令必须满足规范 即 namespace/name 其中namespace必须是自己的用户名
引用:http://www.javaboy.org/2019/0524/docker-container-basic.html
不想写了。。。后续。。。
遇到的问题:- docker卸载问题
之前centos直接使用 yum install -y docker 安装的是docker最原始的版本 docker1.13
docker-io,docker-engin是以前早期的版本,版本号是1.*。。默认centos7安装的是docker-io,最新版是1.13
docker-ce是社区版本, Ubuntu默认安装的是docker-ce,,以下是官方描述:
docker-ee 是 docker 的企业版,适用于企业级开发,同样也适用于开发,分发,运行商务级别的引用的it团队
# 更新到最新的yum包 yum update -y #卸载旧版本(如果安装过旧版本的话) yum remove docker docker-common docker-selinux docker-engine docer-io 重新安装你想装的版本
引用:https://www.cnblogs.com/WalkOnMars/p/13322669.html
引用:https://blog.csdn.net/horizon_zpy/article/details/88383263
- nginx容器导出后再导入 nginx运行不起来
容器导出的镜像感觉和直接手写的Dockerfile 的nginx不一样,,
nginx默认是后台启动的,一般我们启动nginx进程就是直接输入nginx,然后回车,但是docker的CMD要求命令能将进程挂起来,也就是hold住,显然,正常使用nginx命令启动不满足这个条件
查看docker中的nginx容器信息:
# --no-trunc 显示所有信息,不截取 docker ps --no-trunc
nginx容器的启动命令:
/docker-entrypoint.sh nginx -g 'daemon off;'
通过容器导出的镜像运行,必须带 -t (带着命令执行) 估计是没有写CMD属性。。
docker run -dti --name nginx01 -p 8080:80 nginx /docker-entrypoint.sh nginx -g 'daemon off;'
引用 :https://www.cnblogs.com/shanfeng1000/p/14060545.html
- iptables: No chain/target/match by that name.
重启虚拟机后,运行docker容器报错
原因:重新设置网关后,iptables(firewalld) 被激活, docker chain 设置未更新!
重启docker服务后,促使最新设置被加入到iptables中
解决办法:
重启docker
service docker restart
引用:https://blog.csdn.net/qq_24452475/article/details/83901620
- This system is not registered with an entitlement server. You can use subscription-manager to
重启虚拟机,运行docker 容器报错:
这个Red Hat Subscription Manager订阅管理器,它会让你一直register,禁用就好。
脚本文件: /usr/lib/yum-plugins/subscription-manager.py
配置文件: /etc/yum/pluginconf.d/subscription-manager.conf
调用了脚本 /usr/share/rhsm/repolib.py
去重写或者更新/etc/yum.repos.d/redhat.repo文件。
每次yum调用(不禁掉plugins的情况下),都会更新此文件。
因此,为了不冲突,可以如下操作:停止掉该插件的使用,在配置文件中把enable=0即可。
引用:https://blog.csdn.net/oraoharu/article/details/106808108
- push自己的docker镜像报错
引用:https://blog.csdn.net/qq_37786775/article/details/89422727
docker tag local-image:tagname reponame:tagname docker push reponame:tagname



