阿里云Ubuntu 14.04/16.04 (使用apt-get进行安装)
安装:
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
将用户加入到docker组中,才能有权限操作docker
usermod -G docker userName #将用户userName加入到docker组中
重新登录userName,并执行groups查看用户所属的组
获取镜像
docker search ubuntu #查询云端镜像
docker pull ubuntu:14.04 #拉取云端镜像
运行:
docker run ubuntu:14.04 /bin/echo "Hello world" 如果报错,可能是操作系统内核版本过低,uname -r 查看:4.4.0-93-generic没有问题
在docker中bash运行,执行操作
#########创建容器#############
docker run -i -t ubuntu:14.04 /bin/bash
docker run -it ubuntu:14.04 env LANG=C.UTF-8 bash #可输入中文
#命名容器为CNAME,挂载本地盘到容器中,并将宿主机的8080端口映射到容器端口8000(uwsgi监听接口),且后台运行这样在exit时不会关闭
docker run -it -d --name CNAME -v /home/dev/www/:/root/www/ -p 8080:8000 ubuntu:14.04 bash
docker run -it --name NEWNAME ubuntu:14.04 bash #定义容器名称 --name NAME
############重命名容器################
docker rename OLDNAME NEWNAME #重命名容器的名称第一个参数是旧名称(或者容器ID)第二个为新名称
############退出容器###################
方式1:
Ctrl+P+Q
正常退出且不关闭容器,先按住Ctrl,再按住p,最后按Q
方式2:
exit
如果容器在创建时没有指定后台运行(-d 参数)则退出时容器会停止运行,如果容器在创建时有参数-d,则在执行此命令时,一般不会结束
############进入容器#########################
方式一:
docker exec -it 44fc bash #缺点,每次要输入参数-it及命令bash
方式2:
docker attach 44fc #缺点:1.当有多个终端同时使用此方式时,所有终端的页面会同步所有操作和显示 2.如果执行exit,则容器会停止运行
装机基础操作
安装python2.7
sudo apt-get update
sudo apt-get install python2.7
sudo apt-get install python-dev
sudo apt-get install python-pip
安装vim
sudo apt-get install vim-gtk
配置pip阿里云资源
vim ~/.pip/pip.conf
添加如下
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
查看镜像: docker images
查看镜像id: docker images -q
删除镜像:
docker rmi image_id
常见错误如下:
Error response from daemon: conflict: unable to delete 7698f282e528 (must be forced) - image is being used by stopped container 372ef2a3a00a
容器虽停止运行但仍然存在,先执行
docker rm 372ef2a3a00a #先删除容器
docker rmi 7698f282e528 #然后再删除镜像
删除所有镜像: docker rmi $(docker images -q)
创建容器: docker run --name <container_name> centos:7,container_name是自己定义的容器名
查看所有容器: docker ps -a
查看运行容器: docker ps
查看容器id: docker ps -q
进入容器:
docker exec -it <container_id> bash
docker exec -it CONTAINER env LANG=C.UTF-8 /bin/bash #可输入中文
退出容器: exit
删除容器: docker rm <container_id>
删除所有容器: docker rm $(docker ps -aq)
端口映射: docker run -d -p 8080:80 hub.c.163.com/library/nginx,说明:-d 表示后台运行,-p 8080:80 表示将宿主机的8080端口映射到容器端口80。容器开放的端口在镜像说明里面会有,nginx开放80,mysql开放3306,一般本来他们监听什么端口,容器就开放什么端口。
启动/停止/重启容器:
docker start/stop/restart <container_id> #运行,停止,重启容器
获取容器/镜像的元数据: docker inspect <container_id>
挂载数据卷: docker run -it -v /root/hdata/:/root/ddata/ ubuntu:14.04 bash
说明:多个容器可以挂载一个目录。 -v参数开始挂载,冒号前为主机目录,冒号后为容器中的目录,ubuntu:14.04为镜像
此目录中数据在主机和多个容器中共用。
更新镜像
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要创建的目标镜像名
创建镜像
在一个目下创建 Dockerfile
内容如下
FROM ubuntu:14.04
MAINTAINER Fisher '1@1.com'
RUN touch /root/123.txt
执行docker build -t ubuntu:my .
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
设置镜像标签
docker tag 860c279d2fec ubuntu:ok
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
如果对原镜像执行commit操作,此时相当于创建新镜像,标签的镜像不会随之改变。
访问主机数据库
在主机运行ifconfig,可看到虚拟的网卡docker0,主机地址为172.17.0.1
在容器中运行ifconfig,可查看容器的地址,一般是往后排如:172.17.0.2, 172.17.0.3,此地址可用于容器间通信
给主机mysql的用户和数据赋远程登录的权限
GRANT ALL PRIVILEGES ON databaseNAME.* TO 'userName'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;
访问主机rabbitMq
vim /etc/rabbitmq/rabbitmq.config #主机增加如下配置,可以远程访问
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["username"]}]}
].
#django中配置
BROKER_URL = 'amqp://username:password@172.17.0.1:5672/myvhost'
#如果docekr以root运行需要在主app/celery.py中配置
from celery import platforms
platforms.C_FORCE_ROOT = True