docker run hello-world
启动流程:
docker ps -a
Docker容器存在的意义就是为了运行容器中的应用,对外提供服务,所以启动容器的目的就是启动运行该容器中的应用。容器中的应用运行完毕后,容器就会自动终止。所以,如果不想让容器启动后立即终止运行,就需要使容器应用不能立即结束。通常采用的方式有两种,使应用处于与用户交互的状态或等待状态。
docker run --name myubuntu -it ubuntu /bin/bash
docker run --name mytom -it tomcat:8.5.49 /bin/bash
docker run --name mytom3 -it -p 8081:8080 tomcat:8.5.49
//端口为8080映射到宿主机上为8081 -p 8081:8080
docker run --name mytom5 -it -P tomcat:8.5.49//让系统分配端口
为什么需要端口映射?
因为每一个docker容器都相当于一个操作系统,假设我要启动tomcat,tomcat的默认端口号是8080,但由于我是在不同的容器启动的tomcat,自然不会发生端口冲突,但是这都只是在容器当中的,当用户需要访问8080的tomcat的时候,宿主机应该去找哪个容器呢?所以就需要端口映射。
分配的端口为32768
。
Ctrl+p+q
依旧正在运行。
docker run --name myubuntu -d ubuntu /bin/bash
docker run --name mytom6 -p 8081:8080 -it tomcat:8.5.50
为什么找不到?
因为webapps当中根本没有东西。
内容都在webapps.dist当中了。
docker exec -it mytom1 /bin/bash //进入容器
mv webapps.dist/* webapps //把dist下的所有文件移动到webapps中
用于查看有哪些容器在运行
docker top mytom1
docker start xxx
docker unpause xxx
docker restart xxx
docker stop xxx
docker pause xxx //暂停对外提供服务
docker kill xxx
docker stop $(docker ps -q)
docker kill $(docker ps -q)
docker ps -q 用于输出所有正在运行的容器的ID
docker cp test.txt mytom1:/root //宿主机拷贝到容器
docker cp mytom1:/root/test.txt ./ //容器拷贝到宿主机
但是不支持容器之间的拷贝
docker rm -f $(docker ps -aq)
docker ps -aq:查询并显示所有(包括未运行的)Docker 容器的唯一标识符(ID)
docker commit -a "Hayaizo" -m "Added net-tools" mycentos centos7:net-tools
docker export -o tom8-export.tar mytom
docker import tom8-export.tar tom8:export
为什么会比原来的镜像要小?
因为丢弃了原镜像的所有历史记录与元数据
<repository>
与<tag>
,而load加载的镜像不能指定,和原镜像保持一致。docker system df //查看docker磁盘使用情况
docker system events //相当于日志
docker system info //信息
docker system prune //移除所有没有这个镜像相应的容器存在
docker create --name mytom -p 8081:8080 tomcat:8.5.49
create仅仅创建容器,不启动。