前言
在学会如何进行项目的开发以后,发现仅仅会项目的开发还算不上一个合格的Java程序员,还要学会如何将项目在服务器上进行部署。之前通过Linux的方式将项目部署到了服务器上,但是Linux方式部署的过程相较于docker来说过于繁琐,因此决定学习docker这种更为简便的方法,将学习docker的过程在此进行记录。 学习资料:狂神说Java_Docker 使用软件:MobaXterm
提示:以下是本篇文章正文内容,下面案例可供参考
一、Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。是完全使用沙箱机制,彼此之间没有任何接口。 来源:Docker_百度百科:https://baike.baidu.com/item/Docker/13344470?fr=aladdin
二、Docker常用命令
1. 帮助命令
docker version
docker info
docker 命令 --help
docker帮助文档的地址:https://docs.docker.com/engine/reference/commandline/docker/
2. 镜像命令
docker images
docker images
[root@VM-16-16-centos /]
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5d89766432d0 6 weeks ago 105MB
nginx latest f8f4ffc8092c 6 weeks ago 133MB
mysql latest 2fe463762680 6 weeks ago 514MB
rabbitmq management 2121b269a508 6 weeks ago 253MB
hello-world latest feb5d9fea6a5 6 weeks ago 13.3kB
elasticsearch 7.9.2 caa7a21ca06e 13 months ago 763MB
daocloud.io/library/mysql 8.0.13 102816b1ee7d 2 years ago 486MB
REPOSITORY 仓库的镜像源
TAG 镜像的标签,显示镜像的版本信息
IMAGE ID 镜像ID
CREATED 镜像的创建时间
SIZE 镜像的大小
Options:
-a, --all
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet
docker search
docker search
[root@VM-16-16-centos /]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11665 [OK]
mariadb MariaDB Server is a high performing open sou… 4444 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 867 [OK]
percona Percona Server is a fork of the MySQL relati… 561 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 366 [OK]
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 (default 25)
--no-trunc Don't truncate output
--filter=STARS=3000
docker search mysql --filter STARS=3000 命令执行结果: 此时搜索出的镜像STARS的数量都在3000以上
docker pull
docker pull
[root@VM-16-16-centos /]
Using default tag: latest
latest: Pulling from library/mysql
b380bbd43752: Pull complete
f23cbf2ecc5d: Pull complete
30cfc6c29c0a: Pull complete
b38609286cbe: Pull complete
8211d9e66cd6: Pull complete
2313f9eeca4a: Pull complete
7eb487d00da0: Pull complete
4d7421c8152e: Pull complete
77f3d8811a28: Pull complete
cce755338cba: Pull complete
69b753046b9f: Pull complete
b2e64b0ab53c: Pull complete
Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
docker pull mysql
docker pull docker.io/library/mysql:latest
docker pull mysql:5.7
下载指定版本的docker
docker rmi
docker rmi 镜像Id
批量删除镜像
方法一
docker rmi -f $(docker images -aq)
方法二:
docker rmi -f 镜像Id1 镜像Id2 镜像Id3...
在删除过程中可能会遇到无法删除的错误,是因为此时该镜像的容器正在运行,要想删除该镜像应该先将容器关闭,执行命令docker stop 容器Id 即可
3. 容器命令
有了镜像才可以创建容器
在这里跟着狂神以CentOS系统为例
docker pull centos
拉取最新版的centos镜像,此时相当于在服务器上跑一个centos系统
容器启动命令
docker run [可选参数] 容器名称
--name="Name"
-d
-it
-p
-P
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (最常用)
-p 容器端口
容器端口
[root@VM-16-16-centos /]
[root@d59c91417c86 /]
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@d59c91417c86 /]
exit
[root@VM-16-16-centos /]
bin boot data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
退出容器命令
exit
这个命令会直接将容器进行退出,但是在退出时会将容器关闭停止,如果想要退出时不停止容器,按下Ctrl + P + Q 在容器不停止运行的情况下退出容器
查看容器命令
docker ps
-a
-n=?
-q
删除容器命令
docker rm 容器Id
docker rm -f $(docker ps -aq)
启动容器命令
docker start 容器Id
docker restart 容器Id
停止容器命令
docker stop 容器Id
docker kill 容器Id
三、Docker常用进阶命令
1. 容器命令
后台启动容器
docker run -d 镜像名称
问题:当在后台启动centos时,发现容器自动停止了 原因:docker容器使用后台运行就必须要有一个前台进程,当docker启动后发现自己没有提供服务时就会自动停止。
查看日志命令
docker logs [可选参数] [容器Id]
-f, --follow
-n, --tail string
-t, --timestamps
进入正在运行的容器
方法一:
docker exec -it 容器Id bashShell
[root@VM-16-16-centos ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 20 minutes ago Up 20 minutes laughing_nash
[root@VM-16-16-centos ~]
[root@8b58f0b6cfb0 /]
方法二:
docker attach 容器Id
[root@VM-16-16-centos ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 27 minutes ago Up 27 minutes laughing_nash
[root@VM-16-16-centos ~]
[root@8b58f0b6cfb0 /]
两种方法的区别:
- docker exec:进入容器后开启一个新的终端,可以在里面操作(常用)
- docker attach:进入容器正在执行的终端,不会启动新的进程
查看容器的进程命令
查看容器的进程信息时要查看的容器必须是正在运行的容器
docker top 容器Id
[root@VM-16-16-centos ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b58f0b6cfb0 centos "/bin/bash" 10 seconds ago Up 10 seconds laughing_nash
[root@VM-16-16-centos ~]
UID PID PPID C STIME TTY TIME CMD
root 1453522 1453502 0 19:35 pts/0 00:00:00 /bin/bash
拷贝容器内的文件到主机
docker cp 容器Id:容器内容路径 目的的主机路径
2. 镜像命令
查看镜像元数据
docker inspect 容器Id
总结
以上便是docker中基本的镜像命令和容器命令,在docker中还有很多的命令,要想学好docker,只有不断的使用命令才能将其理解和记忆,除此以外没有其它捷径。 当坚强成为唯一的选择,才知道自己可以有多坚强。在坚持不住的时候,记得告诉自己,再坚持一下。想一千次,不如去做一次!
|