云盘算Docker实验陈诉 实验一1.1 Docker下令的使用
docker官方下令文档菜鸟dockerm下令大全
仅仅是个人的课程实验陈诉,学习Docker还请参考其他更专业的文档。
云盘算实验陈诉
专 业: 数据科学与大数据技能 班 级: 数据Q201
实验1:Docker镜像容器下令测试
实验设备:
OS: Ubuntu/Centos
应用软件:Docker
实验目的:
1.把握部分镜像与容器下令
2.Docker注册中央的使用与操作
实验内容:
1、测试Docker镜像与容器下令
2、测试Docker注册中央的用法
实验陈诉要求:
以截图的情势显示代码运行结果、验证操作是否成功。
实验结果:
1.1、Docker的常用下令
资助下令:
docker version #显示docker的版本信息
# docker -v
Docker version 24.0.7, build afdd53b
# docker version
Client: Docker Engine - Community
Version: 24.0.7
API version: 1.43
Go version: go1.20.10
Git commit: afdd53b
Built: Thu Oct 26 09:11:35 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.7
API version: 1.43 (minimum version 1.12)
Go version: go1.20.10
Git commit: 311b9ff
Built: Thu Oct 26 09:10:36 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.24
GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc:
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info #显示docker的系统信息,包罗镜像和容器的数量
# docker info
Client: Docker Engine - Community
Version: 24.0.7
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version:v0.11.2
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version:v2.21.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 24.0.7
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc version: v1.1.9-0-gccaecfc
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.781GiB
Name: lh2022
ID: fb7e86a2-fd72-44f2-9033-6e476d82aa8e
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://d45q22s3.mirror.aliyuncs.com/
Live Restore Enabled: false
docker --help #万能下令,查阅下令详情
# docker --help
Usage:docker COMMAND
A self-sufficient runtime for containers
Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log in to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information
Management Commands:
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.11.2)
compose* Docker Compose (Docker Inc., v2.21.0)
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Swarm Commands:
swarm Manage Swarm
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
export Export a container's filesystem as a tar archive
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Global Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon
(overrides DOCKER_HOST env var and default context set with
"docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket to connect to
-l, --log-level string Set the logging level ("debug", "info", "warn", "error",
"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default
"/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Run 'docker COMMAND --help' for more information on a command.
For more help on how to use Docker, head to https://docs.docker.com/go/guides/
docker详细下令–help # 检察docker下令资助文档
# docker ps --help
Usage:docker ps
List containers
Aliases:
docker container ls, docker container list, docker container ps, docker ps
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Format output using a custom template:
'table': Print output in table format with column
headers (default)
'table TEMPLATE': Print output in table format using the given
Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more
information about formatting output with templates
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
镜像下令:
docker images #检察所有本地镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
mysql latest 3218b38490ce 23 months ago 516MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
各个选项说明:
[*]REPOSITORY:表示镜像的堆栈源
[*]TAG:镜像的标签版本号
[*]IMAGE ID:镜像ID
[*]CREATED:镜像创建时间
[*]SIZE:镜像大小
同一堆栈源可以有多个TAG版本,代表这个堆栈源的差别个版本,使用 REPOSITORY:TAG 来定义差别的镜像。
用–help下令检察该下令的详细使用方法。
# docker images --help
Usage:docker images ]
List images
Aliases:
docker image ls, docker image list, docker images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Format output using a custom template:
'table': Print output in table format with column
headers (default)
'table TEMPLATE': Print output in table format using the given
Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more
information about formatting output with templates
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
Options
-a, --all #列出所有的镜像
-q, --quite #只显示镜像的id
# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
mysql latest 3218b38490ce 23 months ago 516MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
# docker images -q
c20987f18b13
3218b38490ce
feb5d9fea6a5
docker search #搜刮镜像
docker search 镜像名(搜刮全部相干镜像)
# docker search hello-world
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hello-world Hello World! (an example of minimal Dockeriz… 2137
rancher/hello-world This container image is no longer maintained… 4
okteto/hello-world 0
tacc/hello-world 0
armswdev/c-hello-world Simple hello-world C program on Alpine Linux… 0
用 --help 下令检察该下令的详细使用方法。
# docker search --help
Usage:docker search TERM
Search Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results
--no-trunc Don't truncate output
docker search 镜像名 -f 过滤条件 #搜刮符合过滤条件的镜像 f=filter 即过滤器。
搜刮吗hello-world 镜像的 stats>=3000的镜像。
# docker search hello-world --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
搜刮stats>=2000的镜像。
# docker search hello-world --filter=STARS=2000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hello-world Hello World! (an example of minimal Dockeriz… 2137
#
docker pull #下载镜像
docker pull 镜像名 #下载指定镜像,默认下载最新版本
docker pull 镜像名:版本号 #下载指定版本的镜像
默认下载最新版本的mysql。
# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
下载指定版本的镜像。
# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
检察本地所以镜像,确认刚才的操作拉取成功。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
mysql latest 3218b38490ce 23 months ago 516MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
docker rmi #删除镜像
docker rmi -f IMAGE ID #根据镜像的编号镜像删除,-f :force(强制)删除
# docker rmi -ffeb5d9fea6a5
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 23 months ago 448MB
mysql latest 3218b38490ce 23 months ago 516MB
docker rmi -f $(docker images -aq) #批量删除镜像
# docker rmi $(docker images -aq)
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92
Untagged: mysql:latest
Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
#
docker system df # 检察镜像/容器/数据卷所占的空间
# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
容器下令:
docker pull 镜像名
有镜像才可以创建容器。之前批量删除了镜像,现在需要再拉取一些镜像:
docker pull centos
docker pull ubuntu
分别拉取最新版本的centos镜像和ubuntu镜像。
# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
#
检察镜像,拉取成功。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
新建容器并启动
docker run [可选参数] image #启动容器
参数说明
[*]–name=“Name”容器名字
[*]-d后台方式运行
[*]-it使用交互方式运行,进入容器检察内容
[*]-p随机指定端口\ -p主机端口︰容器端口 -p容器端口
第一次实验创建并启动容器,检察目次。
# docker run -it centos /bin/bash
# ls
binetc lib lost+foundmntprocrun srvtmpvar
devhomelib64media optrootsbinsysusr
# exit
exit
# docker run -it ubuntu /bin/bash
root@0091bc9b9ff3:/# ls
bin devhomelib32libx32mntprocrun srvtmpvar
bootetclib lib64media optrootsbinsysusr
root@0091bc9b9ff3:/# exit
exit
docker ps #检察运行中的容器
docker ps -a #检察所有的容器(运行中的容器+运行过的容器)
docker ps -q #检察运行中的容器Id
docker ps -aq #检察所有的容器Id
检察运行中的容器。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
第二次创建并启动容器,且centos容器使用“Ctrl + Q + P”方式退出容器。Ubuntu容器直接“exit”退出容器。
# docker run -it centos /bin/bash
# #
# docker run -it ubuntu /bin/bash
root@566457c9d521:/# exit
exit
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5268f5413d3 centos "/bin/bash" 2 minutes ago Up 2 minutes agitated_kapitsa
#
发现运行中的容器中有centos而没有Ubuntu,是因为他们的退出方式差别。这两种退出容器方式的区别:
[*]exit :退出容器,直接停止容器并退出;
[*]Ctrl + Q + P :退出容器,容器不绝止运行。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
566457c9d521 ubuntu "/bin/bash" About a minute ago Exited (0) About a minute ago laughing_leavitt
2882d1edd0ac ubuntu "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago quirky_blackwell
87494ab4a5c9 ubuntu "/bin/bash" 3 minutes ago Exited (0) 3 minutes ago tender_carver
d5268f5413d3 centos "/bin/bash" 4 minutes ago Up 4 minutes agitated_kapitsa
0091bc9b9ff3 ubuntu "/bin/bash" 10 minutes ago Exited (0) 9 minutes ago affectionate_pare
930c0fbc66fb centos "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago pensive_franklin
#
docker rm 容器id #删除容器
删除指定的容器不能删除正在运行的容器,如果要强制删除利用 -f “docker rm -f 容器id ”强制删除容器。
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q | xargs docker rm #起首通过docker ps -a -q获取所有容器的ID列表,然后将这些ID列表作为参数转达给docker rm下令,以此来删除所有的容器。
注:xargs是给下令转达参数的一个过滤器,也是组合多个下令的一个工具。
检察运行中的容器id,并删除容器。
# docker ps -q
d5268f5413d3
# docker rm d5268f5413d3
Error response from daemon: You cannot remove a running container d5268f5413d3f1c7042fdf366a9257454ac827e0260a9195bbd2e6e9e475dc6a. Stop the container before attempting removal or force remove
# docker rm -f d5268f5413d3
d5268f5413d3
# docker ps -q
#
发现正常的删除语句不能删除正在运行的容器,但是加上-f就可以强制删除成功。
删除所有的容器。
# docker rm -f $(docker ps -aq)
566457c9d521
2882d1edd0ac
87494ab4a5c9
0091bc9b9ff3
930c0fbc66fb
#
创建一个新容器用后续容器的启动和停止操作。
# docker run -it ubuntu /bin/bash
root@23ba1c7ae31e:/# exit
exit
# docker ps -aq
23ba1c7ae31e
docker start 容器id #启动容器
docker stop 容器id #停止当前正在运行的容器
docker restart 容器id #重启容器
docker kill 容器id #停止当前正在运行的容器
# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES23ba1c7ae31e ubuntu "/bin/bash" 4 minutes ago Exited (0) 4 minutes ago optimistic_agnesi# docker start 23ba1c7ae31e23ba1c7ae31e# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES23ba1c7ae31e ubuntu "/bin/bash" 4 minutes ago Up 5 seconds optimistic_agnesi# docker stop 23ba1c7ae31e23ba1c7ae31e# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
docker restart 23ba1c7ae31e23ba1c7ae31e# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES23ba1c7ae31e ubuntu "/bin/bash" 5 minutes ago Up 1 second optimistic_agnesi# docker kill 23ba1c7ae31e23ba1c7ae31e# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
观察使用下令后的"STATUS "。
docker attach 容器名 #进入正在运行的容器
创建一个名叫ub1的容器,用“Ctrl + Q + P”退出容器但是不绝止运行。再用docker attach:重要的作用是进入正在运行的容器。
# docker run -it --name ub1 ubuntu
root@16683ac148d2:/# ls
bin devhomelib32libx32mntprocrun srvtmpvar
bootetclib lib64media optrootsbinsysusr
root@16683ac148d2:/# read escape sequence
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16683ac148d2 ubuntu "bash" About a minute ago Up About a minute ub1
23ba1c7ae31e ubuntu "/bin/bash" 11 hours ago Exited (0) 11 hours ago optimistic_agnesi
# docker attach ub1
root@16683ac148d2:/# exit
exit
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16683ac148d2 ubuntu "bash" 2 minutes ago Exited (0) 4 seconds ago ub1
23ba1c7ae31e ubuntu "/bin/bash" 11 hours ago Exited (0) 11 hours ago optimistic_agnesi
#
docker commit : 重要功能为当前容器提交打包为镜像
[*]-a:添加作者信息;
[*]-c:修改Dockerfile指令-m:提交修改说明;
[*]-p:在commit时,将容器暂停;
[*]-m:提交时的说明文字;
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES16683ac148d2 ubuntu "bash" 12 minutes ago Exited (0) 10 minutes ago ub123ba1c7ae31e ubuntu "/bin/bash" 11 hours ago Exited (0) 11 hours ago optimistic_agnesi# docker commit -a "lh" -m "my ubuntu,tag=v1 " 16683ac148d2 myubuntu:v1sha256:abfa3ff80204b3268c8756339627651dc2a2173bdce023eb7f2d4d7e17c1291a# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmyubuntu v1 abfa3ff80204 8 seconds ago 72.8MBubuntu latest ba6acccedd29 2 years ago 72.8MBcentos latest 5d0da3dc9764 2 years ago 231MB# docker cp 下令
作用:雷同于Linux中的cp,用于在宿主机和容器之间移动复制文件
例子:把容器中的c_test.txt文件复制到宿主机中。
1、创建容器;
2、启动并进入容器;
3、在容器中/home/目次下创建c_test.txt;
4、使用cp下令完成复制。
实验环境:
主机本地/root/Docker下:
# pwd
/root/Docker
# ls
2000
进入容器:创建文件退却出容器但不绝止(CTRL+P+Q)。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16683ac148d2 ubuntu "bash" 21 minutes ago Exited (0) 3 seconds ago ub1
23ba1c7ae31e ubuntu "/bin/bash" 11 hours ago Exited (0) 11 hours ago optimistic_agnesi
# docker start ub1
ub1
# docker attach ub1
root@16683ac148d2:/# cd /home
root@16683ac148d2:/home# ls
root@16683ac148d2:/home# echo"here is container~" > c_test.txt
root@16683ac148d2:/home# ls
c_test.txt
root@16683ac148d2:/home# cat c_test.txt
here is container~
root@16683ac148d2:/home# read escape sequence
#
在主机使用docker cp 下令。
# docker cp ub1:/home/c_test.txt/root/Docker/
Successfully copied 2.05kB to /root/Docker/
# ls
2000c_test.txt
# cat c_test.txt
here is container~
#
可以发现原来在主机/root/Docker 目次下是没有c_test.txt文件的,但是使用docker cp下令后,成功将容器中/home/c_test.txt复制到宿主机/root/Docker 目次下。
在宿主机中创建文件h_test.txt,使用cp下令将文件复制到容器/home/目次。
# echo "这里是宿主机" > h_test.txt
# ls
2000c_test.txth_test.txt
# docker cp h_test.txt ub1:/home/
Successfully copied 2.05kB to ub1:/home/
# docker attach ub1
root@16683ac148d2:/home# ls
c_test.txth_test.txt
root@16683ac148d2:/home# cat h_test.txt
这里是宿主机
root@16683ac148d2:/home#
删除所有容器后。
# docker rm $(docker ps -aq)
16683ac148d2
23ba1c7ae31e
# docker ps -aq
#
docker create #创建容器但不启动的下令
用法同 docker run
通过docker create下令创建容器后,可以使用docker start containerID的方式启动容器。
# docker create --name ub2 -it ubuntu /bin/bash
238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 6 seconds ago Created ub2
# docker start 238e629747a4
238e629747a4
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" About a minute ago Up 2 seconds ub2
#
可以发现使用docker create下令创建ub2容器后,ub2并没有自动启动运行。如果要启动它可以使用docker start containerID的方式启动容器。
pdocker diff #检察容器里文件结构的更改的下令
作用:可列出容器内发生厘革的文件和目次,厘革包罗(增,删,改)。
# docker diff ub2
# docker cp h_test.txt ub2:/home
Successfully copied 2.05kB to ub2:/home
# docker diff ub2
C /home
A /home/h_test.txt
#
docker events #检察变乱的下令
docker events下令用于检察Docker引擎的实时变乱。通过-f参数,可以过滤不须要的变乱,包罗容器、镜像、卷和网络相干的变乱。
# 分屏1
# docker events
2023-11-15T18:48:49.628580359-08:00 container kill 238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd (image=ubuntu, name=ub2, signal=15)
2023-11-15T18:48:49.757849329-08:00 network disconnect 8e75735fe85954df37e129075fb78291b9b0d9dbfc3f5a79e0d3db6d3dfd80bb (container=238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd, name=bridge, type=bridge)
2023-11-15T18:48:49.767037301-08:00 container stop 238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd (image=ubuntu, name=ub2)
2023-11-15T18:48:49.769831302-08:00 container die 238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd (execDuration=2466, exitCode=0, image=ubuntu, name=ub2)
# 分配2
# docker stop ub2
ub2
#
以下是对各种变乱范例的整理:
1.容器相干变乱:
[*]attach:容器附加到标准输入、输出和错误流
[*]commit:生存容器的文件系统状态为新的镜像
[*]copy:从容器复制文件或目次
[*]create:创建新容器
[*]destroy:烧毁容器
[*]…
docker events -f container=
# 分屏1
# docker events -f container=ub2
2023-11-15T18:50:51.562283074-08:00 container start 238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd (image=ubuntu, name=ub2)
# 分屏2
# docker start ub2
ub2
#
2.镜像相干变乱:
[*]delete:删除镜像
[*]import:导入镜像
[*]load:从归档文件加载镜像
[*]pull:拉取镜像
[*]…
docker events -f image=
3.卷相干变乱:
[*]create:创建卷
[*]mount:挂载卷
[*]unmount:卸载卷
[*]destroy:烧毁卷
[*]…
docker events -f volume=
4.网络相干变乱:
[*]create:创建网络
[*]connect:将容器毗连到网络
[*]disconnect:将容器从网络断开
[*]destroy:烧毁网络
[*]…
docker events -f network=
通过这些示例,可以过滤并检察特定范例的Docker变乱,以便更好地监控和管理Docker引擎的活动。
docker exec #进入容器的下令:
该下令重要用于进入容器内部进行操作。比attach功能更强大(exec使用率较高)
[*]-d:分离模式,即在后台运行下令
[*]-i:交互模式
[*]-t:分配一个 tty(终端驱动步调)
[*]-u:指定用户和用户组,格式:<name|uid>[:<group|gid>]
exec下令进入容器内部就如同进入另一台机器一样,可以灵活操作,而且使用exit下令退出时,不会像attach那样导致容器停止。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 45 minutes ago Up About a minute ub2
# docker exec -it ub2 /bin/bash
root@238e629747a4:/# exit
exit
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 46 minutes ago Up 2 minutes ub2
# docker attachub2
root@238e629747a4:/# exit
exit
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 46 minutes ago Exited (0) 3 seconds ago ub2
#
实现本地镜像的导出、导入(export、import、save、load)
docker export #导出容器的下令:
该下令用于导出本地存储的容器,导出的容器通常为tar包。
docker export -o /var/www/container.tar container
docker export container > /var/www/container.tar
[*]-o:指定目标文件位置和名称。
[*]container:容器名
注:使用 docker export 下令不会压缩容器大小
# ls
2000c_test.txth_test.txt
# docker export -o ./ub2.tar ub2
# ls
2000c_test.txth_test.txtub2.tar
# docker export ub2 > ./ubub.tar
# ls
2000c_test.txth_test.txtub2.tarubub.tar
#
docker import #导入容器的下令
该下令与 docker export下令相对,用于导入容器,从归档文件中创建一个镜像,导入后酿成镜像。
语法: docker import file |URL|- ]
参数说明:
[*]-c : --change list :通过Dockerfile来创建镜像
[*]docker import -c ${filePath}
[*]-m : --message string :设置提交时的说明信息
[*]docker import -m ${message}
从本地导入:docker import /root/Docker/ub2.tar myubu:v2
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu v1 abfa3ff80204 2 hours ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
# docker import /root/Docker/ub2.tar myubu:v2
sha256:4e5c141c83f093d74f9bc4491d01354a79a60d1dd81f633f07b6eb25e8693945
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubu v2 4e5c141c83f0 2 seconds ago 72.8MB
myubuntu v1 abfa3ff80204 2 hours ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
#
docker save #生存镜像
docker load #载入镜像
docker load下令用于导入使用docker save下令导出的镜像。通过该下令,可以将之前生存的镜像文件重新加载到Docker中。
常用参数:
[*]-i:指定要导入的文件。
[*]-q:精简输出信息。
例如,要导入名为ubuntu.tar的镜像文件,可以使用以下下令:
docker load -i ubuntu.tar
或者
docker load < ubuntu.tar
这将导入ubuntu.tar文件作为一个镜像。
需要留意的是,docker load下令只能导入镜像,无法导入容器。如果需要导出容器,请使用docker export下令;如果需要将容器导入为镜像,请使用docker import下令。
在导入镜像之前,通常需要先使用docker save下令将镜像导出为一个文件。例如,使用以下下令将名为myubuntu:v1的镜像导出为ub100.tar文件:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubu v2 4e5c141c83f0 21 minutes ago 72.8MB
myubuntu v1 abfa3ff80204 2 hours ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
# ls
2000c_test.txth_test.txtub2.tarubub.tar
# docker save -o ub100.tar myubuntu:v1
# ls
2000c_test.txth_test.txtub100.tarub2.tarubub.tar
#
再删除myubuntu:v1 镜像。
# docker rmi myubuntu:v1
Untagged: myubuntu:v1
Deleted: sha256:abfa3ff80204b3268c8756339627651dc2a2173bdce023eb7f2d4d7e17c1291a
Deleted: sha256:5154950c32caaca682dc87951263b479f8187c6c74b0eb9f5bec36e276087823
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubu v2 4e5c141c83f0 23 minutes ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
#
然后,可以使用docker load下令将ub100.tar文件导入为一个镜像。docker load -i ub100.tar 。
# docker load -i ub100.tar
6914406b2a6b: Loading layer 2.56kB/2.56kB
Loaded image: myubuntu:v1
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubu v2 4e5c141c83f0 24 minutes ago 72.8MB
myubuntu v1 abfa3ff80204 2 hours ago 72.8MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos latest 5d0da3dc9764 2 years ago 231MB
#
再检察镜像发现导入成功。
总结起来,docker load下令用于导入使用docker save下令导出的镜像文件,是将之前生存的镜像重新加载到Docker中的操作。
export、import和save、load是两种差别的方法,不能混用。
导出和生存的格式差别:
[*]Docker export 导出的是容器的文件系统,格式为 .tar 文件。
[*]Docker save 生存的是镜像,格式为 .tar 文件。
导入和加载的方式差别:
[*]Docker import 可以从 .tar 文件导入镜像,创建新的镜像。
[*]Docker load 可以从 .tar 文件加载镜像,创建新的镜像。
文件大小差别:
[*]export 导出的镜像文件体积小于 save 生存的镜像。
是否可以对镜像重命名:
[*]Docker import 可以为镜像指定新名称。
[*]Docker load 不能对载入的镜像重命名。
是否可以同时将多个镜像打包到一个文件中:
[*]Docker export 不支持。
[*]Docker save 支持。
是否包含镜像汗青:
[*]export 导出(import 导入)丢失镜像所有的汗青记录和元数据信息,无法进行回滚操作。
[*]save 生存(load 加载)的镜像保留镜像的汗青,可以回滚到之前的层(layer)。
应用场景差别:
[*]Docker export 实用于制作基础镜像,用于容器文件系统备份和共享。
[*]Docker save 实用于多个镜像组合的部署场景,用于镜像的备份和共享。
docker history #检察镜像汗青的下令:
该下令用于显示镜像的汗青,检察镜像的汗青厘革。
例:dockerhistory ubuntu:latest
# docker history ubuntu:latest
IMAGE CREATED CREATED BY SIZE COMMENT
ba6acccedd29 2 years ago /bin/sh -c #(nop)CMD ["bash"] 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:5d68d27cc15a80653… 72.8MB
# docker history myubu:v2
IMAGE CREATED CREATED BY SIZE COMMENT
4e5c141c83f0 27 minutes ago 72.8MB Imported from -
# docker history myubuntu:v1
IMAGE CREATED CREATED BY SIZE COMMENT
abfa3ff80204 2 hours ago bash 8B my ubuntu,tag=v1
<missing> 2 years ago /bin/sh -c #(nop)CMD ["bash"] 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:5d68d27cc15a80653… 72.8MB
docker inspect #检察各项详细信息的下令:
获取容器/镜像的元数据。
语法:docker inspect NAME|ID
OPTIONS说明:
[*]-f :指定返回值的模板文件。
[*]-s :显示总的文件大小。
[*]–type :为指定范例返回JSON。
例:以ub1容器为例
此下令可以检察容器:IP地址、Mac地址、日志等等
# docker inspect ub2
[
{
"Id": "238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd",
"Created": "2023-11-16T02:06:36.095363783Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "2023-11-16T02:50:51.557878979Z",
"FinishedAt": "2023-11-16T02:53:29.19971954Z"
},
"Image": "sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1",
"ResolvConfPath": "/var/lib/docker/containers/238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd/hostname",
"HostsPath": "/var/lib/docker/containers/238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd/hosts",
"LogPath": "/var/lib/docker/containers/238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd/238e629747a48a847af3d9300ce007f5c47884ffcd6029339b099215bf5055bd-json.log",
"Name": "/ub2",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
17,
95
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": [],
"BlkioDeviceWriteBps": [],
"BlkioDeviceReadIOps": [],
"BlkioDeviceWriteIOps": [],
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/cc7de16eeedc3032ee3e4d63e43f4eec607d861ed87000a58f1473b93ffb4c6f-init/diff:/var/lib/docker/overlay2/81040a27ad2991a0f03d38a70d3f541dc867955b596d36671bbcc4ff89e80b66/diff",
"MergedDir": "/var/lib/docker/overlay2/cc7de16eeedc3032ee3e4d63e43f4eec607d861ed87000a58f1473b93ffb4c6f/merged",
"UpperDir": "/var/lib/docker/overlay2/cc7de16eeedc3032ee3e4d63e43f4eec607d861ed87000a58f1473b93ffb4c6f/diff",
"WorkDir": "/var/lib/docker/overlay2/cc7de16eeedc3032ee3e4d63e43f4eec607d861ed87000a58f1473b93ffb4c6f/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "238e629747a4",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "ubuntu",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "c19b11e3e2d34dce5d767270e64a89e83c29c90e4cc43954b577e4759cdc06d4",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/c19b11e3e2d3",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "8e75735fe85954df37e129075fb78291b9b0d9dbfc3f5a79e0d3db6d3dfd80bb",
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
#
# docker inspect --format='{{range.NetworkSettings.Networks}}{{.NetworkID}}{{end}}' ub2
8e75735fe85954df37e129075fb78291b9b0d9dbfc3f5a79e0d3db6d3dfd80bb
docker kill #杀死容器的下令:
该下令用于快速杀掉容器的进程,常用于无法停止容器的时候,使用docker kill下令可以让一个无响应的容器停止。
与docker stop的区别:给容器发送差别的信号,stop下令将会发送SIGTERM信号,容器接收到此信号的默认举动会导致容器退出,同时也允许容器内的步调自行处理,而kill发出的信号为SIGKILL信号,此信号使得容器必然退出。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 2 hours ago Up 2 seconds ub2
# docker kill ub2
ub2
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
238e629747a4 ubuntu "/bin/bash" 2 hours ago Exited (137) 1 second ago ub2
#
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]