一、docker安装
参考链接:https://docs.docker.com/engine/install/
二、常用命令
容器什么周期管理
run
—运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
options 说明
option作用
-i 以交互模式运行容器,通常与 -t 同时使用
-t 启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d 守护进程,后台运行该容器
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口
-u 以什么用户身份创建容器
--name "nginx-lb" 容器名字
-m, --memory bytes 设置容器使用内存最大值
-h, --hostname string 指定容器的 host name
--dns 8.8.8.8 指定容器 dns 服务器
-e username="ritchie" 设置环境变量
--restartDocker 重启后,容器是否自动重启
--privileged 容器内是否使用真正的 root 权限
栗子六
使用镜像 tomcat:7
以后台模式启动一个容器
将容器的 8080 端口映射到主机的 111.20.72.43:8888 端口
容器名字自定义为 tomcat77
主机的目录 /usr/local/tomcat/webapp映射到容器 /usr/local/tomcat/webapps
启动容器后,在容器内执行 bash 命令
注意:这里不加 -it 的话,容器是无法再启动的,加上才能启动容器并执行 bash 命令
docker run -d -p 111.20.72.43:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 ba
start/stop/restart
—启动、关闭、重启容器
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个或多个运行中的容器
docker restart:重启一个或多个容器
根据容器 ID 启动、关闭、重启
docker start 59aec7797ebf
docker stop 59aec7797ebf
docker restart 59aec7797ebf
根据容器名字启动、关闭、重启
docker start myTomcat3
docker stop myTomcat3
docker restart myTomcat3
启动所有容器
docker start $(docker ps -a -q)
关闭所有容器
docker stop $(docker ps -a -q)
重启所有容器
docker restart $(docker ps -a -q)
kill
—杀死容器
docker kill子命令可杀死一个或多个容器
向容器内部的主进程发送 SIGKILL 信号(默认),或使用 --signal 选项指定的信号
根据容器名字杀掉容器
docker kill tomcat7
根据容器ID杀掉容器
docker kill 65d4a94f7a39
rm
—删除容器
强制删除容器
docker rm -f tomcat7
删除所有已停止的容器
docker rm $(docker ps -a -q)
删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
create
—创建一个新的容器但不启动它
根据 tomcat 镜像,创建一个 myTomcat 容器
docker create --name=myTomcat tomcat
指定镜像 tag
docker create --name tomcat7 tomcat:7
exec
—在正在运行的容器中运行命令
执行 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
pause/unpause
docker pause:暂停一个或多个容器中的所有进程
docker unpause:恢复一个或多个容器中的所有进程
暂停 tomcat 容器的服务
docker pause tomcat7
恢复 tomcat 容器的服务
docker unpause tomcat7
attach
—进入容器正在执行的终端
options 说明
option说明
–detach-keys 覆盖用于分离容器的键序列
–no-stdin 不要附加标准输入
–sig-proxy 所有接收到的信号代理到进程
栗子
docker run -d --name topdemo ubuntu /usr/bin/top -b
docker attach topdemo
容器操作
ps
—显示容器
# 不带options
docker ps
# 显示全部容器,和总文件大小
docker ps -a -s
# 显示最近创建的容器
docker ps -l
docker ps -a -l
# 显示最近创建的 2 个容器
docker ps -n 2
# 显示完整的镜像ID
docker ps --no-trunc
# 只显示镜像ID
docker ps -q
列表字段介绍
CONTAINER ID:容器 ID
IMAGE:使用的镜像
COMMAND:启动容器时后,容器运行的命令
CREATED:容器的创建时间
STATUS:容器状态
PORTS:实际运行端口,若有指定运行端口则会显示指定的端口和默认运行端口,以及连接类型( tcp / udp )
NAMES:容器名字
SIZE:容器全部文件的总大小,也会显示容器大小
容器状态介绍
created:已创建
restarting:重启中
running:运行中
removing:迁移中
paused:暂停
exited:停止
dead:死亡
top
—显示容器正在运行的进程
列出所有运行的进程
docker top gitlab
列出指定名称的正在运行的进程
docker top gitlab | grep redis
logs
—提取容器的日志
给日志加时间戳
docker logs -t tomcat7
打印最新 5 条日志
docker logs --tail 5 tomcat7
port
—列出指定的容器的端口映射
列出容器所有端口的映射
docker port gitlab
列出容器指定端口的映射
docker port gitlab 80
列出容器指定端口和协议的映射
docker port gitlab 80/tcp
export
—将容器的文件系统导出为 tar 文件
docker export -o test.tar jenkins1
镜像仓库
login
—登录dockerhub
通过命令行方式输入账号密码
docker login
需要逐步输入账号、密码
通过参数输入账号密码
docker login -u poloyy -p ***
这种方式不安全,密码会出现在 shell 的历史记录或日志文件中
通过 STDIN 输入密码
先将密码存储在 pwd.txt 文件中
cat pwd.txt | docker login -u poloyy --password-stdin
可以解决上一个栗子的不安全问题
logout
—退出 Docker 镜像仓库,默认是 Docker hub
docker logout
push
—将本地的镜像或上传到镜像仓库,要先登录到镜像仓库
上传本地镜像的前置操作
注册 Docker hub 账号:https://www.cnblogs.com/poloyy/p/13984356.html
Linux 登录 Docker hub 账号:https://www.cnblogs.com/poloyy/p/13948922.html
给镜像设置 TAG:https://www.cnblogs.com/poloyy/p/13984781.html
docker login
docker stop 容器名/容器ID
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
#栗子
docker tag nginx01:latest hehezu/nginx:latest
docker push hehezu/nginx:latest
docker logout
当镜像配置到一定程度时,想打个 tag 进行记录当前版本,可以打个 V1
再次更新镜像时,又可以打个 V2
当是最新版本待上传时,可以不打默认就是 latest 最新
pull
—从镜像仓库中拉取或更新镜像
从 Docker Hub下载java最新版镜像
docker pull java
从 Docker Hub下载 REPOSITORY 为 java 的所有镜像
docker pull -a java
search
—从 Docker Hub 查找镜像
简单栗子
docker search nginx
搜索 star 数量>3 的 busybox 镜像并打印详细描述
docker search --filter=stars=3 --no-trunc busybox
搜索 star 数量>3000 的 mysql 镜像
docker search mysql --filter=STARS=3000
搜索自动构建的 busybox 镜像
docker search --filter is-automated=true busybox
搜索 star 数量>3 且是官方版本的 busybox 镜像
docker search --filter is-official=true --filter stars=3 busybox
容器rootfs命令
commit
—从容器创建一个新的镜像
不带参数的栗子
docker commit jenkins1 jenkins/poloyy
带参数的栗子
docker commit -a yy -m 测试笔记 jenkins1 jenkins/poloyy
cp
—在容器和主机之间复制文件/文件夹
从容器复制文件到主机
已存在的目录
docker cp tomcat7:usr/local/tomcat/README.md ./
不存在的目录
docker cp tomcat7:usr/local/tomcat/README.md test/
已存在的文件
docker cp tomcat7:usr/local/tomcat/README.md test.txt
从主机复制文件到容器
docker cp test.txt tomcat7:/
从主机复制目录到容器
目标目录不存在
docker cp test tomcat7:test/
目标是一个文件
docker cp test tomcat7:polo
目标目录已存在
docker cp test tomcat7:test/
从容器复制目录到主机
docker cp tomcat7:/usr/local/tomcat/webapps.list /usr/local/
diff
—检查容器文件系统上文件或目录的更改情况
结果字段说明
字符 说明
A 添加了文件或目录
D 删除了文件或目录
C 修改了文件或目录
根据容器名字
docker diff gitlab
根据容器ID
docker diff 78b4a7917f0d
本地镜像管理
images
—列出所有的本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
options 说明
options 作用
-a, --all 列出本地所有的镜像(含中间镜像层,默认情况下,过滤掉中间映像层)
–digests 显示镜像的摘要信息
-f, --filter filter 显示满足条件(filter)的镜像
–format string 使用模板格式化输出
–no-trunc 显示完整的镜像信息
-q, --quiet 只显示镜像ID
rmi
—删除一个或多个镜像
删除镜像,且不带 tag
docker rmi hello-world
删除镜像,且带 tag
docker rmi -f tomcat:latest
根据镜像ID,删除所有镜像
docker rmi -f fd484f19954f
删除所有镜像
docker rmi -f $(docker images -aq)
删除多个镜像
docker rmi -f tomcat mysql
tag
给本地镜像打一个标记(tag),可将其归入某一仓库
有点像 Git 里面给不同时段写的代码打不同的 tag 一样
docker tag jenkins/poloyy:latest poloyy/jenkins:new2
import
—从 tar 归档文件中创建镜像
docker import test.tar poloyy/tomcat
其他
info
—显示 Docker 系统信息,包括镜像和容器数
docker info [OPTIONS]
Client:docker 客户端信息
Server:docker 服务端信息
Containers:容器数量
Images:镜像数量
Server Version:docker 版本
Docker Root Dir:docker 根目录
Registry Mirrors:当前使用的镜像源
–rm
Automatically remove the container when it exits
该参数官方推荐,一般用来测试,这个容器用完就会自动删除,用完即删
docker run -it --rm tomcat:9.0