docker
1.docker组成 1.1镜像(Image) docker镜像就好比一个模板,我们可以通过这个模板来创建容器服务,tomcat镜像=>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
1.2容器(container) docker利用容器技术,独立运行一个或者一组应用 通过镜像来创建启动,停止,删除,基本命令! 目前就可以把这个容器理解为就是一个简易的linux系统
1.3仓库(repository) 存放镜像的地方,也分为公有仓库和私有仓库
2.docker安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 1.卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2.需要的安装包 yum install -y yum-utils # 3.设置镜像的仓库 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 默认是从国外的。 yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推荐使用阿里云的。 # 安装容器之前,更新yum软件包索引。 yum makecache fast # 4.安装容器相关的。docker-ce(社区版)docker-ee(企业版) yum install docker-ce docker-ce-cli containerd.io # 5.启动docker systemctl start docker # 6.使用docker version查看是否安装成功
2.1测试安装 1 2 docker -v #查看版本 docker run hello-world # 测试hello-world
2.2查看镜像 1 docker images -a # 查看所有镜像
2.3查看容器 1 docker ps -a #查看所有容器(不管启动还是停止)
3.docekr使用 3.1帮助命令 1 2 3 docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker --help # 帮助命令
3.2镜像命令 1 2 3 4 5 6 7 docekr images -a #显示所有镜像 docker images -q #仅显示镜像id # REPOSITORY 镜像的仓库源 # TAG 镜像的标签 # IMAGE ID 镜像的id # CREATED 镜像的创建时间 # SIZE 镜像的大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 docker search#搜索镜像,命令参数可选 # 下载镜像:docker pull 镜像名[:tag] [root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker pull mysql Using default tag: latest # 如果不写tag,默认就是latest,最新的版本 latest: Pulling from library/mysql 72a69066d2fe: Pull complete # 分层下载,docker image的核心,联合文件下载 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d5d7efb64e: Pull complete ac563158d721: Pull complete d2ba16033dad: Pull complete 688ba7d5c01a: Pull complete 00e060b6d11d: Pull complete 1c04857f594f: Pull complete 4d7cfa90e6ea: Pull complete e0431212d27d: Pull complete Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址 # 两个命令是等价的 docker pull mysql docker pull docker.io/library/mysql:latest # 指定版本下载 [root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql 72a69066d2fe: Already exists # 联合文件下载,已经存在的资源可以共用 93619dbc5b36: Already exists 99da31dd6142: Already exists 626033c43d70: Already exists 37d5d7efb64e: Already exists ac563158d721: Already exists d2ba16033dad: Already exists 0ceb82207cd7: Pull complete 37f2405cae96: Pull complete e2482e017e53: Pull complete 70deed891d42: Pull complete Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7
1 2 3 [root@JWei_0124 //]# docker rmi -f 镜像id # 删除指定的镜像 [root@JWei_0124 //]# docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像(空格分隔) [root@JWei_0124 //]# docker rmi -f $(docker images -aq) # 删除全部的镜像
3.3容器命令 新建容器并启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 docker run [可选参数] image # 参数说明 --name="name" 容器名字:用来区分容器 -d 后台方式运行:相当于nohup -it 使用交互式运行:进入容器查看内容 -p 指定容器的端口(四种方式)小写字母p -p ip:主机端口:容器端口 -p 主机端口:容器端口 -p 容器端口 容器端口 -P 随机指定端口(大写字母P) # 测试:启动并进入容器 [root@JWei_0124 module]# docker run -it centos /bin/bash [root@f8fad61a6c96 /]# ls # 查看容器内的centos(基础版本,很多命令都是不完善的) bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var # 从容器中退回到主机 [root@f8fad61a6c96 /]# exit exit [root@JWei_0124 module]# [root@JWei_0124 /]# ls bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var www
列出所有的容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 docker ps # 列出当前正在运行的容器 # 命令参数可选项 -a # 列出当前正在运行的容器+历史运行过的容器 -n=? # 显示最近创建的容器(可以指定显示几条,比如-n=1) -q # 只显示容器的编号 [root@JWei_0124 //]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@JWei_0124 //]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8fad61a6c96 centos "/bin/bash" 2 minutes ago Exited (0) About a minute ago epic_greider b4b5e50d9889 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago suspicious_mendeleev 321c5e25bca9 feb5d9fea6a5 "/hello" 2 hours ago Exited (0) 2 hours ago wonderful_saha [root@JWei_0124 //]# docker ps -a -n=1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8fad61a6c96 centos "/bin/bash" 2 minutes ago Exited (0) About a minute ago epic_greider [root@JWei_0124 //]#
退出容器
1 2 3 4 5 6 7 8 9 10 exit # 容器直接停止,并退出 ctrl+P+Q # 容器不停止,退出 [root@JWei_0124 //]# docker run -it centos /bin/bash //交互式进入 [root@68b68a9576e0 /]# [root@JWei_0124 //]# //按快捷键 自动输入 [root@JWei_0124 //]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 68b68a9576e0 centos "/bin/bash" 2 minutes ago Up 2 minutes peaceful_jemison [root@JWei_0124 //]#
删除容器
1 2 3 4 5 6 docker stop []#停止容器 docker rm [容器id] # 删除容器(不能删除正在运行的容器)如果要强制删除:docker rm -f 容器id docker rmi []#删除镜像 docker rm -f $(docker ps -aq) # 删除全部容器 docker ps -a -q|xargs docker rm # 删除所有容器
登录和启动容器
1 2 3 4 5 docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前正在运行的容器 docker kill 容器id # 强制停止当前容器