广州seo网站推广顾问,企业策划书,江门网站平台建设,网站文案设计一、常见Docker容器命令
#根据image创建一个新容器并运行#xff08;即使该image已经存在容器#xff0c;也会再创建一个新容器#xff09;
docker run IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-d#xff1a;指定容器为后台运行#xff0c;--name自定义该容器…一、常见Docker容器命令
#根据image创建一个新容器并运行即使该image已经存在容器也会再创建一个新容器
docker run IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-d指定容器为后台运行--name自定义该容器名
docker run -d --name myname IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-p指定将容器内的80端口通过外部宿主机的2288端口暴露出去
docker run -d --name myname -p 2288:80 IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-e指定环境变量keyvalue。可以多个-e选项以指定多个环境变量
docker run -d --name myname -p 2288:80 -e Key1Value1 -e Key2Value2 IMAGE_NAME#交互模式进入容器内部可以指定CONTAINER_ID或者容器名
docker exec -it CONTAINER_ID /bin/bash#查看正在运行中的容器
docker ps
#查看所有容器各种状态
docker ps -a
#停止容器
docker stop CONTAINER_ID
#启动容器
docker start CONTAINER_ID
#重启容器
docker restart CONTAINER_ID
#查看正在运行容器占用CPU、MEM、网络等资源情况可以指定CONTAINER_ID
docker stats
#查看容器日志
docker logs CONTAINER_ID
#删除指定容器
docker rm CONTAINER_ID
#强制删除指定容器可强制删除正在运行中的容器
docker rm -f CONTAINER_ID# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ......
二、常见Docker镜像命令
#下载镜像。不显示指定TAG,则TAG默认为latest。
docker pull IMAGE_NAME
#下载指定版本Tag镜像
docker pull IMAGE_NAME:TAG
#查看本地所有镜像
docker images
#删除本地指定镜像
docker rmi IMAGE_ID# 以指定容器ID或获容器名的当前现状创建一个新镜像
docker commit -a Author名 -m 提交说明 CONTAINER_ID NEW_IMAGE_NAME:TAG
# 将指定镜像导出保存为tar文件
docker save -o myimage.tar IMAGE_NAME:TAG
# 从本地tar文件加载作为镜像
docker load -i mynginx.tar
# 删除本地多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448#在线搜索镜像
docker search IMAGE_NAME# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ......
三、镜像发布至DockerHub 首先需在DockerHub网页上完成用户注册http://hub.docker.com/
# 首先需在DockerHub网页上完成用户注册http://hub.docker.com/# 通过以下命令按提示登录至DockerHub
docker login# 对本地镜像增加一个TAG。新TAG应符合DockerHub规范用户名/镜像名:TAG
docker tag LOCAL_IMAGE_NAME:TAG username/NEW_IMAGE_NAME:TAG
#注意增加TAG后同一个IMAGE_ID会有多个TAG名# 推送镜像至DockerHub这里不同通过IMAGE_ID指定因为同一个IMAGE_ID会有多个TAG名
docker push 用户名/镜像名:TAG
#推送成功后在DockerHub网页上可以看到
四、容器目录挂载 在创建容器时可以有两种方式将外部宿主机目录挂载至容器中
docker run --mount typebind,srchost-path,dstcontainer-pathdocker run --volume host-path:container-path 推荐使用--mount因为更加清晰且选项更多。命令示例说明如下
# 根据image创建一个新容器并运行。
# 选项--mount将外包宿主机的/app/outdir目录若目录不存在则报错mount至容器内的/usr/share/nginx/html挂载点
# 选项--mount可以多次出现实现多个目录mount挂载
docker run -d --mount typebind,src/app/outdir,dst/usr/share/nginx/html IMAGE_NAME# 根据image创建一个新容器并运行。
# 选项-v将外包宿主机的/app/outdir目录若目录不存在则自动创建mount至容器内的/usr/share/nginx/html挂载点
# 选项-v可以多次出现实现多个目录mount挂载
docker run -d -v /app/outdir:/usr/share/nginx/html IMAGE_NAME 挂载后容器看到的内容为外部宿主机目录内容容器内原内容被obscured掩盖 --mount方式。 除以上选项外还支持readonly、bind-propagation选项。若外部宿主机目录不存在则会报错不会自动创建--volume方式。外部宿主机目录host-path必须是目录形式若外部宿主机目录不存在则会自动创建。
五、容器卷映射 在Docker官方更推荐使用Volume卷映射方式进行数据生成和存储。 Volume卷为外部宿主机上的概念可与容器内指定目录进行映射。 有两者方式创建卷Volume
docker volume create 直接创建卷docker run --volume value-name:container-path 在创建容器时创建卷并映射 在外部宿主机上直接创建卷命令说明如下
# 创建一个名为my-vol的卷卷默认在外部宿主机的/var/lib/docker/volumes下
docker volume create my-vol# 列出卷
docker volume ls# 删除没有被容器使用的卷
docker volume prune# 查看某个卷已被哪些容器使用
docker ps -a --filter volume卷名# 删除my-vol卷
docker volume rm my-vol# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ...... 在创建容器时同时创建卷并映射命令说明如下
# 根据image创建一个新容器并运行。
# 选项-v将my-vol卷(若卷不存在则创建卷)映射至容器内的/etc/nginx目录。映射后容器看到的内容为卷内容容器内原内容被obscured掩盖
# 若my-vol为空卷empty volume则自动将容器内映射目录下内容拷贝propagated(copied)至该卷。也可通过选项volume-nocopy禁止拷贝。
# 若my-vol已存在内容既非空卷non-empty volume则不会拷贝propagated(copied)。
# 选项-v可以多次出现实现多个卷映射
docker run -d -v my-vol:/etc/nginx IMAGE_NAME 将my-vol卷(若卷不存在则创建卷)映射至容器内的/etc/nginx目录。映射后容器看到的内容为卷内容容器内原内容被obscured掩盖 若卷my-vol无数据既空卷empty volume则自动将容器内容映射目录下内容拷贝propagated(copied)至该卷。也可通过选项volume-nocopy禁止不拷贝若卷my-vol已存在数据既非空卷non-empty volume则不会进行拷贝propagated(copied)。 六、网络 在Docker自动创建了名为“bridge”、“host”等网络。在创建容器时不特别指定则容器默认使用名为“bridge”网络。 通过查看名为“bridge”网络详细信息如下。包括该网络IP段、已分配IP的容器、该网络在宿主机上Linux的网络接口名可以通过Linux操作系统的ifconfig命令查看等信息。 通过名为“bridge”网络可以在各个容器内通过的IP地址互访对于上图通过172.17.0.x地址进行容器之间互访。 然而默认的名为“bridge”网络只能通过IP地址互访无法通过域名进行容器之间互访。解决方式是
①自行创建一个网络②在创建容器时指定使用自建的网络即可实现通过域名进行容器之间互访。
命令过程示例如下这样cntr001和cntr002容器即可通过IP互访也可以通过容器名互访。
# 自建一个网络名为“mynet”Driver为bridge不纳入Linux操作系统网卡管理
docker network create mynet
# 或者
docker network create --driver bridge --subnet172.99.99.0/24 --gateway172.99.99.1 mynet# 根据image创建一个新容器并运行。
# 选项--network指定网络。不指定默认使用名为“bridge”的网络
docker run -d --network mynet --name cntr001 IMAGE_NAME
docker run -d --network mynet --name cntr002 IMAGE_NAME
# 这样cntr001和cntr002容器即可通过IP互访也可以通过“容器名”互访