创建镜像:
docker build --no-cache -t 镜像名:版本

运行容器:
docker run -i -t -p 本地端口:docker端口 -v 挂在本地:dockers路径 镜像名字:版本 /bin/bash(运行)

列出所有容器id: sudo docker ps -a
停止/开启容器:sudo docker stop/start 容器id
删除容器: sudo docker rm 容器id
删除所有容器:sudo docker container prune -f
进入容器:docker attach id
exit只是退出。而关闭窗口是直接把容器删除了。

列出所有镜像:sudo docker images
删除镜像:sudo docker rmi 镜像id

进入容器:sudo docker attach 容器id
进入容器:sudo docker exec -ti 容器ID /bin/bash

复制文件:
docker cp [OPTIONS] container_id:src_path dest_path
docker cp [OPTIONS] dest_path container_id:src_path

将容器保存为镜像:
docker commit 容器id 名称:版本号

查看端口号:
netstat -a | grep 关键词

apt-get install net-tools -y安装ifconfig

一、端口映射(局域网,外网此方式均可)。
此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机的IP进行访问:
docker run -p 9000:8000 --name centos1_py2 -itd --privileged=true dockerstorage/centos_py2:latest /usr/sbin/init
这种方式是在通过镜像创建容器的时候指定的,如图所示,加入我们在容器centos1_py2中用8000端口运行一个项目,通过此项配置就可以将容器的8000端口映射到宿主机的9000端口,那么其它主机就可以通过宿主机的ip:9000来访问运行在容器中的项目了。
注:

容器有自己的内部网络和 ip 地址(使用 docker inspect 可以获取所有的变量,Docker 还可以有一个可变的网络配置。)
-p 标记可以多次使用来绑定多个端口 如:
docker run -p 9000:8000 -p 10000:80 --name centos1_py2 -itd --privileged=true dockerstorage/centos_py2:latest /usr/sbin/init
注:也可以使用指定网络方式为host,这个模式下创建出来的容器,直接使用容器宿主机的网络命名空间。
docker run --name centos1_py2 -itd --privileged=true --net=host dockerstorage/centos_py2:latest /usr/sbin/init

二、容器的IP可以被宿主机以及其它主机直接访问(局域网)。
docker单主机容器通信

基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以满足开发者在各种场景下的需要。

按docker官方的说法,docker容器的网络有五种模式:

docker与宿主机共享网络 docker与宿主机通信_docker与宿主机共享网络