一、镜像
1、拉取镜像
docker pull busybox
docker pull nginx:1.26-alpine
2、查看本地镜像
[root@Rocky-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4e1b6bae1e48 18 hours ago 192MB
busybox latest ff7a7936e930 6 months ago 4.28MB
3、镜像搜索
[root@Rocky-1 ~]# docker search ubuntu
4、查看镜像信息
[root@Rocky-1 ~]# docker image inspect nginx
[{"Id": "sha256:4e1b6bae1e48cdbde8e6ec3e6ee42d86ad4780156e75790465bf6fb16c551c27","RepoTags": ["nginx:latest"],"RepoDigests": [
5、查看镜像结构
[root@Rocky-1 ~]# docker history nginx
IMAGE CREATED CREATED BY SIZE COMMENT
4e1b6bae1e48 18 hours ago CMD ["nginx" "-g" "daemon off;"] 0B buildkit.dockerfile.v0
<missing> 18 hours ago STOPSIGNAL SIGQUIT 0B buildkit.dockerfile.v0
<missing> 18 hours ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
<missing> 18 hours ago ENTRYPOINT ["/docker-entrypoint.sh"] 0B buildkit.d
6、删除镜像
[root@Rocky-1 ~]# docker rmi nginx
7、镜像导出、导入
#镜像导出
[root@Rocky-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4e1b6bae1e48 18 hours ago 192MB
busybox latest ff7a7936e930 6 months ago 4.28MB
[root@Rocky-1 ~]# docker image save -o nginx-latest.tar.gz
//-o指定导出路径
nginx:latest
[root@Rocky-1 ~]# ls
nginx-latest.tar.gz
[root@Rocky-1 ~]# du -sh nginx-latest.tar.gz
188M nginx-latest.tar.gz#docker导入
[root@Rocky-1 ~]# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:5ed8fcc66f4ed123c1b2560ed708dc148755b6e4cbd8b943fab094f2c6bfa91e
Deleted: sha256:4e1b6bae1e48cdbde8e6ec3e6ee42d86ad4780156e75790465bf6fb16c551c27
Deleted: sha256:54e3ab6292c032a67a0b40e4efb1d1103fc0cf511adc81d76d3a38b95346f723
Deleted: sha256:a0d2387b1619ddad596155d0d9b898e646b267dfdf3cbe7771cb0cdadd5d15b5
Deleted: sha256:7f2e29110e65e19a2fd3fb6f692345c62d9d1d45fccc69f0f2e4e5282bf5a153
Deleted: sha256:6326ba543c8ab9588de067410d5ad23828fcf83d5d04719a1f88c02c9118ccfa
Deleted: sha256:164dfb151284668c54c8259d6a82900f19b157b655deafc294db044ee4da219e
Deleted: sha256:6a2a04bbab5eca06a23a05254ed5166c9a548245861f9db0e23796fb87d490a3
Deleted: sha256:ea680fbff095473bb8a6c867938d6d851e11ef0c177fce983ccc83440172bd72
[root@Rocky-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest ff7a7936e930 6 months ago 4.28MB
[root@Rocky-1 ~]# docker load -i nginx-latest.tar.gz
ea680fbff095: Loading layer 77.9MB/77.9MB
bd903131a05e: Loading layer 118.7MB/118.7MB
9aad78ecf380: Loading layer 3.584kB/3.584kB
9e3c6e8c1e25: Loading layer 4.608kB/4.608kB
8d83f6b79143: Loading layer 2.56kB/2.56kB
ccc5aac17fc4: Loading layer 5.12kB/5.12kB
d1e3e4dd1aaa: Loading layer 7.168kB/7.168kB
Loaded image: nginx:latest
[root@Rocky-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4e1b6bae1e48 18 hours ago 192MB
busybox latest ff7a7936e930 6 months ago 4.28MB
二、容器
1、启动容器
#后台运行容器
[root@Rocky-1 ~]# docker run -d --name web1 -p 80:80 nginx
2cd9f1a6c72342fd1bbdcf86a2b5ee0b1199638906019aaeb6cdfba8c56113db#在容器中操作
[root@Rocky-1 ~]# docker run -it --name test busybox #重新进入容器
[root@Rocky-1 ~]# docker attach test#在容器中执行命令
[root@Rocky-1 ~]# docker exec -it test ifconfig#解释参数
-d —— 后台运行
-i —— 交互式运行
-t —— 打开一个中断
--name —— 指定容器名称
-p —— 端口映射
--rm —— 容器停止自动删除容器#创建并进入一个容器
[root@Rocky-1 ~]# docker run -d --name yes nginx
49d0e0901a9381b015fa66262fe7e14b351ff19581598d4a66c2329ea7785ef4[root@Rocky-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49d0e0901a93 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 80/tcp yes[root@Rocky-1 ~]# docker exec -it yes /bin/bash
root@49d0e0901a93:/#
2、查看容器运行信息
#查看当前运行的容器
[root@Rocky-1 ~]# docker ps #查看所有容器
[root@Rocky-1 ~]# docker ps -a#查看容器运行的详细信息
[root@Rocky-1 ~]# docker inspect yes
3、停止运行容器
#停止容器
[root@Rocky-1 ~]# docker stop test#杀死容器
[root@Rocky-1 ~]# docker kill test#开启停止容器
[root@Rocky-1 ~]# docker start test[root@Rocky-1 ~]# docker start yes
[root@Rocky-1 ~]# docker exec -it yes bash
root@769cd55a087e:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
4、删除容器
#-f 强制删除正在运行的容器[root@Rocky-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
769cd55a087e nginx "/docker-entrypoint.…" 14 minutes ago Up About a minute 0.0.0.0:80->80/tcp, [::]:80->80/tcp yes
[root@Rocky-1 ~]# docker rm yes
Error response from daemon: cannot remove container "/yes": container is running: stop the container before removing or force remove
[root@Rocky-1 ~]# docker rm -f yes
yes
[root@Rocky-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES#删除所有停止的容器
[root@Rocky-1 ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
0a33c8f1742e386c1c8c960ee3ef5a40f801c46fb4ed240e6e20b7c05eddbc97Total reclaimed space: 1.093kB
5、容器内容提交
默认情况,容器被删除后,容器内的所有操作都会被清理,包括保存的文件,像永久保存就需要把动作提交,提交后会生成新的镜像,运行新镜像时会看到提交的内容
#运行一个容器创建文件
[root@Rocky-1 ~]# docker run -d --name yes nginx
49d0e0901a9381b015fa66262fe7e14b351ff19581598d4a66c2329ea7785ef4
[root@Rocky-1 ~]# docker exec -it yes /bin/bash
root@49d0e0901a93:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
root@49d0e0901a93:/# touch leefile
root@49d0e0901a93:/# ls
bin docker-entrypoint.d home lib64 opt run sys var
boot docker-entrypoint.sh leefile media proc sbin tmp
dev etc lib mnt root srv usr
root@49d0e0901a93:/# exit
exit#删除容器
[root@Rocky-1 ~]# docker rm -f yes
yes
[root@Rocky-1 ~]# docker exec -it yes /bin/bash
Error response from daemon: No such container: yes
[root@Rocky-1 ~]# docker run -d --name yes nginx
5d07fdfdd9c02c12a9e941d9b630a6022ea308ce94dfecdc7a3cdc7033db1734
[root@Rocky-1 ~]# docker exec -it yes /bin/bash#删除容器以后创建容器,创建的文件被删除
root@5d07fdfdd9c0:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usrroot@5d07fdfdd9c0:/# touch lili.txt
root@5d07fdfdd9c0:/# ls
bin docker-entrypoint.d home lili.txt opt run sys var
boot docker-entrypoint.sh lib media proc sbin tmp
dev etc lib64 mnt root srv usr
root@5d07fdfdd9c0:/# exit
exit#提交一个容器
[root@Rocky-1 ~]# docker commit -m "add lili.txt" yes ngin
sha256:9920ef46c9588a531501c69c91e10188e0ed71425ea455702602b7d3031456ea
[root@Rocky-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ngin latest 9920ef46c958 5 seconds ago 192MB
nginx latest 4e1b6bae1e48 20 hours ago 192MB
busybox latest ff7a7936e930 6 months ago 4.28MB
6、系统中的文件与容器中的文件传输
#将容器中文件传输到系统指定目录
[root@Rocky-1 ~]# docker exec -it yes /bin/bash
root@5d07fdfdd9c0:/# ls
bin docker-entrypoint.d home lili.txt opt run sys var
boot docker-entrypoint.sh lib media proc sbin tmp
dev etc lib64 mnt root srv usr
root@5d07fdfdd9c0:/# pwd
/
root@5d07fdfdd9c0:/# exit
exit
[root@Rocky-1 ~]# docker cp yes:/lili.txt /mnt/
Successfully copied 1.54kB to /mnt/
[root@Rocky-1 ~]# ls /mnt/
lili.txt#将系统文件传输到容器指定目录
[root@Rocky-1 ~]# ls
anaconda-ks.cfg glibc-2.34.tar.gz proxysql-2.7.0-1-centos8.x86_64.rpm
glibc-2.34 nginx-latest.tar.gz proxysql-2.7.1-1-centos8.x86_64.rpm
[root@Rocky-1 ~]# pwd
/root
[root@Rocky-1 ~]# docker cp /root/glibc-2.34 yes:/
^CSuccessfully copied 194MB to yes:/
[root@Rocky-1 ~]# docker exec -it yes /bin/bash
root@5d07fdfdd9c0:/# ls
bin docker-entrypoint.d glibc-2.34 lib64 mnt root srv usr
boot docker-entrypoint.sh home lili.txt opt run sys var
dev etc lib media proc sbin tmp
7、查询容器内部日志
[root@Rocky-1 ~]# docker logs yes
/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
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/04/17 10:26:40 [notice] 1#1: using the "epoll" event method
2025/04/17 10:26:40 [notice] 1#1: nginx/1.27.5
2025/04/17 10:26:40 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2025/04/17 10:26:40 [notice] 1#1: OS: Linux 4.18.0-553.el8_10.x86_64
2025/04/17 10:26:40 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/04/17 10:26:40 [notice] 1#1: start worker processes
2025/04/17 10:26:40 [notice] 1#1: start worker process 29