docker安装和使用

比较Docker和虚拟技术的不同:

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个操作系统上安装和运行软件
  • 容器的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟硬件,所以轻便了
  • 每个容器间互相隔离,每个容器内都有属于自己的文件系统,互不影响。

docker介绍

镜像(image)
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,Tomcat镜像===》run===》Tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)。
容器(container)
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
启动,停止,删除,基本指令!
目前就可以把这个容器理解为就是一个简易的Linux系统。
仓库(repository)
仓库就是存放镜像的地方。
仓库分为公有仓库和私有仓库。

安装

  1. 卸载老的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
  1. 需要的安装包
yum install -y yum-utils
  1. 设置镜像的仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装docker相关的内容
    更新yum软件包索引
yum makecache fast

-ce 是社区版的

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动
systemctl start docker
# 启动后使用version查看是否启动成功
docker version
  1. hellow world
docker run hello-world
  1. 查看下载的Hellow world镜像
docker images
  1. 卸载docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
rm -rf /var/lib/docker  # docker默认的工作路径
rm -rf /var/lib/containerd

命令

docker命令

  • 启动:systemctl start docker
  • 停止:systemctl stop docker
  • 重启:systemctl restart docker
  • 查看状态:systemctl status docker
  • 设置开机启动:systemctl enable docker

镜像命令

查看所有镜像

docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   10 months ago   13.3kB
  • REPOSITORY :镜像的仓库源
  • TAG:镜像的版本标签
  • IMAGE ID:镜像的id
  • CREATED:镜像的创建时间
  • SIZE:镜像的大小

搜索镜像

docker search mysql # 搜索mysql的镜像
docker search --help
# 搜索镜像命令可选项
Options:
-f, --filter filter   Filter output based on conditions provided
    --format string   Pretty-print search using a Go template
    --limit int       Max number of search results (default 25)
    --no-trunc        Don't truncate output

# 查询一条
docker search mysql --limit 1 

拉取镜像

docker pull p3terx/aria2-pro  # aria2-pro下载器镜像
docker pull p3terx/ariang # 下载器的图形化界面

docker pull p3terx/aria2-pro:latest  # latest 为版本号,可以选定版本号下载

删除镜像

docker rmi -f feb5d9fea6a5 #  feb5d9fea6a5 为image id

导出镜像

docker save tomcat -o /soft/tmpfile/tomcat.tar
# save为导出命令,Tomcat为镜像名称,-o指定保存文件名,必须指定文件名且为tar包

导入镜像

docker load -i /soft/tmpfile/tomcat.tar
# load为导入,-i为指定要导入的镜像文件

容器转为镜像命令

docker commit 8045860ae2db tomcat_new:1.0
# 8045860ae2db为容器id,tomcat_new:1.0 tomcat_new为生成的镜像名称,1.0为镜像版本,此种方式生成的镜像不会保留之前容器的数据卷,其他的文件修改会报错,
# 执行此命令后,会把镜像提交到本地的docker,通过docker images可以查看新生成的镜像

容器命令

说明:有了镜像才可以创建容器,
新建容器并启动

docker run -it p3terx/aria2-pro # p3terx/aria2-pro为镜像名称, -it为可以交互
docker run -id --name=容器名 -p8081:8081 p3terx/aria2-pro  # --name 给容器创建名称,-it 和-id的区别是一个是交互式,一个是守护式,交互式就是启动后直接进入容器,通过exit退出后容器会关闭,守护式是需要启动后通过docker exec 进入容器,退出容器后不会关闭
# -p 端口映射,冒号前面为宿主机端口,冒号后面为容器端口

后台启动后进入容器

docker exec -it silly_faraday /bin/bash # silly_faraday为容器名称, /bin/bash为shelll命令,固定所有容器都一样,使用  docker ps显示的NAMES列和COMMAND列

显示正在运行的容器

docker ps -aq
# -a 显示正在运行和历史运行过的容器 -q 只显示容器的id

退出容器

exit 或者ctrl + c  # 直接容器停止并退出
Ctrl + p + q # 容器不停止退出

删除容器

docker rm 容器id   # 删除单个容器,不能删除正在运行的容器,如果要强制删除 加 -f
docker rm -f $(docker ps -aq)  # 递归删除所有容器

启动和停止容器

docker start 容器id或者容器docker images结果的REPOSITORY列的值
docker restart 容器id
docker stop 容器id
docker kill 容器id  # 强制停止容器

查看容器日志

docker logs -ft --tail 100 容器id

查看容器详细信息

docker inspect 容器name  # 包含容器ip和端口号等信息

docker数据卷

概念

  • 数据卷 是宿主机的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以挂载多个数据卷
    作用
  • 容器数据持久化到宿主机的数据卷
  • 外部机器和容器间接通信
  • 容器之间数据交换

配置数据卷

创建容器时,使用-v参数设置数据卷

docker run ... -v 宿主机目录(文件):容器目录(文件) ...
# 目录必须是绝对路径
# 如果目录不存在,会自动创建
# 可以挂载多个数据卷

样例

docker run -it --name=centos1 -v /soft/containerData:/root/container_data -v /soft/containerData2:/root/container_data2 centos
# 如果挂载多个目录,则用多个-v命令

Dockerfile

作用:利用现有镜像生成一个新的镜像
dockerfile案例

FROM centos  # 选择基础镜像
MAINTAINER 1111 <aaa.com>  # 编写人
# RUN yum install -y vim  # 执行安装vim命令
WORKDIR /usr  # 进入容器后的目录
cmd /bin/bash  # 进入容器的命令

利用dockerfile生成新镜像的命令

docker build -f ./centos_dockerfile -t new_centos:1.0 .
# -f 执行dockerfile文件  -t 指定生成的新的镜像的名称和版本

异常情况

端口映射后外网无法访问

参考:https://www.yisu.com/zixun/631744.html
一开始使用命令sysctl net.ipv4.ip_forward查看结果为0,最终通过了重启docker,systemctl restart docker,再执行sysctl net.ipv4.ip_forward变为了1,再次重启容器就可以通过外网访问了,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值