Docker

介绍

Docker的英文本意是“搬运工”,Docker搬运的是集装箱(Container)可以成为容器,我们可以把WEB应用以及依赖库打包进一个可移植的容器里传播,解决了应用部署的平台兼容性问题,同时她也是一种轻量级的虚拟化技术可以做到秒级启动一个容器(类似小虚拟机,区别启动快、可以传播);

镜像是docker 创建、启动一个容器的文件系统,这个文件系统包含依赖包、命令工具、APP等;

安装和开启服务

yum install epel-release -y  # 如果没有扩展源,需要先安装扩展源
yum install docker   # 安装,由于Docker要求Linux内核版本必须在要在3.10,所以centos6.X版本需要 yum install docker-io
systemctl start docker.service  # 开启服务
docker info  # 查看docker信息

镜像

修改镜像源

默认源连不上,修改镜像下载源,加入以下内容

vim etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

更多国内源如下:

# Docker 官方中国区
https://registry.docker-cn.com
# 网易
http://hub-mirror.c.163.com
# ustc
https://docker.mirrors.ustc.edu.cn

注意:docker版本在1.12以下需要找到docker配置文件
目录位置为/etc/default/docker,如果没有,那么就在/etc/sysconfig/docker,如果还是没有,那么就去/etc/default/下创建一个docker文件吧。

搜索镜像文件

docker search centos  # 搜索centos

拉取镜像

docker pull docker.io/centos  # 拉取 镜像名

删除镜像

docker rmi <镜像名|镜像ID>

容器

创建容器

进入交互式容器

docker run -i -t docker.io/centos /bin/bash  # -it可以连写
  • docker run 创建容器
  • -t 指定镜像
  • -i 交互式

进入交互式容器的/bin/bash后,可以输入常用的操作命令,比如ls

指定容器名

docker run --name <容器名> -it <镜像名> /bin/bash  # --name 指定容器名

端口映射

# 使用 -p 8000:80 创建端口映射(映射docker的80端口到物理机8000)
# docker run -d -p 8000:80 -p 22:22 同时映射多个端口,比如22给ssh服务用,80给Django用,即凡是需要提供给外部访问的,都需要作端口映射。
docker run --name ssh_server -it -p 8000:80 <镜像名> /bin/bash

注意:端口映射只能在docker run时操作

通过exit可以退出容器。

查看容器

docker ps  # 正在运行的容器
docker ps -a  # 所有的容器
docker ps -l  # 最近一次的容器
docker ps -q  # 最近一次的容器的id

查看容器详细信息

docker inspect <容器ID|容器名>

结果类似于json数据,可以通过| grep来过滤需要的信息

启动和关闭容器

docker start <容器名|容器ID>
docker stop <容器名|容器ID>

进入容器

进入容器前需要先启动

# 这种方式可以进入正在运行的容器,但是exit退出时容器也就停止运行了
docker attach <容器名|容器ID>
# 另一种方式进入容器,退出时容器不终止运行
docker exec -it test1 /bin/bash  # /bin/bash必须加

删除容器

# 删除一个容器
docker rm <容器名|容器ID>
# 强制删除一个正在运行的容器
docker rm -f <容器名|容器ID>
# 删除全部容器(使用 -f 可以强制删除正在运行的容器)
docker rm `docker ps -aq`

说明:飘号内的内容会作为命令来执行,并将结果交给rm命令

容器打包成镜像

docker save -o <导出的文件名.zip> <镜像名>  # 如果要指定路径,必须先创建路径中的文件夹# 比如:
mkdir img
docker save -o /img/vimenv.zip vimenv.img

导入镜像

docker load < <镜像文件名.zip>  # < 记住别漏了重定向符号
  • 导入之后使用docker images查看镜像
  • 使用导入的镜像docker run来创建容器
  • 新的容器内含以前打包好的项目的数据,直接运行

docker中使用systemctl命令

centos7中通过systemctl启动服务,但是在docker中无法使用。解决方案:

1.启动参数参数用/usr/sbin/init

docker run --name ssh_server -p 8000:22 -p 80:80 -it vimenv.img /usr/sbin/init

这时会报错:Operation not permitted,不管它

2新开一个终端,docker ps查看刚刚启动的那个容器,docker stop 容器ID结束它

3重新启动容器 docker start

4运行容器

docker exec -it <容器ID|容器名> /bin/bash

5yum安装openssh-server等需要的服务,然后就可以通过systemctl启动服务了

通过端口映射访问docker

  • exec进入容器,passwd命令修改密码
  • Xshell或WinSCP软件连接宿主机ip,端口是创建容器时映射的端口,输入密码即可。

Docker的简单使用相关推荐

  1. scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法

    scala akka by Miguel Lopez 由Miguel Lopez 如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法 (How to Dockerise a S ...

  2. centOS上docker 的简单使用

    今天我们来聊一聊docker 的简单实用,我这里用的centOS. 首先安装docker, 用yum install docker -y 进行安装docker, 安装完成后用docker -v 来查看 ...

  3. 使用Kubernetes和Docker进行简单的leader选举

    本文讲的是使用Kubernetes和Docker进行简单的leader选举,[编者的话]Kubernetes简化了运行在集群中的服务部署和运维管理,然而,它也简化了这些管理工作的部署.本篇文章将会展示 ...

  4. Docker小白到实战之Docker网络简单了解一下

    前言 现在对于Docker容器的隔离性都有所了解了,但对容器IP地址的分配.容器间的访问等还是有点小疑问,如果容器的IP由于新启动导致变动,那又怎么才能保证原有业务不会被影响,这就和网络有挂钩了,接下 ...

  5. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  6. docker的简单操作和端口映射

    docker的简单操作和端口映射:https://www.cnblogs.com/lixaingyang/p/11976827.html docker的简单操作和端口映射 一:简介 Docker镜像 ...

  7. 在Raspberry Pi上设置Docker的简单方法

    by Ryan Gordon 通过瑞安·戈登(Ryan Gordon) 在Raspberry Pi上设置Docker的简单方法 (The easy way to set up Docker on a ...

  8. k8s 和 Docker 关系简单说明

    来源:https://www.jb51.net/article/206783.htm 这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有需要的同学可以研究下 最近项目用到 ...

  9. docker nginx 简单的代理设置

    nginx一种代理,虽然是开发,但是也要懂一些 这个地方我们通过docker 安装nginx并且设置简单的代理 如何安装nginx我这个地方就不做太多的叙述 现在我有一个网址: 10.0.13.140 ...

  10. jenkins+docker的简单项目部署

    怎么使用docker实现新项目的发布,一般有两种方式,以一个web容器为例: 1:定制一个通用的web容器镜像,以逻辑卷-v的方式,关联webapp目录到宿主机,每次发布新版本时只需要更新宿主机上关联 ...

最新文章

  1. 毫米波雷达_毫米波雷达基础知识
  2. DCMTK:将轮廓数据添加到RT结构集中的测试程序
  3. F#学习之路(3) 如何组织程序(下)
  4. java 加法 溢出_StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~
  5. Redis系列六、redis的五种数据结构和相关指令之Sorted Set
  6. javascript window.open
  7. python越来越慢_为什么我的算法越来越慢?
  8. oracle11g服务端配置实例,Win7系统Oracle11g服务端和客户端连接数据库配置
  9. 修改看板视图默认显示个数
  10. 两年盗取 1000 万美元的 Xbox 礼品卡,这个人竟然是“内鬼”!
  11. 计蒜客 贝壳找房函数最值(好题,巧妙排序)
  12. Silverlight下载-Silverlight 1.1 Tools下载
  13. 网络唤醒Wake On Lan
  14. 在金融等重要行业的计算机系统中 通常采用,货币金融学题库
  15. MainMenu.xib
  16. Oracle DB 备份和恢复的概念
  17. 摩斯密码php,普及一下LOL中的摩斯密码 绝对的干货
  18. 【干货】洋葱淘elya妞:电商小白产品操盘心得,洋葱淘如何搞到种子用户
  19. fme转换shp面文件到cad自定义填充图案
  20. html之菜单栏设置

热门文章

  1. 1-8:学习shell之高级键盘技巧
  2. 64位汇编中的布尔指令
  3. Python requests请求禁止跳转重定向(判断是否为原请求链接)
  4. Java transient关键字(序列化避免被反序列化获取敏感信息)
  5. ip地址互转十进制数字(函数)
  6. 4. OD-去除烦人的nag窗口(去除提醒用户购买正版的警告窗口)
  7. VS中CString与char型数组相互转换问题
  8. mysql8 修改root密码
  9. vue-cli+webpack项目,修改项目名称
  10. 计算Python运行时间