(一)docker 基础命令
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker开机自启
#查看服务是否自动启动(是:enabled | 否:disabled)
systemctl list-unit-files|grep docker.service
#设置开机启动:如不是enabled可以运行如下命令设置自启动
systemctl enable docker
#重新加载服务配置
systemctl daemon-reload
#如果希望不进行自启动,运行如下命令设置
systemctl disable docker
#重新加载服务配置
systemctl daemon-reload
查看docker信息
docker info
docker version
docker 帮助命令
docker --help
(二)docker 镜像命令
查找镜像
docker search 镜像名
拉取镜像 不加版本号即拉取docker仓库中 该镜像的最新版本latest 加版本号则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:版本号
查看本地镜像列表
docker images
docker image ls
docker images -q #查看所有镜像id
删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
#强制删除镜像
docker image rm 镜像名称/镜像ID
#清除虚悬镜像 没有具体名字的镜像全部使用 <none>表示
docker image prune
查看⼀个镜像的制作历程
docker history 镜像名称
⽤ save ⼦命令将本地仓库的镜像保存当前⽬录下
docker save -o tomcat.guo.tar 镜像名称
将本地目录下的镜像备份文件导⼊到本地 Docker 仓库
#⽅式⼀(不输出详细信息):
docker load -i tomcat.guo.tar
#⽅式⼆(输出详细信息):
docker load < tomcat.guo.tar
(三)docker 容器命令
查看容器状态
docker ps //查看运行的容器
docker ps –a //查看所有的容器(包含运行和退出)
docker container ls
docker container ls–a
基于镜像新建一个容器并启动
docker run
参数 镜像名称:tag 执⾏的命令 常⽤参数:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-i 保持和 docker 容器内的交互,启动容器时,运⾏的命令结束后,容器依然存活,没有退出(默认是会退出,即停⽌的)
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 宿主机:内部端口
-P: 随机端口映射,容器内部端口随机映射到主机的端口
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
#使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
#使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:8 -v /data:/data -d nginx:latest
#绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127..9.1:80:808/tcp ubuntu bash
启动已存在容器
docker start 容器名称/容器id
重启已关闭容器
docker restart 容器名称/容器id
关闭容器
docker stop 容器名称/容器id
删除容器
docker rm 容器名称/容器id
一次性删除所有:
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
查看控制台结果
docker logs 容器名称/容器id
设置容器开机自动启动
docker update --restart=always 容器ID
进入容器
docker exec [OPTIONS] 容器名称 COMMAND [ARG...]
OPTIONS说明:
-d,以后台方式执行命令;
-e,设置环境变量
-i,交互模式
-t,设置TTY
-u,用户名或UID,例如myuser:myusergroup
例子
执行 tomcat 容器的 startup.sh 脚本
docker exec -it tomcat7 startup.sh
进入容器的 CLI 模式(最常用)
docker exec -it tomcat7 bash
执行普通命令
docker exec -it tomcat7 pwd
指定工作目录执行命令
docker exec -it -w /usr tomcat7 pwd
以 root 用户身份进入容器(重点)
docker exec -it -uroot jenkins1 bash
在宿主机和容器之间交换⽂件
#宿主机复制一个图片到容器中:将png图片复制到了容器指定目录下
docker cp guoweixin.png tomcat2:/usr/local/tomcat/webapps/ROOT
#将容器内的index.jsp 复制出来,修改再复制回去
docker cp tomcat2:/usr/local/tomcat/webapps/ROOT/index.jsp /root
数据卷
#1 创建数据卷
docker volume create 数据卷名称
#创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下
#2 查看数据卷
docker volume inspect 数据卷名称
#3 查看全部数据卷信息
docker volume ls
#4 删除数据卷
docker volume rm 数据卷名称
#5 应用数据卷
#当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建
docker run -v 数据卷名称:容器内路径 镜像ID
#直接指定一个路径作为数据卷的存储位置
docker run -v 宿主机路径:容器内部的路径 镜像ID