最近在看 《Docker技术入门与实战 第3版》,随笔笔记
创建容器
-
创建容器
# 新建容器 docker create -it ubuntu:latest # 查看所有容器 docker ps -a # 启动容器 docker start 89855bd795a4
-
新建并启动容器(相当于上面三步)
docker run -it ubuntu:18.04 /bin/bash //启动并启动bash终端 docker run -it -d ubuntu:latest //启动后台运行 run命令,如果本地没有镜像,会从公共仓库下载。执行用户指定的应用程序; -t 让docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开, /bin/bash启动bash终端。 -d 后台运行 exit //退出容器
-
守护态运行
docker run -d ubuntu:latest /bin/sh -c "while true;do echo hello world; sleep 1; done"
停止容器
-
暂停容器
docker pause xxxx docker unpause xxx
-
终止容器
docker stop xxx docker start xxx docker restart xxx
-
进入容器
docker exec -it 358853f0a7bb bash
-
删除容器
docker rm [-f] 358853f0a7bb -f 表示强制删除
导入和导出容器
-
导出容器
docker export -o ubuntu_latest_container1.tar d09841ea1e8c 或 docker export d09841ea1e8c > ubuntu_latest_container2.tar
-
导入容器
docker import ubuntu_latest_container1.tar test/ubuntu:v1.0 [bigtotoro@bigtotoro ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1.0 4d004593f939 6 seconds ago 72.8MB
用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
查看容器
-
查看容器详情
docker inspect d09841ea1e8c [ { "Id": "d09841ea1e8c920b801f27ca4e1e64b4baa1eae30c23e0753ffa9e7c388dd598", "Created": "2021-12-22T14:54:35.113064643Z", "Path": "bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, ... ]
-
查看容器内进程
docker top d09841ea1e8c bigtotoro@bigtotoro ~]$ docker top d09841ea1e8c UID PID PPID C STIME TTY TIME CMD root 36290 36270 0 08:29 ? 00:00:00 bash
-
查看统计信息
docker stats d09841ea1e8c CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d09841ea1e8c nifty_euclid 0.00% 536KiB / 3.682GiB 0.01% 1.19kB / 0B 0B / 0B 1
其他容器命令
-
复制文件
docker cp docs d09841ea1e8c:/tmp //cp 命名可以将主机文件复制到容器内部 docker exec -it d09841ea1e8c bash //进入容器内部 ll /tmp //查看复制进来的文件
-
查看容器变更记录
docker diff d09841ea1e8c bigtotoro@bigtotoro ~]$ docker diff d09841ea1e8c C /root A /root/.bash_history C /tmp A /tmp/docs A /tmp/docs/.nojekyll A /tmp/docs/CentOS安装docsify.md A /tmp/docs/README.md A /tmp/docs/index.html
-
查看端口映射
docker pull nginx:latest //拉取nginx镜像 docker run -it -d -p 8088:80 nginx:latest //将主机8088映射到容器80端口,并后台启动 docker port 2555c5251dd1 [bigtotoro@bigtotoro ~]$ docker port 2555c5251dd1 80/tcp -> 0.0.0.0:8088 80/tcp -> :::8088