五分钟 docker 入门,工作这些命令就够用了

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 五分钟 docker 入门,工作这些命令就够用了
现在很多公司项目部署都是采用K8S docker容器方式,出门面试被问的概率极大,如果被面试官问docker相关知识点直接懵逼,那么基本就是被pass了,除非其他方面技术过硬。所以这种相对前沿的技术,就算达不到精通的程度,起码还是要了解基础理论和操作

一.安装docker

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

  • uname -an 查看当前系统版本
  • yum -y install docker 下载安装docker
  • service docker start 启动docker服务

    • docker version 检查docker是否安装成功

当看到下图的信息,就是表示本机docker已经安装成功,很简单
在这里插入图片描述

二.镜像操作

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

搜索镜像

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

目前机器里还没有镜像,去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前面是两个-, 端口前面有-pdocker.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

由于我用的阿里云服务器,所以需要在阿里云把8080端口开放
在这里插入图片描述

删除容器

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

docker stop container_nginx 或者是容器的id

docker rm -f container_nginx 容器删除

docker start 与 docker run 的区别

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

docker run 创建并启动一个容器

docker run 命令其实是 docker createdocker 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容器就创建完了 。。。。。。。。。。。。

反过来大家再看一看docker的容器与镜像的区别 https://www.cnblogs.com/linjiaxin/p/7381421.html

那么其实镜像与容器的本质区别并不大,那么镜像可以生成容器 ,容器是否可以做成镜像呢?

docket commit container_nginx  image_nginx:v1

在这里插入图片描述
container_nginx 容器名

image_nginx:v1 自己起一个镜像的名字:版本号


这样做有什么好处呢?

例如:A、B两台机器都想安装redis,A机器上创建容器并在容器中做好redis的一切配置,让后将这个容器docker commit 成镜像image_redis,B机器也想要安装redis,直接用镜像image_redis创建容器就行了,docker就是做这样一劳永逸的事情。

而且传统方式得在每台机器上安装配置redis非常麻烦

四.镜像的导入与导出

镜像压缩打包 (主机上进行操作),有两种方式 docker savedocker loaddocker export 与 docker import

docker save nginx | gzip > nginx_xin_image.tar.gz  将现有的镜像压缩打包

docker load -i nginx_xin_image.tar.gz  压缩的镜像解压

docker images 进行查看

docker save 是直接将镜像进行打包 docker save <镜像名>或<镜像id>

docker export container_nginx> nginx_image.tar  

cat nginx_image.tar | sudo docker import  - nginx_image:import

docker export 是直接将容器进行打包 docker export <容器名>或<容器id>

需要注意两种方法配套的,切不可混用。虽然导入导出时没问题,但是在创建容器时候会报错

如果使用import导入save产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,

会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。

类似,使用load载入export产生的文件,也会出现问题。

先写到这,文章略显粗糙,希望对您有一点用,学无止境加油!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
22 2
|
24天前
|
安全 Docker 容器
|
24天前
|
网络安全 数据安全/隐私保护 Docker
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
83 5
|
23天前
|
存储 监控 安全
|
7天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
13天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
49 2
|
20天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
30 3
|
23天前
|
存储 关系型数据库 MySQL
|
25天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
43 2