1、入门
uname -r //查看是否高于3.10 apt-get update apt-get install apt-transport-https ca-certificates apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D vi /etc/apt/sources.list.d/docker.list 增加内容 deb https://apt.dockerproject.org/repo ubuntu-trusty main apt-get update apt-get purge lxc-docker 删除旧版本 apt-cache policy docker-engine apt-get install linux-image-extra-$(uname -r) apt-get install apparmor apt-get install docker-engine service docker start docker run hello-world
2、应用,命令
docker run ubuntu /bin/echo 'Hello world' docker run -t -i ubuntu /bin/bash docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" docker ps docker logs 容器id docker stop 容器id docker start 容器id docker rm 容器id docker version docker --help docker run -d 后台运行 docker run -P 运行一个端口 docker 命令 --help docker ps -a 查看所有的容器 docker export web >web.tar 导出 docker import web.tar 导出 docker run -d -p 80:5000 training/webapp python app.py docker port b3788ea706f8 5000 查看容器里5000端口所映射主机的端口 查看log docker logs -f b3788ea706f8 查看进程 docker top b3788ea706f8 查看容器json docker inspect b3788ea706f8 移除所有容器和镜像: docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a) docker tag gcr.io/google_containers/pause:0.8.0 gcr.io/google_containers/pause
3、制作和管理镜像
docker images 带版本:docker run -t -i ubuntu:14.04 /bin/bash 下载一个镜像:docker pull centos 搜索镜像 docker search tomcat 提交镜像:docker commit -m "Added json gem" -a "Kate Smith" 0b2616b0e5a8 Ubuntu:v2 构建镜像:docker build -t ouruser/sinatra:v2 . 查看一个镜像的所有标签:docker images ubuntu list image digest values :docker images --digests | head 文摘 Push an image to Docker Hub:docker push ouruser/sinatra 移除镜像:docker rmi training/sinatra
4、网络:
查看网络类型:docker network ls 查看容器网络:docker network inspect bridge 断开:docker network disconnect bridge networktest 增加一个网络:docker network create -d bridge my-bridge-network 容器连接网络:docker run -d --net=my-bridge-network --name db training/postgres 得到ip地址:docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' networktest 运行命令:docker exec -it db bash
5、存储:
docker run -d -P --name web3 -v /home/webapp training/webapp python app.py docker exec -i -t web3 /bin/bash docker exec web3 ifconfig 创建卷: docker volume create -d flocker --name my-named-volume -o size=20GB docker run -d -P / -v my-named-volume:/opt/webapp / --name web training/webapp python app.py
知识点:
1、开启远程访问:
# vim /etc/default/docker DOCKER_OPTS="-H 0.0.0.0:5555" # service docker restart 使用其他主机访问:docker -H IP:5555 images 访问别的主机的容器:docker -H 192.168.195.11:5555 exec -it 9cae5799ffeb /bin/bash # docker images FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host? # vim /etc/default/docker DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:5555" # service docker restart
2、映射容器端口
使用 -P 时,Docker 会随机映射一个端口到内部容器开放的网络端口。 使用 -p 时,可以指定要映射的端口,在一个指定端口上只可以绑定一个容器。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort。 $ sudo docker run -d -P training/webapp python app.py $ sudo docker run -d -p 5000:5000 training/webapp python app.py $ docker run --restart=always -d -p 8003:5000 training/webapp python app.py 随着docker服务启动
3、使用国内docker源
修改Docker配置文件/etc/default/docker如下: DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io" 使用service docker restart重启Docker服务即可。 速度1M/s
4、开机自动启动容器
ubuntu 新建文件 #vim docker-web4.conf ,内容 description "web4" author "Me" start on filesystem and started docker stop on runlevel [!2345] respawn script /usr/bin/docker start -a web4 end script 放到/etc/init/下 挂载目录 docker run -v /app:/usr/local/tomcat/webapps -d tomcat kubectl delete -f ./javaweb-2.yaml docker stop $(docker ps -a|grep tomcat);docker stop $(docker ps -a|grep sam);docker stop $(docker ps -a|grep javaweb); docker rm $(docker ps -a|grep tomcat);docker rm $(docker ps -a|grep data);docker rm m$(docker ps -a|grep javaweb); docker私有仓库(2.0):http://tonybai.com/2016/02/26/deploy-a-private-docker-registry/
大概步骤:
1、docker run -d -p 80:5000 -v /root/registry:/tmp/registry --restart=always --name=registry registry:2访问:http://192.168.15.33/v2/_catalog 2、docker tag busybox:latest 192.168.15.33:80/tonybai/busybox:latest 3、在其他docker环节修改配置文件/etc/default/docker 添加:DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.15.33:80" 后重启docker 4、docker push 192.168.15.33:80/tonybai/busybox:latest 5、删除掉再pull试试
数据容器
1、docker run -t -i -d -v /app:/usr/local/tomcat/webapps --name test1 busybox 把主机上的app映射到容器 2、docker run -it --restart=always -d -p 6666:8080 --volumes-from test1 --name tomcat6 tomcat 使用test1容器的数据 $ redis docker run -v /etc/redis/redis.conf:/usr/local/etc/redis/redis.conf --name=master redis redis-server /usr/local/etc/redis/redis.conf
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/57324.html