五分钟快速入门 实战 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/bin/bash -i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本 dockerrun-idt--namecontainer_nginx-p8080:80docker.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~]#dockerstartcontainer_nginx container_nginx [root@iz2zehzeir87zi8q99krk1z~]#dockerexec-itcontainer_nginx/bin/bash root@84683e425116:/#whereisnginx 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-IINPUT-ptcp--dport8080-jACCEPT 由于我用的阿里云服务器,所以需要在阿里云把8080端口开放 在这里插入图片描述 删除容器 容器删除之前先将容器停止 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启动 主机和容器文件相互复制 从主机复制到容器sudodockercphost_pathcontainerID:container_path 从容器复制到主机sudodockercpcontainerID:container_pathhost_path 请注意,以上这两个命令都是在主机中执行的,不能再容器中执行 dockercpcontainer_nginx:/usr/local/xin.txt/usr/local/software/容器向主机复制文件 dockercp/usr/local/xinzhifu.txtcontainer_nginx:/usr/local/主机向容器复制文件 这样一个基础的docker容器就创建完了 。。。。。。。。。。。。 反过来大家再看一看docker的容器与镜像的区别https://www.cnblogs.com/linjiaxin/p/7381421.html 那么其实镜像与容器的本质区别并不大,那么镜像可以生成容器 ,容器是否可以做成镜像呢? docketcommitcontainer_nginximage_nginx:v1 在这里插入图片描述 container_nginx容器名 image_nginx:v1自己起一个镜像的名字:版本号 这样做有什么好处呢? 例如:A、B两台机器都想安装redis,A机器上创建容器并在容器中做好redis的一切配置,让后将这个容器docker commit 成镜像image_redis,B机器也想要安装redis,直接用镜像image_redis创建容器就行了,docker就是做这样一劳永逸的事情。 而且传统方式得在每台机器上安装配置redis非常麻烦 四.镜像的导入与导出 镜像压缩打包 (主机上进行操作),有两种方式docker save与docker load和docker export 与 docker import dockersavenginx|gzip>nginx_xin_image.tar.gz将现有的镜像压缩打包 dockerload-inginx_xin_image.tar.gz压缩的镜像解压 dockerimages进行查看 docker save是直接将镜像进行打包docker save <镜像名>或<镜像id> dockerexportcontainer_nginx>nginx_image.tar catnginx_image.tar|sudodockerimport-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产生的文件,也会出现问题。 先写到这,文章略显粗糙,希望对您有一点用,学无止境加油! 整理了几百本各类技术电子书,有需要的同学公号[程序员内点事]内回复[666]自取。技术群快满了,想进的同学可以加我好友,和大佬们一起吹吹技术。