可以在dockerhub下载base image ,可以在github中的docker-library查看要使用组件的Dockerfile
列出所有容器的id
docker container ls -aq
删除所有列出来的容器的id
docker container rm $(docker container ls -aq)
列出所有镜像
docker image ls
通过Dockerfile创建image
在Dockerfile所在的目录下,运行如下命令,其中haha111111为docker id,centos-mine为容器的名称
docker build -t haha111111/centos-mine .
运行image并创建容器,其中haha111111为dockerID,centos-min为image名称
docker run haha111111/centos-mine
在后台运行image并创建容器需要加参数-d,形式如下
docker run -d haha111111/centos-mine
列出所有容器的列表
docker container ls -a
docker ps -a
进入容器
docker run -it haha111111/centos-mine /bin/bash
若Dockerfile中以CMD定义的shell命令,上面的命令会覆盖Dockerfile中的shell命令
若Dockerfile中以entrypoint定义的shell命令,上面的命令不会覆盖Dockerfile中的shell命令
使用containerID进入容器内部
docker exec -it containerID /bin/bash
在容器内部通过ip a查看ip地址
也可以通过如下命令,在不进入容器的情况下查看ip地址
docker exec containerID ip a
停止运行中的容器
docker stop containerID
运行容器的时候指定名字
docker run -d --name=demo haha111111/centos-mine
通过容器的名称操作容器
docker stop demo
删除所有退出状态的容器
docker rm $(docker ps -aq)
查看容器的详细的信息
docker inspect containerID
查看容器的日志
docker logs containerID
查看运行中container的ip地址
docker run -it containeriD ip a
登录docker
docker login
输入用户名和密码即可
推送image到dockerhub
docker push haha111111/centos-mine
更加安全的方式是将dockerhub账户与github账户关联,然后利用docker服务通过Dockerfile为我们build image即可
删除image
docker rmi imageID
添加mamespace/netns
ip netns add containername
查看mamespace/netns列表
ip netns list
删除mamespace/netns
ip netns delete mamespace/netns
查看指定mamespace/netns的container的ip
sudo ip netns exec test1 ip a
查看本机所有的端口
ip link
设置指定namespace/netns的container的状态为up
sudo ip netns exec containername ip link set dev 端口名称 up
添加一对link,初始状态为down
sudo ip link add veth-test1 type veth peer name veth-test2
将veth-test1端口添加到netns test1中
sudo ip link set veth-test1 netns test1
查看netns test1中的端口
sudo ip netns exec test1 ip link
通过ip a查看本机端口发现veth-test1已经不见了
同样操作将veth-test2添加到netns test2中
给指定namespace的端口添加ip 地址
sudo ip netns exec test1 ip addr add 192.168.1.1/24 dev veth-test1
sudo ip netns exec test2 ip addr add 192.168.1.2/24 dev veth-test2
查看ip地址是否设置成功
sudo ip netns exec test2 ip a
sudo ip netns exec test2 ip a
设置状态为up
sudo ip netns exec test1 ip link set dev veth-test2 up
sudo ip netns exec test2 ip link set dev veth-test2 up
查看状态是否为up
sudo ip netns exec test1 ip a
sudo ip netns exec test2 ip a
查看netns test1是否能ping通netns test2
sudo ip netns exec test1 ping 192.168.1.2
同理也查看netns test2是否能ping通netns test1
查看服务是否可用
telnet ip port
查看nginx首页
curl http://nginx所在服务器的ip
将容器内的80端口映射到centos7中,并在centos7内访问nginx的首页
docker run -d --name web -p 80:80 nginx
使用curl 127.0.0.1在centos7中访问nginx首页,使用centos7的ip地址通过外部主机访问nginx首页
一台服务器中多容器之间通信
容器yoyo11111/flask-redis对容器redis 进行link并指定容器yoyo11111/flask-redis的名字为 flask-redis,通过
-e可以提前对容器 flask-redis进行环境变量的设置,可以进入容器 flask-redis内部,通过env命令查看环境变量
docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis yoyo11111/flask-redis