docker是管理容器的工具,说白了,就是一堆命令的集合
docker inspect //神器,可以查看当前docker 配置,比如ip/网关/镜像等等信息
docker run xxxx #启动一个docker容器
docker run --detach --name web nginx:latest #以分离(后台)方式运行nginx
docker run --interactive --tty --link web:web --name web_test busybox:latest /bin/sh #交互方式启动shell
docker ps #显示正在运行的docker容器, -a显示全部,包括没有在运行的
docker run -it --privileged=true --name centos-init centos /sbin/init #使用init启动centos
docker restart/stop ${container_name} #重启容器
docker attach ${container_name} #重新连接一个container,但是所有shell的命令和状态都是同步的,区别于使用exec
docker exec -it ${container_name} /bin/bash
docker logs ${container_name} [-f]#查看日志
docker volume create ${volume_name}
docker run -it --rm -v ${volume_name}:${docker_dir} busybox #关于volume, docker实战这本书讲的一塌糊涂。。。。
docker run -it --rm --volumes-from ${name} busybox #使用容器${name}的卷作为自己的存储卷启动容器,前者不必运行,两者对卷共享
docker pull busybox:latest
docker save -o myfile.tar busybox:latest
-----------------------------网络相关-------------------------
docker run --rm --net none alpine:latest ip addr //创建一个Closed容器,不能和外部进行通信,只能访问本地回环网络
docker run --rm --net bridge alpine //创建一个Bridged 容器,一个本地回环接口,一个通过网桥连接到主机的其他容器,可以访问外部网络,但是主机网络不能访问容器(默认)
docker run --rm --net container:${container_id/name} alpine #创建一个join网络容器,joined意思是该容器和参数指定的另一个容器共享网络接口
------------docker创建独立网络---------------
docker network create --subnet=192.168.1.0/24 --gateway=192.168.1.1 docker-intranet
docker run -it --rm --net docker-intranet --ip 192.168.1.2 alpine #使用静态ip地址
--------------发布镜像------------
docker run -it --name image-dev alpine
apk add git
exit
docker diff image-dev
docker history ${docker_id}
docker commit -a "@xxx" -m "add git" image-dev alpine-dev //这个image就会出现在本地镜像列表中,docker images可以查看
docker run --rm -it alpine-dev
----------------使用Dockerfile-------------------
docker build --tag ubuntu-git:v1.0 .
# Filename: Dockerfile
# install git on ubuntu
FROM ubuntu:latest
Maintainer lazypiccolo
ENV GITROOT=/home/git \
GITBIN=/usr/local/bin/git
WORKDIR "${GITROOT}"
RUN apt-get update
RUN apt-get install git -y
#ENTRYPOINT git #这种方式也是可以的,但是会忽略所有命令行和CMD指定的参数
ENTRYPOINT ["git"]
#CMD ["git"]
--------------push镜像到远端----------------
docker tag ubuntu-git:v1.0 lazypiccolo/ubuntu-git #修改镜像规范命名,push的时候本地和远端镜像名称需要相同
docker login #登录
docker push lazypiccolo/ubuntu-git #push到远端