这里是我用docker启动所有常见的容器完美的过程,就是一次创建,后面就可以一直使用
文档:
nanshaws/docker-everything: 用docker来创建各种容器,完美文档教你按照步骤操作制造完美容器,如果你使用docker桌面版的话,这个文档也许更适合你 (github.com)
我认为的创建容器并不是简简单单的拉镜像,创建一个不完整的容器就草草了事的,而是以完美的形态,搭建端口号,创建挂载目录,把容器变的像本机的软件一样的存在
这里就简单讲一下docker的基本命令,毕竟你们点开了这篇博客,不能让你们空手回去
docker images 查看所有本地的主机的镜像
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 17 months ago 13.3kB hello-world latest feb5d9fea6a5 17 months ago 13.3kB #解释: REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 #可选项: Options: -a, --all #列出所有的镜像 -q, --quiet #只显示镜像的ID
docker search 搜索镜像
[root@localhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 13878 [OK] mariadb MariaDB Server is a high performing open sou… 5291 [OK] #可选项 --filter =stars =3000 搜索出来的镜像就是stars大于三千的 [root@localhost ~]# docker search mysql --filter=stars=10000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 13878 [OK]
docker pull 下载镜像
#下载镜像 docker pull mysql [:tag](版本) [root@localhost ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql b4ddc423e046: Pull complete b338d8e4ffd1: Pull complete b2b1b06949ab: Pull complete daf393284da9: Pull complete 1cb8337ae65d: Pull complete f6c2cc79221c: Pull complete 4cec461351e0: Pull complete ab6bf0cba08e: Pull complete 8df43cafbd11: Pull complete c6d0aac53df5: Pull complete b24148c7c251: Pull complete Digest: sha256:d8dc78532e9eb3759344bf89e6e7236a34132ab79150607eb08cc746989aa047 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址 #两个命令是等价的 docker pull mysql docker pull docker.io/library/mysql:latest #指定版本下载 [root@localhost ~]# docker pull mysql:5.7.41 5.7.41: Pulling from library/mysql e048d0a38742: Pull complete c7847c8a41cb: Pull complete 351a550f260d: Pull complete 8ce196d9d34f: Pull complete 17febb6f2030: Pull complete d4e426841fb4: Pull complete fda41038b9f8: Pull complete f47aac56b41b: Pull complete a4a90c369737: Pull complete 97091252395b: Pull complete 84fac29d61e9: Pull complete Digest: sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6 Status: Downloaded newer image for mysql:5.7.41 docker.io/library/mysql:5.7.41
docker rml 删除镜像
[root@localhost ~]# docker rmi -f be16cf2d832a Untagged: mysql:5.7.41 Untagged: mysql@sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6 Deleted: sha256:be16cf2d832a9a54ce42144e25f5ae7cc66bccf0e003837e7b5eb1a455dc742b Deleted: sha256:2dd6e094d35f48086adcdff89f36c9be8166fbbda0775b72efd9b12788a400a0 Deleted: sha256:01de218cde8a6eef7c19083f1a9dfdcc10e656651137c5083c8e8b293561e674 Deleted: sha256:84e3163c39fc29722fbea1461bc279bafc9d2da5937b1f4e5db6e08c6f08e3b4 Deleted: sha256:2b39b403c72a380afa25629a8b0af21e5bd33b071985740242e63856e6453359 Deleted: sha256:bf76a072ee83eef013d21ef4aed92cea89f1d15edd62ce0d4204268f513a2658 Deleted: sha256:8112761750f4100814858c647189c97db4129852fec2060580625254fa9b3440 Deleted: sha256:a527ebda1c7ee77668ecfec84a62ba7cc46769946fb565ff7895f2a0aecfd082 Deleted: sha256:ba8f679e76a9faba19756857e6f5d6809d8ba0a90507c6a815f3823244636e64 Deleted: sha256:51b0a4dc7d8cdf87950abd409fe3155df9118e4b33a1bbe91d6367d62557db87 Deleted: sha256:f3277814332978b36b309d241f692a182e37564d96a94fdde0382cb471953483 Deleted: sha256:c233345f327a72c79e2e19c75fcf9089a0c1488dfb66dd00d49fa2a5d1f76057 #docker rmi -f $(docker images -aq) #删除全部的容器
说明: 我们有了镜像才可以创建容器,linux,下载一个CentOS镜像来测试学习
docker pull centos
docker run [可选参数] image # 参数说明 --name="Name" 容器名字 tomcat001 tomcat002 ,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口 (常用的) -p 容器端口 容器端口 -P 随机指定端口 #测试,启动并进入容器 [root@localhost ~]# docker run -it centos /bin/bash [root@f77cf5efff07 /]# ls #查看容器内的centos,基础版本,很多命令都是不完善的 bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var #进入容器 [root@localhost home]# docker run -it baecb060a464 /bin/bash #从容器中退出主机 [root@f77cf5efff07 /]# exit exit [root@localhost ~]# ls anaconda-ks.cfg cmake01 GameBookServer mysql80-community-release-el7-7.noarch.rpm redis-6.0.16 (3).tar.gz test.c 模板 图片 下载 桌面 bianyi cmake02 jdk-18_linux-x64_bin.rpm redis-6.0.16 test 公共 视频 文档 音乐
#docker ps 命令 #列出当前正在运行的容器 -a #列出当前正在运行的容器+带出历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f77cf5efff07 centos "/bin/bash" 7 minutes ago Exited (0) 2 minutes ago gifted_lehmann 06a28682bc04 feb5d9fea6a5 "/hello" 2 hours ago Exited (0) 2 hours ago reverent_khorana aac81cb05c0d feb5d9fea6a5 "/hello" 2 weeks ago Exited (0) 2 weeks ago infallible_bassi
exit #直接容器停止并退出 Ctrl +P +Q #容器不停止退出 [root@localhost ~]# docker run -it centos /bin/bash [root@0d56e07d34d8 /]# [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d56e07d34d8 centos "/bin/bash" 20 seconds ago Up 19 seconds intelligent_jang [root@localhost ~]#
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f docker rm -f $(docker ps -aq) #删除所有的容器 docker rm $(docker ps -aq) #删除所有的容器
docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止当前正在运行的容器 docker kill 容器id #强制停止当前容器
后台启动容器
# 命令 docker run -d 镜像名 ! [root@localhost ~]# docker run -d centos # 问题docker ps 发现centos停止了 #常见的坑 ,docker 容器启动后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #nginx,容器启动后,发现自己没有提供服务,就会立刻停止,没有程序了 docker run -p 3303:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7
docker logs -f --tail #自己写一个shell脚本 [root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo caoyanglin ;sleep 1;done" #展示出服务器id [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 08504c38c87e centos "/bin/sh -c 'while t…" 10 seconds ago Up 9 seconds thirsty_almeida #显示日志 -tf #显示的日志 --tail number #要显示的日志条数 [root@localhost ~]# docker logs -tf --tail 10 08504c38c87e
[root@localhost ~]# docker top 08504c38c87e UID PID PPID C STIME TTY root 20400 20380 0 18:40 ? root 22335 20400 0 18:55 ?