CentOS安装docker,及其基本操作

一.安装docker

Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上

1.uname -an 查看当前系统版本

2.yum -y install docker 下载安装docker

3.service docker start  启动docker服务

4.docker version  检查docker是否安装成功

当看到下图的信息,就是表示本机docker已经安装成功,很简单

二.镜像操作

创建容器要以镜像为基础,所以先讲下docker镜像的操作

搜索镜像

docker images  查看下本机的是否已经有了镜像

目前机器里还没有镜像,去Docker Hub下载(镜像还可自定义,这里就不细说了)

docker search java  ,还能指定具体的版本进行下载,

例如:docker search  Ubuntu:1.2.5.4,可以进行搜docker Hub 会列出很多镜像

下载镜像

docker pull docker.io/nginx 进行下载

下载到本地的镜像要比docker Hub上搜索出来的要大,因为下载过程中自动解压了,在查看镜像列表就有了刚才下载的镜像

列表包含了仓库名,版本标签,镜像ID,创建时间以及所占用的空间

删除镜像

删除没用的镜像docker rmi镜像id

三.镜像的创建与管理

前边我们已经下载好了Nginx的镜像,接下来我们就创建一个只有Nginx应用的容器docker run -i -t <IMAGE_ID> /bin/bash:-i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本,​​​​​​

docker run -idt --name container_nginx -p 8080:80  docker.io/nginx

启动一个使用镜像docker.io/nginx,名字container_nginx的容器,-p 8080:80表示将容器的80端口映射到主机的8080端口,这样我们只要访问主机的8080端口就可以访问到容器的服务了。

注意:name前面是两个-, 端口前面有-p, docker.io/nginx是镜像名,8080是主机的端口,80是Nginx应用的端口

主机上的一个端口只能映射一个容器端口,不可以多个容器端口对应一个主机端口(如果容器安装的centos类的系统,那么容器端口随便设定,但如果容器内只是单纯的应用,那么容器端口要是应用自身的端口)

这样我们就创建并启动了一个容器!

exit 退出容器

docker ps 查看运行中的容器

docker ps -a 查看运行中和非运行中的所有容器

docker exec -it container_nginx /bin/bash 进入容器

如果容器还未启动 执行docker start container_nginx

进入容器后启动Nginx

whereis nginx 找Nginx的启动目录

[root@iz2zehzeir87zi8q99krk1z ~]# docker start container_nginx
container_nginx
[root@iz2zehzeir87zi8q99krk1z ~]# docker exec -it container_nginx /bin/bash
root@84683e425116:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@84683e425116:/# /usr/sbin/nginx 

此时在浏览器访问 http://51.110.218.9:8080/ 就可以直接访问容器内的Nginx

如果访问不成功,可能是主机端口的防火墙开着,执行下边的命令关闭

/ sbin / iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

删除容器

容器删除之前先将容器停止

docker stop container_nginx 或者是容器的id

docker rm -f container_nginx 容器删除

docker start 与 docker run 的区别

docker start name 启动一个已经创建的容器

docker run 创建并启动一个容器

docker run 命令其实是 docker create 和 docker start 的命令组合,先执行docker create 创建一个容器 再接着docker start启动

主机和容器文件相互复制

从主机复制到容器 sudo docker cp host_path containerID:container_path

从容器复制到主机 sudo docker cp containerID:container_path host_path
请注意,以上这两个命令都是在主机中执行的,不能再容器中执行

docker cp container_nginx:/usr/local/xin.txt  /usr/local/software/   容器向主机复制文件
docker cp /usr/local/xinzhifu.txt  container_nginx:/usr/local/  主机向容器复制文件

这样一个基础的docker容器就创建完了 。。。。。。。。。。。。

参考资料:https://blog.csdn.net/xinzhifu1/article/details/83579256

宿主机访问docker容器

问题描述:初学Docker,主机Windows 10,虚拟机Cent OS7 运行了一个docker容器(Tomcat7),宿主机无法访问容器运行的服务。

  

问题原因:宿主机无法访问docker容器ip。

问题解决:1、虚拟机命令:ifconfig

    查看docker容器的网段、centos的IP地址:

    

    2、管理员身份打开宿主机powershell:执行命令: ROUTE -p add 172.17.0.1 mask 255.255.0.0 192.168.102.129

      Docker容器内部端口映射到外部宿主机端口。

    

    可以ping通容器ip了!

    再次在宿主机中访问:http://172.17.0.1:8080/,又见小橘猫 ~^ _ ^~

  参考资料:https://www.cnblogs.com/hongkejidan/p/10418835.html

docker容器无法访问宿主机-No route to host

也表现为docker间通过宿主机IP + 宿主机 端口 通信时报错: No route to host

解决方案1 : (推荐) :

在宿主机上将要访问的端口号添加到 public 的zone 区域:

firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload

解决方案2 : (不推荐) :

直接关闭防火墙,会引起安全问题。以及docker 查新启动报 iptables no chain 之类的错误.

systemctl stop firewalld

注意: 问题貌似只出现在centos上,所以还是推荐ubuntu 貌似毛病少点。

启动nginx 挂载

docker run --name nginx -p 80:80 -d nginx

这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令:

docker exec -it nginx bash

nginx.conf配置文件在 /etc/nginx/  下面,但是你使用vim nginx.conf 或者vi nginx.conf

会发现vi或者vim命令没有用,解决办法:apt-get  update  完成之后 apt-get install vim

此时你就可以自己定制nginx.con文件了,改好配置文件之后重启容器,步骤,先把容器停了

docker stop nginx  然后重启 docker start nginx

这样不是很方便,还有第二种方式,挂载配置文件,就是把装有docker宿主机上面的nginx.conf配置文件映射到启动的nginx容器里面,这需要你首先准备好nginx.con配置文件,如果你应经准备好了,下一步是启动nginx

命令:docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

解释下上面的命令:

--name  给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器

-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定

-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面

第三个-v 表示的和第一个-v意思一样的。

-d 表示启动的是哪个镜像

我个人更喜欢第二种映射的方式,麻烦的是需要自己准备好nginx.conf 和default.conf文件,我是直接从容器里面复制的,然后根据自己的需要改的

CentOS安装docker,及其基本操作的更多相关文章

  1. 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker

    Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  2. centos安装docker容器

    centos安装docker容器 系统环境需求 docker要运行在centos7系统中,系统为64位机器上,内核最小版本在3.10以上 如果系统为centos6,后面有附带的安装方法 uname - ...

  3. ubuntu和centos安装docker

    一. UBUNTU系统上 1. 卸载旧版本(新系统不用执行) sudo apt-get remove docker docker-engine docker.io     2. 安装docker st ...

  4. CentOS安装docker ce的三种方式

    参考文章: CentOS安装docker ce的三种方式: 1.环境 CentOS Linux release 7.6.1810 (Core) 2.卸载旧版本 sudo yum remove dock ...

  5. 手把手教centos安装docker

    目录 版本说明 官网安装教程 安装docker 现在网络上安装教程满天飞,很大一部分是别人的总结,可以说是成果,却没有介绍如何去实现这个成果方法.这篇就结合官网教程来聊聊如何在centos上安装doc ...

  6. 在centos安装docker

    关闭防火墙 iptables -L systemctl disable firewalld.service systemctl stop firewalld.service 配置代理太麻烦了,建议使用 ...

  7. CentOS安装 Docker

    系统的要求64 位操作系统,内核版本至少为 3.10. Docker 目前支持 CentOS 6.5 及以后的版本,推荐使用 CentOS 7 系统. cat /proc/version 首先,也是要 ...

  8. CentOS 安装Docker

    CentOS 系列安装 Docker Docker 支持 CentOS6 及以后的版本. CentOS6 对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下 $ sudo yum ...

  9. 阿里云centos安装docker

    近期转向core开发,mssql也支持了docker,索性把手上的一台服务改成centos做测试开发.中间安装docker碰到的问题做个记录. docker版本 docker从1.13版本之后采用时间 ...

随机推荐

  1. vs2008 asp.net “无法连接到ASP.NET Development server”

    这是因为该网站启动ASP.NET Development server时使用的端口被占用而导致的. 解决方法: 1.在“解决方案资源管理器”中选中网站项目名称,然后切换到“属性”窗口 2.在“属性”窗 ...

  2. SpringBoot的应运而生

    随着动态语言的流行(Ruby,Groovy,Scala,Node.js),java的开发显得格外的笨重,繁多的配置,低下的效率,复杂的部署流程以及第三方技术集成难度大.springboot应运而生,使 ...

  3. H5_0013:CSS特色样式集

    按比例变化,同时又限制最大宽高 ".start-wrap {", " width:40%;", " top: 83.21%;", " ...

  4. Ubuntu 18.04安装配置Apache Ant

    Ubuntu 18.04安装配置Apache Ant 文章目录 Ubuntu 18.04安装配置Apache Ant 下载 执行以下命令 `/etc/profile`中配置环境变量 载入配置 测试 执 ...

  5. 八连通(vector动态数组法)

    题目和一般的八连通一样,但行数和列数未定,相乘对于1e6,直接开a[1e6][1e6]的数组肯定会爆内存.用二维的动态vector就能很好的解决这个问题 #include<bits/stdc++ ...

  6. Linux下搭建PHP环境的参考文章小记

    之前也在Linux上安装过两次,但是当我再次需要安装时,还是很多不懂的地方,于是记下此篇,以防下次再费经心思找到不合适的文章,瞎折腾. 通过参考这几篇文章,成功的安装好了自己的PHP(LNMP)环境. ...

  7. 用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)

    问题描述 在 window 系统上,用 Navicat 连接 Mysql 数据库,弹出以下提示 问题原因  Mysql 数据库未启动 解决方案:启动 Mysql 数据库 1.点击桌面左下角运行 cmd ...

  8. 配置maven时,报JAVA_HOME错误

    其实原因很简单,是之前java的jdk配置不合规范! 一.我是win10系统. 二.我的java jdk放在D盘,环境变量里,JAVA_HOME是D:\Program Files\Java\jdk1. ...

  9. 温故知新的错题训练:Coin game

    传送门:http://192.168.173.163/JudgeOnline/problem.php?cid=1244&pid=1 输赢规则:无法再放下硬币的人就输. 博弈论的基本假定:他俩都 ...

  10. SpringBoot学习- 7、问题Could not autowire. No beans of 'xxxx' type found处理

    SpringBoot学习足迹 这个问题网上有好多同学都提到这个问题,代码可以运行,但是就是有红线,强迫症不能忍 自己试验下 1.增加一个final编译一下,再删掉就不会出红线了 public clas ...