参考阿里云文档:https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY
参考菜鸟教程文档:https://m.runoob.com/docker/centos-docker-install.html
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期。通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。它的优点就在于:1.实现虚拟化,更好的资源隔离和共享。2.一次编写,四处运行
容器与虚拟机比较
Docker安装与基本命令
安装:yum install docker
查看版本:docker -v
启动:systemctl start docker
停止:systemctl stop docker
重启:systemctl restart docker
查看状态:systemctl status docker
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看docker帮助文档:docker –help
卸载docker
- 卸载 yum remove docker docker-common docker-selinux docker-engine
- 删除docker 镜像 rm -rf /var/lib/docker
- 搜索,什么都没有就卸载干净了 yum list installed|grep docker
Docker镜像操作
3.1 搜索镜像:docker search 镜像名称 例如:docker search centos docker search mysql docker search tomcat
3.2 下载镜像:docker pull 镜像名称 因为docker镜像仓库在国外下载起来巨慢,所以我们需要使用国内的镜像地址。
// 1. 编辑该文件,如果没有就先创建 vim /etc/docker/daemon.json // 2. 加入下面配置 { "registry-mirrors": ["http://hub-mirror.c.163.com"] } // 3. 重启docker
下载zookeeper: docker pull zookeeper
3.3 查看本地所有镜像:docker images
* REPOSITORY:镜像所在的仓库名称
* TAG:镜像标签
* IMAGE ID:镜像ID
* CREATED:镜像的创建日期(不是获取该镜像的日期)
* SIZE:镜像大小
* 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
3.4 删除 删除指定镜像: docker rmi -f 镜像id 删除所有镜像: docker rmi -f `docker images -q`
Docker容器操作
创建容器常用的参数说明:
4.1创建容器命令:docker run
-i:表示运行容器 -t:表示容器启动后会进入其命令行 加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名
-v:表示目录映射关系(数据需要持久化的最好都映射下,容器被删掉之后下次新建的映射目录相同的话,数据可以直接使用;比如mysql。) 前者是宿主机目录,后者是映射到容器上的目录, 可以使用多个-v做多个目录或文件映射。
-d:在run后面加上-d参数这样创建容器后不会自动登录容器
-p:表示端口映射;前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
4.2查看容器命令:
查看正在运行的容器: docker ps
查看历史运行过的容器 : docker ps -a
查看最后一次运行的容器:docker ps -l
查看停止的容器: docker ps -f status=exited
进入运行的容器中: docker exec -it 容器id/容器名称 /bin/bash
4.3创建容器的两种方式:
// 查看所有镜像 [root@VM_0_3_centos /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 75835a67d134 3 days ago 200 MB docker.io/nginx latest be1f31be9a87 10 days ago 109 MB docker.io/redis latest 0a153379a539 10 days ago 83.4 MB docker.io/solr latest 45749c8baa2a 2 weeks ago 834 MB docker.io/zookeeper latest 89f7884dcc4e 3 weeks ago 148 MB docker.io/tomcat latest 41a54fe1f79d 4 weeks ago 463 MB docker.io/mysql latest 6a834f03bd02 5 weeks ago 484 MB [root@VM_0_3_centos /]# /** * 创建一个交互式容器(创建完成直接启动并进入容器,exit退出会自动关闭) * 容器名称不能重复 * 命名为mycentos,来源于centos镜像,版本为latest /bin/bash是命令解析器(加了就能直接进入容器命令行) */ [root@VM_0_3_centos /]# docker run -it --name=mycentos centos:latest /bin/bash [root@750f40204378 /]# // 看左边的状态,会发现现在已经进入了容器了,而不是虚拟机了。 [root@750f40204378 /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@750f40204378 ~]#// 退出 [root@750f40204378 ~]# exit [root@VM_0_3_centos /]# // 这时候docker ps 发现容器已经停止了。 /** * 创建一个守护式容器(创建完成启动容器但不会进入容器,exit退出容器也不会关闭) * 因为不需要进入容器, 所以不需要加 /bin/bas 是命令解析器。 */ [root@VM_0_3_centos ~]# docker run -id --name=mycentos2 centos:latest 35d806b3669df020a3027445047b98262521c7b4c0bcb246b1af8cd904e2296e [root@VM_0_3_centos ~]# [root@VM_0_3_centos ~]# docker ps -a // 查看历史状态发现mycentos已经停止, mycentos2还在运行。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 35d806b3669d centos:latest "/bin/bash" 27 minutes ago Up 27 minutes mycentos2 750f40204378 centos:latest "/bin/bash" About an hour ago Exited (137) 5 seconds ago mycentos
进入运行中的容器 docker exec -it 容器名称 /bin/bash 查看容器ip(只能查看运行中的容器) docker inspect 容器名
启动容器: docker start 容器名称 关闭容器: docker stop 容器名称 删除停止的容器:docker rm 容器名称
文件拷贝与目录挂载
/** * 将宿主机文件复制到容器中: * docker cp 目标目录 容器名: 指定目录 */ [root@VM_0_3_centos ~]# docker cp /usr/local/wulei/myfile mycentos:/usr/local [root@VM_0_3_centos ~]# docker exec -it mycentos /bin/bash [root@750f40204378 /]# cd /usr/local [root@750f40204378 local]# ll total 44 drwxr-xr-x 2 root root 4096 Apr 11 2018 bin drwxr-xr-x 2 root root 4096 Apr 11 2018 etc drwxr-xr-x 2 root root 4096 Apr 11 2018 games drwxr-xr-x 2 root root 4096 Apr 11 2018 include drwxr-xr-x 2 root root 4096 Apr 11 2018 lib drwxr-xr-x 2 root root 4096 Apr 11 2018 lib64 drwxr-xr-x 2 root root 4096 Apr 11 2018 libexec -rw-r--r-- 1 root root 4 Oct 14 03:35 myfile drwxr-xr-x 2 root root 4096 Apr 11 2018 sbin drwxr-xr-x 5 root root 4096 Oct 6 19:14 share drwxr-xr-x 2 root root 4096 Apr 11 2018 src /** * 把容器文件copy到宿主机中 * docker cp 容器名称:容器目录 需要拷贝的文件或目录 */ /** * 目录挂载(文件映射) * 将宿主机的indexhtml文件映射到指定目录,并命名为haha */ docker run -id --name=mycentos1 -v /usr/local/wulei/indexhtml:/usr/local/haha centos:latest /** * 目录挂载(文件夹映射 需要通过--privileged=true加持权限) * 将宿主机的wulei文件夹映射到指定目录,并命名为ok */ docker run -id --name=mycentos2 -v /usr/local/wulei:/usr/local/ok --privileged=true centos:latest