赞
踩
systemctl start docker 启动docker
systemctl stop docker 关闭docker
systemctl enable docker 开机自启动docker
docker images 查看本地主机的所有镜像
docker search (镜像名) 搜索镜像
docker pull 镜像名[:tag] 下载镜像
docker run 镜像名[:tag] 运行镜像
删除镜像命令
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
#强制删除镜像
docker image rm 镜像名称/镜像ID
保存镜像(将我们的镜像保存为tar 压缩文件 这样方便镜像转移和保存)
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
示例:docker save tomcat -o /myimg.tar
加载镜像(任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像)
docker load -i 镜像保存文件位置
示例:docker load -i /myimg.tar(然后用docker images命令即可看到已加载该镜像了)
镜像标签~
容器:通过run 镜像 来构建 自己的容器实例
docker ps [-a] 查看运行容器列表(-a为列出所有容器)
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
运行容器
- docker run [可选参数] image
-
- #参数说明
- --name="名字" 指定容器名字
- -d 后台方式运行
- -it 使用交互方式运行,进入容器查看内容
- -p 指定容器的端口
- (
- -p ip:主机端口:容器端口 配置主机端口映射到容器端口
- -p 主机端口:容器端口
- -p 容器端口
- )
- -P 随机指定端口(大写的P)
docker run -it -d --name 要取的别名 镜像[:tag] /bin/bash
注意
1.这里的端口和本地机上的端口没有关系, 若相产生关联,需要使用上面提到的容器端口映射
示例:docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash
2.docker容器后台运行,必须要有一个前台的进程,否则会自动停止
停止容器
docker stop 容器名/容器ID
删除容器
- #删除一个容器
- docker rm -f 容器名/容器ID
- #删除多个容器 空格隔开要删除的容器名或容器ID
- docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
- #删除全部容器
- docker rm -f $(docker ps -aq)
进入容器
1 exec 方式(推荐)
docker exec -it 容器名/容器ID /bin/bash
2.attch方式
docker attach 容器名/容器ID
退出容器
#exit 停止并退出容器(后台方式运行则仅退出)
#Ctrl+P+Q 不停止容器退出
- 停止容器
- docker stop 容器ID/容器名
- 重启容器
- docker restart 容器ID/容器名
- 启动容器
- docker start 容器ID/容器名
- kill 容器
- docker kill 容器ID/容器名
容器文件拷贝
- #从容器内 拷出
- docker cp 容器ID/名称: 容器内路径 容器外路径
- #从外部 拷贝文件到容器内
- docker cp 容器外路径 容器ID/名称: 容器内路径
查看容器日志
docker logs [--tail number] 容器id或容器名 #num为要显示的日志条数
查看容器进程信息
docker top id或名
查看容器元数据
docker inspect id或名
开机自启动容器
启动容器时,使用docker run命令时 添加参数--restart=always
便表示,该容器随docker服务启动而自动启动
更换容器名
docker rename 容器ID/容器名 新容器名
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
格式:-v 宿主机文件存储位置:容器内文件位置
示例
- # 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
- docker run -d -p 6379:6379 --name redis505 --restart=always -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"
容器数据卷
首先启动容器1,volume01、volume02为挂载目录。
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -it --name cnetos01 ethan/centos:1.0
然后启动容器2,通过参数--volumes-from,设置容器2和容器1建立数据卷挂载关系。
[root@iZwz99sm8v95sckz8bd2c4Z /]# docker run -it --name centos02 --volumes-from cnetos01 ethan/centos:1.0
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag
示例:
我们拉取一个tomcat镜像 并持久化运行 且设置与宿主机进行端口映射
- [root@localhost user]# docker pull tomcat
- [root@localhost user]# docker run -d --name tom -p 9999:8080 tomcat
- [root@localhost user]# curl -I localhost:9999
- HTTP/1.1 404
- Content-Type: text/html;charset=utf-8
- Content-Language: en
- Transfer-Encoding: chunked
- Date: Sun, 10 Jul 2022 13:39:42 GMT
- #我们发现是404,这是因为还需要进行如下操作才可以真正启动tomcat
- #进入容器
- [root@localhost user]# docker exec -it tom /bin/bash
- root@e956083500f6:/usr/local/tomcat# cp -r webapps.dist/* webapps
- #退出容器
- [root@localhost user]# docker exec -it tom /bin/bash
- root@e956083500f6:/usr/local/tomcat# ls
- BUILDING.txt NOTICE RUNNING.txt lib temp work
- CONTRIBUTING.md README.md bin logs webapps
- LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
- root@e956083500f6:/usr/local/tomcat# cp -r webapps.dist/* webapps
- root@e956083500f6:/usr/local/tomcat# exit
- exit
- [root@localhost user]# curl -I localhost:9999
- HTTP/1.1 200
- Content-Type: text/html;charset=UTF-8
- Transfer-Encoding: chunked
- Date: Sun, 10 Jul 2022 13:42:40 GMT
- #200 成功
-
-
-
若想在本地机中访问虚拟机中的tomcat服务
虚拟机中使用ifconfig查看虚拟机ip
浏览器中访问:http://192.168.159.138:9999 成功
使用 提交命令 将在运行的tomcat 容器 打包为一个全新的镜像 名字为tom Tag为1.0
- REPOSITORY TAG IMAGE ID CREATED SIZE
- mysql latest 7e7e458be53c 4 days ago 444MB
- nginx latest 605c77e624dd 6 months ago 141MB
- tomcat latest fb5657adc892 6 months ago 680MB
- hello-world latest feb5d9fea6a5 9 months ago 13.3kB
- centos latest 5d0da3dc9764 9 months ago 231MB
- [root@localhost user]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- e956083500f6 tomcat "catalina.sh run" 38 minutes ago Up 38 minutes 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp tom
- 7137c16a9164 nginx "/docker-entrypoint.…" 46 minutes ago Up 46 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp ng01
- [root@localhost user]# docker commit -a="xiaobai" -m="xiaobai-tom" e956083500f6 tom:1.0
- sha256:f6387f05c42f0e21cd5c305b458465f09da9c099454d8753f96c268a7b5b7dd8
- [root@localhost user]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- tom 1.0 f6387f05c42f 12 seconds ago 684MB
- mysql latest 7e7e458be53c 4 days ago 444MB
- nginx latest 605c77e624dd 6 months ago 141MB
- tomcat latest fb5657adc892 6 months ago 680MB
- hello-world latest feb5d9fea6a5 9 months ago 13.3kB
- centos latest 5d0da3dc9764 9 months ago 231MB
- [root@localhost user]# docker run -d -p 9000:8080 --name my_tom tom:1.0
- 45f388e9212c1ed50308736ce16356b0eec0448693885ace10d631d11f3fc986
- [root@localhost user]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 45f388e9212c tom:1.0 "catalina.sh run" 15 seconds ago Up 13 seconds 0.0.0.0:9000->8080/tcp, :::9000->8080/tcp my_tom
- e956083500f6 tomcat "catalina.sh run" 44 minutes ago Up 44 minutes 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp tom
- 7137c16a9164 nginx "/docker-entrypoint.…" 53 minutes ago Up 53 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp ng01
完成~~~
参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。