Docker的简单使用

匿名 (未验证) 提交于 2019-12-03 00:22:01

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信息
  • 1
  • 2
  • 3
  • 4

镜像

修改镜像源

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

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

更多国内源如下:

# Docker 官方中国区 https://registry.docker-cn.com # 网易 http://hub-mirror.c.163.com # ustc https://docker.mirrors.ustc.edu.cn
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意
目录位置为/etc/default/docker,如果没有,那么就在/etc/sysconfig/docker,如果还是没有,那么就去/etc/default/下创建一个docker文件吧。

搜索镜像文件

docker search centos  # 搜索centos
  • 1

拉取镜像

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

删除镜像

docker rmi <镜像名|镜像ID>
  • 1

容器

创建容器

进入交互式容器

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

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

指定容器名

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

端口映射

# 使用 -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
  • 1
  • 2
  • 3

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

通过exit可以退出容器。

查看容器

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

查看容器详细信息

docker inspect <容器ID|容器名>
  • 1

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

启动和关闭容器

docker start <容器名|容器ID> docker stop <容器名|容器ID>
  • 1
  • 2

进入容器

进入容器前需要先启动

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

删除容器

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

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

容器打包成镜像

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

导入镜像

docker load < <镜像文件名.zip>  # < 记住别漏了重定向符号
  • 1
  • 导入之后使用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
  • 1

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

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

docker start

4运行容器

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

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

通过端口映射访问docker

  • exec进入容器,passwd命令修改密码
  • Xshell或WinSCP软件连接宿主机ip,端口是创建容器时映射的端口,输入密码即可。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ayhan_huang/article/details/78953924

文章来源: Docker的简单使用
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!