容器卷
docker volume
用法:docker volume [command]
docker volume rm [OPTIONS] VOLUME [VOLUME...] #删除数据卷
docker volume create for_tomcat #创建volume数据卷,名称叫for_tomcat
docker volume ls #查看当前所有数据卷信息
docker run -d -p 8014:80 --mount type=volume, source=for_tomcat, target=/usr./local/tomcat/webapps #启动容器并指定数据卷
卸载旧版本docker
sudo yum -y remove docker*
查看docker版本
docker --version
启动docker
sudo systemctl start docker
设置docker开机自启动
sudo systemctl enable docker
重启docker
sudo systemctl restart docker
停止docker
sudo systemctl stop docker
查看docker中的所有镜像
docker images
下载镜像
docker pull
语法:docker pull 镜像名称【:版本号】
docker pull xx #拉取容器/镜像 name:tag 指定版本,默认latest
搜索镜像
docker search
语法:docker search 【参数】搜索项
参数 | 说明 |
---|---|
-f | 根据提供的格式筛选结果 |
--limit | 展示最大的结果数,默认为25 |
docker search xx #搜索的范围是官方镜像和所有个人公共镜像
删除镜像
docker rmi
docker rmi 镜像ID
docker rmi 镜像ID1, 镜像ID2, 镜像ID3...
从压缩包中加载镜像
docker load
语法:docker load -i 镜像备份文件.tar
案例
#从test.tar压缩包中加载镜像
docker load -i test.tar 或者 cat test.tar | docker load
登录镜像仓库
docker login
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
语法:docker login [options] [docker镜像仓库地址]
参数 | 说明 |
---|---|
-u | 登录的用户名 |
-p | 登录的密码 |
案例
docker login -u admin -p 1234566
登出镜像仓库
docker logout
登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法:docker logout [options] [docker镜像仓库地址]
参数 | 说明 |
---|---|
-u | 登录的用户名 |
-p | 登录的密码 |
案例
docker logout -u admin -p 1234566
将定制的镜像备份到本地文件
docker save
语法:docker save -o 备份文件名.tar 镜像名称
案例
docker save -o "C: Users\57696\Desktop\images3\helloconsole.tar" he1loconsole_jw3.
构建镜像
docker build
语法:docker build [options] path | url | -
参数 | 说明 |
---|---|
path | 表示要构建镜像的上下文路径,通常是包含 Dockerfile 的目录。 |
url | 远程 Git 仓库的 URL,可以直接从远程仓库构建镜像。 |
- | 从标准输入流中读取 Dockerfile 的内容进行构建。 |
案例
#构建镜像并指定标签
docker build -t my-image:tag #构建过程中传递构建参数,ARG_NAME为参数名称,value为参数值
docker build --build-arg ARG_NAME=value -t my-image:tag#从远程Git仓库构建镜像
docker build -t my-image:tag https://github.com/username/repo.git
docker容器操作
创建容器
docker create
语法:docker create [options] <容器名称或ID> [command] [arg...]
参数options | 说明 |
---|---|
-t | 为容器分配一个虚拟终端,通常与-i搭配使用 |
-i | 以交互模式运行容器,通常与-t搭配使用 |
--name | 为容器指定名称,不提供则默认随机分配一个 |
--restart | 容器退出时是否自动重启,默认为no,always代表自动重启 |
-P | 随机端口映射 |
-p | 指定端口映射,主机端口:容器端口 |
-e | 配置信息 |
-d | 后台执行(创建并启动命令需要加此参数),返回容器ID,退出命令窗口容器也不会停止; |
-v | 主机和容器目录映射关系,主机目录:容器目录 |
案例:
docker create --name myapp_jw4 mcr.microsoft.com/dotnet/core/samples
docker create -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root mysql --restart=always mysql
创建并启动容器
docker run
语法:docker run [options] <容器名称或ID> [command] [arg...]
参数options | 说明 |
---|---|
-t | 为容器分配一个虚拟终端,通常与-i搭配使用 |
-i | 以交互模式运行容器,通常与-t搭配使用 |
--name | 为容器指定名称,不提供则默认随机分配一个 |
--restart | 容器退出时是否自动重启,默认为no,always代表自动重启 |
-P | 随机端口映射 |
-p | 指定端口映射,主机端口:容器端口 |
-e | 配置信息 |
-d | 后台执行(创建并启动命令需要加此参数),返回容器ID,退出命令窗口容器也不会停止; |
-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:80 -v /data:/data -d nginx:latest#绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash#使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash#创建并启动mysql容器 自动重启
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
--restart=always mysql#创建并启动mysql容器 挂载目录卷 自动重启
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root\
-v /usr/local/docker/mysql/data:/var/lib/mysql\
--restart=always -d mysql
列出启动容器
- 显示正在运行的容器:docker container ls
语法: docker container ls [options]
选项
名称,简写 | 默认值 | 描述 |
---|---|---|
--all, -a | false | 显示所有容器(默认只显示运行的) |
--filter, -f | 根据提供的条件过滤输出 | |
--format | 使用Go模板打印容器 | |
--last, -n | -1 | 显示最后创建的n个容器(包括所有状态) |
--latest, -l | false | 显示最新创建的容器(包括所有状态) |
--no-trunc | false | 不要截断输出 |
--quiet, -q | false | 显示容器ID |
--size, -s | false | 显示文件大小 |
- 查看docker 容器进程信息:docker ps
语法:docker ps [options]
参数options | 说明 |
---|---|
-a | 显示所有容器 |
案例
docker ps -a #显示所有容器(默认显示正在运行)
docker ps #显示正在运行中的容器
docker ps | grep ${CONTAINER_ID} #查看容器状态
停止容器
停止运行容器,运行后状态变为Exited:docker stop
语法
- docker stop <容器ID或名称> #停止指定容器
- docker stop $(docker ps -q) #停止所有容器
案例
docker stop mysql
强制停止容器
强制关闭一个或多个处于暂停或运行状态的容器:docker kill
语法:docker kill 容器ID或名称
案例:
docker kill mysql
注意事项:不推荐使用,容易造成容器服务不正常关闭。
启动容器
docker start
语法:docker start [options] <容器ID或名称>
参数 | 说明 |
---|---|
-a | 将当前的输入/输出连接到容器 |
-i | 将当前的输入连接到容器上 |
案例
docker start mysql
注意:如果是控制台程序,需要有交互,例如输入内容,需要 -i参数。
暂停容器
docker pause
语法:docker pause <容器ID或名称>
案例
docker pause mysql
恢复容器
docker unpause
语法:docker unpause <容器ID或名称>
案例
docker unpause mysql
删除容器
docker rm
语法:
- docker rm [options] <容器ID或名称>
- docker rm $(docker ps -a -q) #删除所有已停止的容器
参数 | 说明 |
---|---|
-f | 强制删除容器 |
-v | 删除容器的同时删除容器的数据卷 |
案例
docker rm mysql
注意:删除的容器必须是关闭状态。
重启容器
docker restart
语法:docker restart [options] CONTAINER1 CONTAINER2 CONTAINER3...
参数 | 说明 |
---|---|
-time | 指定Docker给容器多少时间来完成停止操作 |
案例
docker restart my_container #重启1个容器
docker restart my_container1 my_container2 #重启多个容器
docker restart $(docker ps -q) #重启所有容器
查看容器日志
docker logs
语法:docker logs [options]
参数 | 说明 |
---|---|
-f | 长期监控日志数据 |
-t | 额外增加时间戳 |
--tail | 行数,显示末尾多少行日志 |
案例
docker logs mysql
docker logs -f -t --tail 5 mysql
查看容器中运行的进程
docker top
语法:docker top <容器ID或名称>
案例
docker top mysql
查看容器内部详情
docker inspect
语法:docker inspect [options] <容器ID或名称>
参数 | 说明 |
---|---|
-f | 指定返回值的模板文件 |
-s | 显示总的文件大小 |
--type | 为指定类型返回JSON |
案例
docker inspect mysql
复制容器数据到宿主机
docker cp
语法:docker cp <容器ID或名称>:容器内路径 宿主机路径
案例
docker cp mysql:/etc/mysql ~/tmp/conf #复制Mysql配置到宿主机
与运行中的容器交互
在容器中执行命令:docker exec
语法:docker exec [options] <容器名称或ID> [command] [arg...]
参数 | 说明 |
---|---|
-i | 以交互模式运行容器,通常与-t搭配使用 |
-t | 为容器重新分配一个伪终端,通常与-i搭配使用 |
案例
docker exec -it <容器ID或名称> /bin/bash #进入指定id的容器docker exec -it mysql bashdocker exec -i my_container echo "Hello Docker"