Docker+Centos7安装、卸载、常用命令、Dockerfile及构建、打报镜像、推送到远程仓库

Docker+CentOS7

注意事项

CentOS7使用docker

注意:docker要求centos内核版本高于3.10

uname -r  // 可以查看linux系统内核版本

如果是非root用户,使用 sudo 运行

  • 如果安装过docker,则使用命令删除

 yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Docker的安装

安装依赖

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

如果要使用yum 查看仓库中所有docker版本

设置yum源,更新yum 的包索引

设置yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新包索引

yum makecache fast

可以查看仓库所有docker版本

yum list docker-ce --showduplicates | sort -r

安装docker

安装最新版
yum -y install docker-ce docker-ce-cli containerd.io

安装指定版本
yum -y install docker-ce-18.03.1.ce

安装命令提示插件(table键自动补全)
yum -y install bash-completion

我这里选择 安装了 指定版本,18.03.1.ce

启动docker

systemctl start docker 或者 service docker start/status/stop

设置为开机启动

systemctl enable docker

查看docker版本

docker version
docker info  # docker 更详细的信息

卸载docker

yum -y remove docker-engine 卸载docker引擎
rm -rf /var/lib/docker 删除资源

Docker常用命令

如果忘记了某些命令,可以查看 命令文档

docker --help 或更具体
docker volume --help 

镜像

  • docker search name
docker search tomcat	// 搜索tomcat在Docker Hub中的镜像
  • docker pull image
docker pull tomcat:7	// 从仓库下载镜像,:7 是指定版本号
  • docker images
docker images		// 列出本地镜像
docker images -qa   // 列出本地镜像的id
  • docker rmi image[:tag]
docker rmi tomcat:7		// 删除本地镜像
docker rmi $(docker images -qa) // 删除所有本地镜像

容器

  • docker run
docker run -d -p 80:8080 tomcat:7
新建并运行一个容器,其中 -d :后台运行
				-p :宿主机端口--容器端口,可以做到宿主机和容器端口的映射
docker run -d -p 80:8080 --restart=always tomcat:7
				--restart=always 开机自动启动
  • docker update 容器
# 修改容器的某些属性
# 比如我的docker容器在run的时候并没有设置 Docker 启动时,重启,可以使用 docker update 设置
docker update --restart=always 容器id

比如修改了一个容器的 --restart=always

那么可以在 /var/lib/docker/containers/容器目录/hostconfig.json文件中查看

在这里插入图片描述

默认情况下{“Name”:“no”},修改完之后就是上图的 always

  • docker ps
docker ps 	// 列出所有在运行的容器
docker ps -a	// 列出所有容器
  • docker stop
docker stop 容器id		// 停止容器
  • docker start
docker start 容器id	// 运行一个停止的容器
  • docker container logs 容器id == docker logs 容器id
 docker container logs 容器id		// 查看指定容器的日志信息
 docker logs -f 容器id   // 动态查看日志
  • docker exec
docker exec -it 容器id /bin/bash		// 进入容器内部

	-i保证我们的输入有效,即使在没有detach的情况下也能运行.
	-t表示将分配给我们一个伪终端.我们将在伪终端输入我们的内容.
	
exit : 退出容器
  • docker rm
docker rm 容器id		// 删除已停止的容器
docker rm -f 容器id	// 强制删除,包括在运行的容器
docker rm $(docker ps -a -q)		// 删除所有的容器

使用docker 安装运行tomcat

先从仓库拉下来一个tomcat:8镜像

docker pull tomcat:8

拉下来之后:

在这里插入图片描述

docker images	// 查看一下本地的镜像
docker run -d -p 8000:8080 645	// 新建并启动容器
								-p:把主机的8000端口和docker容器的8080端口映射
								645:镜像的id,不用完整,会自动识别
								-d:后台启动

查看容器:

docker ps -a	// 查看所有容器,可以看到容器已经启动了,并且做了端口映射

在这里插入图片描述

注意:假如虚拟机的ip是192.168.23.130

这时候访问 http://192.168.23.130:8000如果是404

那么说明docker容器里的tomcat的webapps目录可能是空的

解决:

​ 法一:可以把webapps删了,webapps.dist改名为 webapps

rm -rf webapps
mv webapps.dist webapps

​ 法二:把webapps.dist里的文件,拷贝到webapps下

cp -r webapps.dist/* webapps

再次访问即可

Docker启动常见问题

  • 第一种就是容器端口被占用了

    # 查看被占用的端口 以3306为例
    netstat -nltp |grep 3306
    # 杀掉进程 (这里需要注意的是,docker启动的都是守护进程,如果用 kill -9 很可能杀不掉进程)
    kill 端口占用的PID 
    

Docker 提交镜像(基于容器)

场景:

​ 例如 tomcat 的启动,每次我们从远程仓库拉下来后,可能都要去把webapps.dist的文件拷贝到webapps下,非常麻烦

实践:

​ 前提:我们启动tomcat容器后,把webapps.dist的文件拷贝到了webapps中(或者上述法一)

​ 我们可以把这个已经启动的容器commit成一个镜像,下次再启动一个新的tomcat容器时,就可以直接启动这个镜像,后面就什么都不用做了

docker commit -m=信息 -a=作者 容器id new_image[:tag]

​ 实际上:我们把webapps.dist的文件拷贝到webapps中时,在容器里做的操作,全都是在 原镜像的基础上,编写的新的 镜像命令(类似于Dockerfile文件),一层层叠加,最后打包成新的镜像

Dockerfile

Dockerfile的基础命令

在这里插入图片描述

指令必须 大写

指令从上到下、依次执行

# 是注释

每一个指令都是一层

DockerFile:构建文件,定义了一切步骤

DockerImages:通过DockerFile构建生成的镜像

在这里插入图片描述

# 查看镜像的历史(可以看到镜像的构建过程)
docker history 镜像id

Dockerfile的构建

首先Dockerfile的命名规则:

如果命名为Dockerfile,那么构建的时候就不用去-f指定文件位置,否则需要指定文件的位置

# 如果命名为 Dockerfile,直接指定 tag即可,注意注意注意最后有一个 . 的存在,在当前上下文构建
docker build -t mydocker:1.0 .

# 如果命名 不是Dockerfile,要注意指定文件路径(最好从 / 开始)
docker build -f /usr/local/docker/mydocker -t mydocker:1.0 .

Docker推送镜像到远程仓库

推送到Dockerhub

推送到远程仓库,首先一定要有个地址,然后登录上,再有个仓库(默认是登录到Dockerhub)

可以先到Dockerhub上创建一个仓库,比如我创建一个 mytom仓库(前面是我的账号)

在这里插入图片描述

登录dockerhub

docker login -u lu1056979087 # 回车后输入密码

登录成功后

在这里插入图片描述

需要先把我们要推送的镜像打一个tag,以下列mytom镜像为例

在这里插入图片描述

# 把mytom:1.0的镜像 打成 lu1056979087/mytom:1.0的tag
# 需要注意的是,lu1056979087是用户,而后面的 mytom是仓库名,要和dockerhub相同,后面的tag可以随便写
docker tag mytom:1.0 lu1056979087/mytom:1.0

打包完后,可以再看一下镜像,发现多了个镜像,但是其实镜像的id还是一样的

在这里插入图片描述

推送到dockerhub仓库

docker push lu1056979087/mytom:1.0 # 推送到远程仓库

在这里插入图片描述

推送完成后,dockerhub的仓库里会多一个tag的资源

在这里插入图片描述

推送到阿里云(只能免费创建3个命名空间)

先退出dockerhub的账号

docker logout

在这里插入图片描述

退出成功

先去整一个阿里云的镜像仓库服务,创建好命名空间和仓库

创建好后,可以到阿里云镜像的 基本信息里面看如何操作,有操作指南

在这里插入图片描述

根据操作指南即可傻瓜式推送

打tag

在这里插入图片描述

# 这里的tag和dockerhub不一样
# registry.cn-hangzhou.aliyuncs.com是你的阿里云镜像库的地址
# /wangluhao 是创建的命名空间,一个命名空间下可以有多个仓库
# /hello 是仓库名称
# 注意对应关系

推送

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值