网站建设 业务培训,福建微网站建设公司,英雄传奇网页版登录,wordpress系统设置容器与镜像的区别
image镜像
Docker image是一个read-only文件#xff0c;位于磁盘上这个文件包含文件系统#xff0c;源码#xff0c;库文件#xff0c;依赖#xff0c;工具等一些运行application所需要的文件可以理解成一个模板docker image具有分层的概念
container…容器与镜像的区别
image镜像
Docker image是一个read-only文件位于磁盘上这个文件包含文件系统源码库文件依赖工具等一些运行application所需要的文件可以理解成一个模板docker image具有分层的概念
container容器
一个运行中的docker image位于内存中实质是复制image并在image最上层加上一层read-write的层称之为container layer,容器层基于同一个image可以创建多个container
容器的基本操作
容器的基本操作都是命令docker container开头大部分情况下可以简写为docker例如docker container run可以简写为docker run。
下面是docker container开头的命令列表
$ docker container --helpUsage: docker container COMMANDManage containersCommands:attach Attach local standard input, output, and error streams to a running containercommit Create a new image from a containers changescp Copy files/folders between a container and the local filesystemcreate Create a new containerdiff Inspect changes to files or directories on a containers filesystemexec Run a command in a running containerexport Export a containers filesystem as a tar archiveinspect Display detailed information on one or more containerskill Kill one or more running containerslogs Fetch the logs of a containerls List containerspause Pause all processes within one or more containersport List port mappings or a specific mapping for the containerprune Remove all stopped containersrename Rename a containerrestart Restart one or more containersrm Remove one or more containersrun Run a command in a new containerstart Start one or more stopped containersstats Display a live stream of container(s) resource usage statisticsstop Stop one or more running containerstop Display the running processes of a containerunpause Unpause all processes within one or more containersupdate Update configuration of one or more containerswait Block until one or more containers stop, then print their exit codesdocker container create
docker container create只是新建一个容器并不启动一个容器。
$ docker container create --name nginx -p 8899:80 nginx
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6edocker container run
docker container run新建并启动一个容器。
$ docker container run -d --name nginx -p 8899:80 nginx
ee86be635d8b0ff99e36796191da4ee5c34241f37dc0f66c8b21e2a85517e9de选项
-d表示以detach模式后台运行–name为容器指定一个名字-p端口映射宿主机端口为8899映射到docker内端口80
docker container ls
docker container ls查看启动的容器也可以简写为docker ps或者docker container ps。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ee86be635d8b nginx /docker-entrypoint.… 2 minutes ago Up 2 minutes 0.0.0.0:8899-80/tcp, :::8899-80/tcp nginx选项
-a列出所有的容器包括正在运行的和已停止运行的-l显示最近创建的容器-n显示最近创建的n个容器-q只显示容器ID
docker container stop
docker container stop停止运行中的容器后面需要带上容器的名称或者IDID可以只写前面几位不需要写全能根据ID前缀找到对应的唯一的容器即可其他带ID的命令也类似。
$ docker container stop ee86be635d8b
ee86be635d8b$ docker container stop nginx
nginx$ docker container stop ee8
ee8docker container start
docker container start启动已停止的容器。
$ docker container start nginx
nginxdocker container restart
docker container restart重启运行中的容器。
$ docker container restart nginx
nginxdocker container kill
docker container kill强制停止运行中的容器。
$ docker container kill nginx
nginxdocker container rm
docker container rm可以删除容器。
$ docker container rm nginx
nginx如果容器的状态是正在运行中是不可以删除的此时可以加上-f选项来强制删除运行中的容器。
docker container logs
docker container logs可以用来查看容器的日志。
$ docker container logs -f nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
。。。。。。如果要实时的日志可以使用-f选项类似于tail -f命令。
docker container top
docker container top可以用来查看容器内的进程情况类似于top命令。
$ docker container top nginx
UID PID PPID C STIME TTY TIME CMD
root 6083 6063 0 19:37 pts/0 00:00:00 nginx: master process nginx -g daemon off;
systemd 6144 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6145 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6146 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6147 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6148 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6149 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6150 6083 0 19:37 pts/0 00:00:00 nginx: worker process
systemd 6151 6083 0 19:37 pts/0 00:00:00 nginx: worker processdocker container inspect
docker container inspect查看容器的详细信息如镜像信息、环境变量、网络等。
$ docker container inspect nginx
。。。。。。docker container exec
docker container exec可以进入到运行中的容器并执行一个命令。
$ docker container exec -it nginx /bin/bash
root11f5e64bb119:/#docker container attach
docker container attach同样可以进入到运行中的容器并执行一个命令。
docker container attach进入容器然后退出会导致容器停止而docker container exec进入容器后退出不会导致容器停止这是两者的区别。
$ docker container attach nginxdocker container cp
docker container cp用来在宿主机和容器之间拷贝文件。
从宿主机拷贝文件到容器中
$ docker container cp test.txt nginx:/home从容器中拷贝文件到宿主机
$ docker container cp nginx:/docker-entrypoint.sh .docker container export
docker container export是将一个容器导出为一个压缩的镜像。
$ docker container export nginx nginx.tar.gz后续如果要将这个压缩的镜像导入要使用docker image import命令。
docker container commit
docker container commit是将一个容器提交为为一个镜像。
$ docker container commit -m nginx v1.0 nginx nginx:v1.0
sha256:0b36bf0f81dda62c4ced29e84d0b44a7c812bb643b2c1d898df0b8897f58c964docker container diff
docker container diff命令用于检查容器文件系统上文件或目录的更改。
$ docker container diff nginx
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.confdocker container pause
docker container pause暂停一个或多个容器内的所有进程。
$ docker container pause nginx
nginx使用docker container ls可以看到容器的状态为pause。
docker container unpause
docker container unpause取消暂停一个或多个容器内的所有进程。
$ docker container unpause nginx
nginx此时容器的状态又变为UP。
docker container rename
docker container rename重命名容器。
$ docker container rename nginx ngdocker container port
docker container port列出容器的端口映射或容器的特定映射。
$ docker container port nginx
80/tcp - 0.0.0.0:8899
80/tcp - :::8899docker container update
docker container update可以更新一个或多个容器的配置可以更新CPU、内存等配置信息。
具体可以更新的选项如下
$ docker container update --helpUsage: docker container update [OPTIONS] CONTAINER [CONTAINER...]Update configuration of one or more containersOptions:--blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota--cpu-rt-period int Limit the CPU real-time period in microseconds--cpu-rt-runtime int Limit the CPU real-time runtime in microseconds-c, --cpu-shares int CPU shares (relative weight)--cpus decimal Number of CPUs--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)--kernel-memory bytes Kernel memory limit-m, --memory bytes Memory limit--memory-reservation bytes Memory soft limit--memory-swap bytes Swap limit equal to memory plus swap: -1 to enable unlimited swap--pids-limit int Tune container pids limit (set -1 for unlimited)--restart string Restart policy to apply when a container exits下面的例子可以更改容器的重启策略
$ docker container update --restartno nginx
nginx参数说明
no默认策略在容器退出时不重启容器on-failure在容器非正常退出时退出状态非0才会重启容器on-failure:3在容器非正常退出时重启容器最多重启3次always在容器退出时总是重启容器unless-stopped在容器退出时总是重启容器但是不考虑在Docker守护进程启动时就已经停止了的容器
docker container wait
docker container wait阻止一个或多个容器停止然后打印退出代码。
$ docker container wait nginx
0docker container prune
docker container prune删除所有停止的容器。
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6e容器运行的两种交互模式
attach模式
例如
$ docker container run -p 80:80 nginx通过这种方式创建的容器容器会在前台执行。
容器的输入输出结果会反映到本地端本地端的输入输出也会反映到容器例如能在终端看到网页浏览器的 logctrlc会让容器停止。
一般情况不推荐使用attach模式。
detach模式
例如
$ docker container run -d -p 80:80 nginx
73773e7f0d409e4fba9b1ca6b0c0f2eebab7fa9b030dfe4d2c1cf2865c7275bd通过这种方式创建的容器会在后台执行命令行打印完容器的ID就结束了。
连接容器的shell
docker container run -it创建一个容器并进入交互式模式
$ docker container run -it nginx /bin/bash
root7faafc56bd4f:/# exit
exit如果带了-d参数-it就不会生效。
docker container exec -it在一个已经运行的容器里执行一个额外的command
$ docker container run -d nginx
06d4f86b592e417c876bc66bd62f5ddbd3aeaa1c8c6dd93670ef73151f32a851$ docker container exec -it 06 bash
root06d4f86b592e:/#批量删除容器
$ docker container rm -f $(docker container ls -aq)
06d4f86b592e
7faafc56bd4fdocker container run背后发生了什么
$ docker container run -d --publish 80:80 --name webhost nginx在本地查找是否有nginx这个image镜像但是没有发现去远程的image registry查找nginx镜像默认的registry是Docker Hub)下载最新版本的nginx镜像 nginx:latest 默认)基于nginx镜像来创建一个新的容器并且准备运行docker engine分配给这个容器一个虚拟IP地址在宿主机上打开80端口并把容器的80端口转发到宿主机上启动容器运行指定的命令这里是一个shell脚本去启动nginx