盐城做企业网站多少钱,西安网站工作室,网站建设的内容管理,北京规划网站容器是 Docker 的另一个核心概念#xff0c;简单来说#xff0c;容器是镜像的一个运行实例。所不同的是#xff0c;镜像是静态的只读文件#xff0c;而容器带有运行时需要的可写文件层#xff0c;同时#xff0c;容器中的应用进程处于运行状态。 创建容器
1新建容器 可以… 容器是 Docker 的另一个核心概念简单来说容器是镜像的一个运行实例。所不同的是镜像是静态的只读文件而容器带有运行时需要的可写文件层同时容器中的应用进程处于运行状态。 创建容器
1新建容器 可以使用 docker create 令新建一个容器例如 [rootopenEuler-node1 ~]# docker create busybox
c3e7310fa21a4a2d94b0bf6f881aed4fc8482d3d23a341f9563ce65c8027fd192启动容器 使用 docker [container] start 来启动一个已经创建的容器例如启动创建的busybox容器 [rootopenEuler-node1 ~]# docker start c3e7310fa21a
c3e7310fa21a3新建并启动容器
[rootopenEuler-node1 ~]# docker run ubuntu /bin/echo Hello world
Unable to find image ubuntu:latest locally
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
Hello world注意:如果新建容器没有这个镜像会先拉取镜像再启动容器最后执行指令。 其中t选项让 Docker 分配一个伪终端 pseudotty并绑定到容器的标准输入上-i则让容器的标准输入保持打开。更多的命令选项可以通过 man docker-run 命令来查看 [rootopenEuler-node1 ~]# docker run -it ubuntu:lB .04 /bin/bash
rootafBbae53bdd3 /#用户可以输入exit或者CtrlD退出 对于所创建的 bash 容器当用户使用 exit 命令退出 bash 进程之后容器也会自动退出这是因为对于容器来说当其中的应用退出后容器的使命完成也就没有继续运行的 必要了。 4守护态运行 更多的时候需要让 Docker 容器在后台以守护态 Daemonized 形式运行 此时可以 通过添加d 参数来实现。 [rootopenEuler-node1 ~]# docker run -d mysql:5.7 --name db
e7d8bcac87cddc1299f7a71879bece14c5d38d7d5257be03dd312d6d19c9ddb25查看容器输出 要获取容器的输出信息可以通过 docker [container] logs命令。 [rootopenEuler-node1 ~]# docker logs sql
2024-03-11 11:09:2200:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-03-11 11:09:2200:00 [Note] [Entrypoint]: Switching to dedicated user mysql
2024-03-11 11:09:2200:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-03-11 11:09:2300:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specifiedYou need to specify one of the following as an environment variable:- MYSQL_ROOT_PASSWORD- MYSQL_ALLOW_EMPTY_PASSWORD- MYSQL_RANDOM_ROOT_PASSWORD这里启动mysql报错也是非常常见的错误因为需要初始root密码 停止容器
1暂停容器 可以使用 docker [container] pause CONTAINER [CONTAINER ... 命令来暂 停一个运行中的容器。 [rootopenEuler-node1 ~]# docker pause test
test
[rootopenEuler-node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87151b0e6fe7 ubuntu bash 35 seconds ago Up 34 seconds (Paused) test可以用unpause 恢运行态
[rootopenEuler-node1 ~]# docker unpause test
test
[rootopenEuler-node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87151b0e6fe7 ubuntu bash 2 minutes ago Up 2 minutes test2终止容器 可以使用 docker [container] stop 来终止一个运行中的容器 该命令的格式为 docker [container] stop [-t I - -time [10]] [CONTA NER ...] [rootopenEuler-node1 ~]# docker stop test
test重启容器 [rootopenEuler-node1 ~]# docker restart test3进入容器 在使用d 参数时容器启动后会进入后台用户无法看到容器中的信息也无法进行 操作 这个时候如果需要进入容器进行操作推荐使用官方的 attach或 exec 命令 [rootopenEuler-node1 ~]# docker run -itd ubuntu
b0613bfdcbe14f88138ed030f37907356069142bc755fa7a2ce33749385894dd
[rootopenEuler-node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0613bfdcbe1 ubuntu bash 4 seconds ago Up 3 seconds boring_wescoff 然而使用 attach 命令有时候并不方便 当多个窗口同时 attach 到同一个容器的时 候所有窗口都会同步显示当某个窗口因命令阻塞时其他窗口也无法执行操作了。 [rootopenEuler-node1 ~]# docker attach b0613bfdcbe1
rootb0613bfdcbe1:/# .exec 命令就比较方便可以多窗口运行 [rootopenEuler-node1 ~]# docker exec -it 685af6f5c5b9 bash
root685af6f5c5b9:/# w11:25:37 up 8:16, 0 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN IDLE JCPU PCPU WHAT通过指定 it 参数来保持标准输入打开并且分配 一个伪终端通过 exec 命令对 容器执行操作是最为推荐的方式 4删除容器 可以使用 docker [container) rm 命令来删除处于终止或退出状态的容器命令格式为 docker [container] rm f, --forcefalse 是否强行终止并删除一个运行中的容器 i, --linkfalse 删除容器的连接 但保留容器 v, --volumesfalse 删除容器挂载的数据卷 [rootopenEuler-node1 ~]# docker rm -f docker ps -qa
685af6f5c5b9
b0613bfdcbe1利用反引号实现docker中容器的批量删除
5导入和导出容器
导出
docker [container] export [-o l - -output [””] ] CONTAINER 其中可以通过o 选项来指定导出的 t ar 文件名也可以直接通过重定向来实现 首先查看所有的容器如下所示 [rootopenEuler-node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d44b708c81b ubuntu:latest bash 6 seconds ago Exited (0) 5 seconds ago admiring_lamarr
015c53d29ae3 ubuntu:18.04 /bin/bash About a minute ago Exited (0) About a minute ago romantic_burnell
[rootopenEuler-node1 ~]# docker export -o test_for_run.tar 4d44b708c81b
[rootopenEuler-node1 ~]# ls
anaconda-ks.cfg dockerfile test_for_run.tar ubuntu_18.04.tar导入 导出的文件又可以使用 docker [ container ] import 命令导人变成镜像该命令格式为 docker import [-c | --change [ [ ]]] [-m | -- message[MESSAGE]] filelURLI- [REPOSITORY [:TAG]] 下面将导出的 test_ for_ run. tar 文件导人到系统中 [rootopenEuler-node1 ~]# docker import test_for_run.tar test/ubuntu:v1.0
sha256:aec871a8dd332ba4dc0828da48022c7f2e74111ca4cdd53da6700eec8703ca35查看容器 1查看容器详情 [rootopenEuler-node1 ~]# docker inspect 4d44b708c81b就一条命令可以根据容器的ID或名字看 2查看容器内进程 [rootopenEuler-node1 ~]# docker top test
UID PID PPID C STIME TTY TIME CMD
root 11103 11087 0 19:43 pts/0 00:00:00 sh3查看统计信息 [rootopenEuler-node1 ~]# docker stats test CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
823457ad116b test 0.00% 144KiB / 3.297GiB 0.00% 946B / 0B 0B / 0B