镜像和容器的区别:
镜像就是一堆只读层的统一视角
容器就是镜像这一堆只读层上增加一个可读可写层,一个运行状态的容器为容器加上隔离的进程空间,对一个容器内的任何修改都将作用于可读可写层,当容器停止运行时,会在主机上保存对该容器的修改,下次重新运行该容器时会加载对该容器的修改内容,还原容器状态。
docker search image_name 可以查看需要下载的镜像名
docker pull image_id 下载所需要的镜像
docker run -it image_id 以命令行的形式运行镜像,生成一个容器,状态为正在运行,即容器为镜像的实例
docker ps -a 查看所有容器的状态
docker rmi image_id 删除某个镜像
如果一个镜像有容器为正在运行状态,那么这个镜像是无法删除了,需要停止正在运行的容器:
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME 删除某个容器,需要先将某个容器关闭
docker start CONTAINER_NAME 开启某个容器
docker attach CONTAINER_NAME 进入某个容器(命令行)
#run container, -P publishes all exposed ports to ephemeral range
docker run -dit -P <image_name>
当对一个容器进行修改之后,可以保存对容器的修改:
docker commit ID new_name
退出容器:
ctrl + D
- 运行一个在后台执行的容器,同时,还能用控制台管理:
docker run -i -t -d ubuntu:latest
- 运行一个带命令在后台不断执行的容器,不直接展示容器内部信息:
docker run -d ubuntu:latest ping www.docker.com
- 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理,
docker run -d --restart=always ubuntu:latest ping www.docker.com
- 为容器指定一个名字,
docker run -d --name=ubuntu_server ubuntu:latest
- 容器暴露80端口,并指定宿主机80端口与其通信(: 之前是宿主机端口,之后是容器需暴露的端口),
docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest
- 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹),
docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest
docker build -t centos_nginx:v1 . 从当前目录的Dockerfile创建镜像
tanner:
image: abb62a539c3b
networks:
app_net:
ipv4_address: 192.168.10.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
# 将docker命令映射到容器内,使容器内可以使用宿主机命令,目前知道的缺点是容器用户需要和
# 宿主机docker.sock用户保持一致,否则权限不允许,这样做十分不安全,有待进一步查看文档
docker run -dit -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker abb62a539c3b bash
docker export container_id > file_name 将容器导出成文件
docker save image_id > file_name 将镜像导出成文件
创建一个docker网络,可以锁定容器IP
docker network ls 查看当前docker网络
docker network create --subnet=192.168.0.0/16 staticnet 创建自定义网络类型并指定网段
docker run -it --name userserver --net staticnet --ip 192.168.0.2 ubuntu /bin/bash 使用新网络类型启动容器
0X01 镜像的导入导出
1.从docker image导出到文件 & 从文件导入到docker image
docker save -o test.tar test_image:latest
docker load -i test.tar
2.从容器导出到文件 & 从文件导入到镜像
docker export -o test.tar f75d53a0e009
docker import test.tar test:v1.0
docker info可查看docker相关信息,修改/etc/docker/daemon.json可以指定docker的数据存储目录:
{
"data-root": "/data/docker/"
}