Docker学习第二篇:Docker常用命令!
Docker常用命令 帮助命令 1 2 3 docker version docker info docker 命令 --help
镜像命令 docker images 查看本地主机上的所有镜像
1 2 3 4 5 6 7 8 9 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 -a,--all -q,--queit
docker search 搜索镜像
docker pull 下载镜像
docker rmi 删除镜像
1 2 3 docker rmi -f 容器id docker rmi -f 容器id 容器id 容器id docker rmi -f $(docker images -aq)
容器命令 我们有了镜像才可以创建容器。
我们接下来下载一个centos镜像:
新建容器并启动 1 2 3 4 5 6 7 8 9 10 11 docker run [可选参数] image -name="xxxx" 容器名字,同来区分容器 -d 后台方式运行 -i 交互模式使用 配合-t -t 分配一个伪终端 redis\mysql等 -p 端口映射 外:内 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 -P 随机指定端口
测试,启动并进入容器:
1 2 3 4 [root@localhost ~] [root@1ff8ce7cb3ec /] bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@1ff8ce7cb3ec /]
列出所有运行的容器 1 2 3 docker ps docker ps -a docker ps -aq
退出容器
删除容器 1 2 docker rm 容器id docker rm -f $(docker ps -aq)
启动和停止容器的操作 1 2 3 4 docker start 容器id docker restart 容器id docker stop 容器id docker kill 容器id
常用的其他容器 后台启动容器 1 2 3 4 5 6 7 [root@localhost ~] b399f94d696206dff1ea0af09ab9bab80faa1950b1a85b822ea7aae45370a5bc [root@localhost ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]
这是常见的坑,容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。
查看日志 1 2 3 [root@localhost ~] [root@localhost ~]
查看进程 1 2 3 [root@localhost ~] UID PID PPID C STIME TTY TIME CMD root 10355 10335 0 19:41 pts/0 00:00:00 /bin/bash
查看镜像的元数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@localhost ~] [ { "Id" : "6b671d70727235e99ad9496b062dbac17e1bf3bd09bb8360e2d517e7bd574bd8" , "Created" : "2021-01-15T11:41:42.457276571Z" , "Path" : "/bin/bash" , "Args" : [], "State" : { "Status" : "running" , "Running" : true , "Paused" : false , "Restarting" : false , "OOMKilled" : false , "Dead" : false , "Pid" : 10355, "ExitCode" : 0, "Error" : "" , "StartedAt" : "2021-01-15T11:41:42.751325327Z" , "FinishedAt" : "0001-01-01T00:00:00Z" }, "Image" : "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55" , ...... } ]
进入当前运行的容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 docker exec -it 容器id bashShell [root@localhost ~] [root@6b671d707272 /] bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@6b671d707272 /] docker attach 容器id [root@localhost ~] [root@6b671d707272 /] bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@6b671d707272 /] [root@localhost ~]
从容器里拷贝文件到主机 1 2 3 4 5 6 7 8 9 10 docker cp 容器id:容器内路径 目的主机路径 [root@localhost ~] [root@localhost ~] anaconda-ks.cfg download gs.txt [root@localhost ~]
练习 下面我们用docker部署一下 nginx 和 tomcat ,对上面学习的命令进行巩固。
部署nginx 1 2 3 4 5 docker pull nginx docker run -d -p 8080:80 --name nginx01 nginx
确保防火墙什么的都是关的,去浏览器进行访问:
部署tomcat 1 2 docker run -d -p 8080:8080 --name tomcat01 tomcat:9.0
访问如下:
为什么会这样?说明我们的tomcat部署是没有问题的,但是webapps目录下因为没有对应的项目文件,所以出现404,想要解决这种问题,我们应该手动在webapps目录下添加项目文件,如下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49e28516cfd1 tomcat:9.0 "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp tomcat01 [root@localhost ~] root@49e28516cfd1:/usr/local /tomcat BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work root@49e28516cfd1:/usr/local /tomcat root@49e28516cfd1:/usr/local /tomcat root@49e28516cfd1:/usr/local /tomcat/webapps ROOT docs examples host-manager manager root@49e28516cfd1:/usr/local /tomcat/webapps
这样再次访问,就可以看到tom猫了: