docker命令小全 this is my note.
服务器类型:linux =》centos 7.x以上版本
1.安装yum-util(为配置docker安装时使用阿里镜像做准备):yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置docker安装时使用阿里镜像:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker-ce(社区版,因为企业版(dockker-ee)收费):yum install docker-ce
4.在此路径创建文件(没有此路径就自己创建):/etc/docker/daemon.json
·)编辑该文件:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
5.启动docker:systemctl start docker
6.查看docker运行状态:systemctl status docker
7.停止docker服务:systemctl stop docker
8.重启docker:systemctl restart docker
9.开机自启动docker:systemctl enable docker
====================以上为系统命令,以下为docker命令===================
10.查看docker本身的概要信息(需要先启动docker):docker info
----------------------------------①镜像相关-----------------------------------------
(镜像:可以类比成安装包,但是和安装包又不同,镜像删除后就对应程序不可以再使用了,安装包删除后只要之前执行了安装操作就可以随意删除,而不会影响程序运行)
11.查看镜像:docker images
12.搜索镜像:docker search 镜像名称
13.拉取镜像(默认拉取最新版本,也可加冒号去指定版本):docker pull 镜像名称
14.删除镜像(前提是对应镜像没有容器或停止容器):docker rmi 镜像id或名称
15.删除所有镜像(前提是所有镜像都不可以有启动着的容器):docker rmi `docker images -q`
----------------------------------②容器相关-----------------------------------------
(容器:给镜像进行分配运行时的环境资源也就是内存,可以类比成将安装包双击安装的操作。)
16.查看正在运行的容器:docker ps
17.查看所有容器:docker ps -a
18.查看最后一次运行的容器:docker ps -1
19.查看停止的容器:docker ps -f status=exited
20.创建容器:docker run
·)-i:表示运行容器
·)-t:表示容器启动后会进入其命令行
·)--name:为创建的容器命名
·)-v:表示目录映射关系
·)-p:表示端口映射,前者是宿主机端口,后者是容器内端口,可以有多个-p做多端口映射
·)-d:表示会创建一个守护式容器在后台运行,也就是后台运行,不进入对应命令行。(与 -t 相反)
21.交互式方式创建容器:docker run -it --name=自定义容器名称 镜像名称:标签 /bin/bash //说明:也就是创建容器并运行在前台(一旦退出前台,对应容器也就停止运行)
22.守护式方式创建容器:docker run -di --name=自定义容器名称 镜像名称:标签 //说明:也就是创建容器并运行在后台(进退无影响,推荐此方式)
·)进入容器:docker exec -it 容器名称 /bin/bash
23.停止容器:docker stop 容器名称或id
24.启动容器:docker start 容器名称或id
25.文件拷贝:·)将文件拷贝到容器内:docker cp 需要拷贝的文件或目录 容器名称:容器目录
·)将文件从容器内拷贝出去:docker cp 容器名称:容器目录 需要拷贝的文件或目录
26.目录挂载:docker run -di --name=自定义名称 -v 宿主机目录:容器目录 镜像名称:标签
27.查看容器ip:·)查看容器运行的各种数据:docker inspect 容器名称或id
·)只查看容器ip(也就是筛选出自己想要的数据):docker inspect --format='{.networksettings.ipaddress}' 容器名称或id
28.删除容器(必须先停止容器):docker rm 容器名称或id
===================以上是docker操作,以下是docker中(开发)环境的搭建=======================
29.创建并启动mysql容器并进行端口映射mysql,远程连接:docker run -di --name=docker_mysql -p 宿主机端口:容器端口 -e mysql_root_password=自定义远程连接密码 centos/mysql-57-centos7(镜像名称)
30.创建并启动tomcat容器,并进行端口以及文件夹映射:docker run -di --name=docker_tomcat -p 8008:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:latest
31.创建并启动nginx容器,并进行端口映射:docker run -di --name=docker_nginx -p 80:80 nginx
·)修改访问nginx默认的静态资源: (这个配置可有可无,为了不影响排版,所以图片只能放大了看唷,哦吼吼)
32.创建并启动redis容器,并进行端口映射:docker run -di --name=docker_redis -p 6379:6379 redis
之后就可以在本地使用redis-cli链接远端redis进行操作了。
======================docker的备份与迁移=============================
33.将容器保存为镜像①:docker commit 要备份的容器名 备份后的镜像名
34.将镜像保存为tar文件②:docker save -o 打包成的文件名 备份后的镜像名
35.镜像的恢复与迁移③:docker load -i tar文件
======================dockerfile脚本构建=============================
dockerfile:根据基础镜像(操作系统,或者dockerfile构建出来的新镜像),创建新的镜像(开发环境,项目等)。
使用dockerfile脚本创建镜像的好处:
·)对于开发人员:可以为开发人员提供一个完全一致的开发环境,避免环境冲突。
·)对于测试人员:可以直接拿开发时构建的镜像或者通过原来的dockerfile文件构建新的镜像开始工作。
·)对于运维人员:部署时,可以实现应用的无缝移植。
---dockerfile常用命令,此脚本必须在dockerfile文件中编辑,可以使用vim直接创建dockerfile,文件名称固定---
36.from image_name:tag:使用哪个基础镜像启动构建流程 //使用前本地存在,不存在则自动下载
37.maintainer 自定义username:声明镜像的创建者
38.env key value:配置环境变量,可以写多条。
39.run command:执行某个linux命令,dockerfile中常用于创建目录,它dockerfile核心部分,也可以写多条。
40.add source_dir/file dest_dir/file:将宿主机的文件复制到容器内,如果只压缩文件,将会在执行时自动解压。
41.copy source_dir/file dest_dir/file:和add差不多,只是说有压缩文件时不会自动解压。
42.workdir path_dir:设置工作目录。(基于哪个目录去工作)。
栗子:以构建jdk1.8镜像为例:首先所在文件夹中存在jdk1.8的压缩包,然后使用vim在dockerfile中编辑以下内容,以下除run命令下以外,其他所有文件和文件夹必须已经存在,。
from centos:latest
maintainer myzyt
workdir /usr
run mkdir /usr/local/java
add jdk-8u221-linux-x64.tar.gz /usr/local/java/
env java_home /usr/local/java/jdk1.8.0_221
env jre_home $java_home/jre
env classpath $java_home/bin/dt.jar:$java_home/lib/tools.jar:$jre_home/lib:$classpath
env path $java_home/bin:$path
最后执行该脚本:docker build -t='jdk1.8' . //其中'jdk1.8'表示新镜像名称, . 表示当前目录,用于指定dockerfile文件所在文件夹。
========================docker私有仓库(registry)的配置==================================
43.拉取镜像:docker pull registry
44.创建私有仓库容器:docker run -di --name=registry -p 5000:5000 registry
45.编辑daemon.json文件,使docker信任私有仓库地址:vi /etc/docker/daemon.json
·)json中添加内容:"insecure-registries":["ip:5000"]
46.重启docker服务:systemctl restart docker
47.将镜像上传到私有仓库:
·)第一步:打标签,为上传做准备:docker tag jdk1.8 ip:5000/jdk1.8
·)第二步:启动docker私服:docker start registry
·)第三步:上传镜像:docker push ip:5000/jdk1.8
48.上传远程镜像:将第45条中编辑的本地ip改为远程ip或者添加新的配置。启动本地私服,直接执行上传第三步中的标签ip:5000/jdk1.8,更换为远程标签即可,其他步骤不变。