CentOS安装docker,及其基本操作
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,及其基本操作的更多相关文章
- 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker
Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...
- centos安装docker容器
centos安装docker容器 系统环境需求 docker要运行在centos7系统中,系统为64位机器上,内核最小版本在3.10以上 如果系统为centos6,后面有附带的安装方法 uname - ...
- ubuntu和centos安装docker
一. UBUNTU系统上 1. 卸载旧版本(新系统不用执行) sudo apt-get remove docker docker-engine docker.io 2. 安装docker st ...
- CentOS安装docker ce的三种方式
参考文章: CentOS安装docker ce的三种方式: 1.环境 CentOS Linux release 7.6.1810 (Core) 2.卸载旧版本 sudo yum remove dock ...
- 手把手教centos安装docker
目录 版本说明 官网安装教程 安装docker 现在网络上安装教程满天飞,很大一部分是别人的总结,可以说是成果,却没有介绍如何去实现这个成果方法.这篇就结合官网教程来聊聊如何在centos上安装doc ...
- 在centos安装docker
关闭防火墙 iptables -L systemctl disable firewalld.service systemctl stop firewalld.service 配置代理太麻烦了,建议使用 ...
- CentOS安装 Docker
系统的要求64 位操作系统,内核版本至少为 3.10. Docker 目前支持 CentOS 6.5 及以后的版本,推荐使用 CentOS 7 系统. cat /proc/version 首先,也是要 ...
- CentOS 安装Docker
CentOS 系列安装 Docker Docker 支持 CentOS6 及以后的版本. CentOS6 对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下 $ sudo yum ...
- 阿里云centos安装docker
近期转向core开发,mssql也支持了docker,索性把手上的一台服务改成centos做测试开发.中间安装docker碰到的问题做个记录. docker版本 docker从1.13版本之后采用时间 ...
随机推荐
- hdu 1087 Super Jumping!(类最长上升子序列)
题意:在一组数中选取一个上升子序列,使得这个子序列的和最大. 解:和最长上升子序列dp过程相似,设dp[i]为以第i位为结尾最大和,那么dp[i]等于max(dp[0],dp[1],,,,,dp[i- ...
- PAT 基础编程题目集 6-10 阶乘计算升级版 (20 分)
本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负整数,则该 ...
- 替换 MyEclipse 中已有的项目
一.删除 tomcat 中的项目 1.停止 tomcat 2.删除 tomcat 中的项目 选中项目,然后右键 - Remove deployment,这个可能需要一点时间 二.删除 MyEclips ...
- Python 3.9.0 首个迭代版本发布了
Python 3.9.0 alpha 1 发布了,这是 3.8 之后的首个 3.9 系列版本. ! 官方没有介绍新特性,也没有添加新模块,但是以下模块有所改进: ast asyncio curses ...
- 【Unity|C#】基础篇(17)——字符串处理(String/StringBuilder)
[学习资料] <C#图解教程>(第25章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- [Python]find_all函数 2020.2.7
.find_all(name,attrs,recursive,string,**kwargs) name:对标签名称的检索字符串attrs:对标签属性值的检索字符串,可标注属性检索recursive: ...
- PP: Deep r -th Root of Rank Supervised Joint Binary Embedding for Multivariate Time Series Retrieval
from: Dacheng Tao 悉尼大学 PROBLEM: time series retrieval: given the current multivariate time series se ...
- DVR
DVR,全称为Digital Video Recorder(硬盘录像机),即数字视频录像机,相对于传统的模拟视频录像机,采用硬盘录像,故常常被称为硬盘录像机.它是一套进行图像计算存储处理的计算机系统, ...
- 解决pjax加载页面不执行js插件的问题
个人博客 地址:http://www.wenhaofan.com/article/20180913220425 介绍 在使用jquery.pjax的时候发现加载页面时不会执行其中的layui以及jqu ...
- Spring Boot2 快速入门教程-到上手
Spring Boot2 教程合集 入门 纯 Java 代码搭建 SSM 环境 创建一个 Spring Boot 项目的三种方法 理解 Spring Boot 项目中的 parent 基础配置 配置文 ...