docker-toolbox下载列表:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
下载并安装
安装docker后启动
问题:
解决方法:修改bash.exe路径(右键-属性)
docker启动完成界面:
运行:docker run hello-world 没有会先下载镜像
运行: docker run -it ubuntu bash 进入到ubuntu系统,没有会下载
运行:docker run -it ubuntu /bin/echo “hello world” 直接输出hello world
各个参数解析:
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,
如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。
在docker中进入到ubuntu系统: 然后就可以用linux命令
docker run -it ubuntu bash
docker run -i -t ubuntu:15.10 /bin/bash
docker exec -it containerId 进入已经启动的容器中
各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表
-------------------------------------------------------------------------------------------------------------------
docker 命令集
Docker 镜像使用
查找镜像:docker search httpd
从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
下载镜像: docker pull ubuntu:13.10
本地镜像列表:docker images
构建镜像:docker build
从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
创建一个 Dockerfile 文件:
runoob@runoob:~$ cat Dockerfile
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---> Using cache
---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---> Using cache
---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
参数说明:
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
查看容器列表:docker ps 或者 docker ps -a
docker container ls:默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器。
查看镜像列表:docker images
进入容器 :docker run -it image_id
停止容器:docker stop container id
容器列表:docker ps -a
已停止的和当前在运行的 docker ps 只是在运行的
启动容器:
docker start container_id
启动停止的容器
docker restart container_id
重新启动
进入在后台运行的容器:docker exec -it container_id /bin/bash
docker exec -it 775c7c9ee1e1 /bin/bash (容器id)
删除容器:docker rm container_id
(正在运行的容器不能删除,先停止再删除)
删除镜像:docker rmi image-id
删除镜像时报错:
由于image被某个container引用(运行),如果不将这个引用的container删除,image肯定是不能被删除
docker ps -a 查看所有引用关系
停止容器,删除容器,删除镜像
docker rm f58dd4d607ab
docker rmi a2a15febcdf3
docker ps 格式化显示
比如:docker ps -a --format “table {{.ID}}\t{{.Command}}\t{{.Image}}”
清理容器:
docker system prune可对空间进行自动清理
已停止的容器
未被任何容器使用的卷
未被任何容器所关联的网络
所有悬空的镜像
docker system prune -a -f 会彻底清除所有容器包含Image
docker system prune后可以加额外的参数,如:
docker system prune -a : 一并清除所有未被使用的镜像和悬空镜像。
docker system prune -f : 用以强制删除,不提示信息。
docker image prune:删除悬空的镜像。
docker container prune:删除无用的容器。
--默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
--如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
--$ docker container prune --filter "until=24h"
docker volume prune:删除无用的卷。
docker network prune:删除无用的网络
docker volume ls:列出数据卷。
docker network ls:列出 network。
docker info:显示系统级别的信息,比如容器和镜像的数量等。
docker inspect 来查看容器或者镜像的详细信息
docker inspect image_id
docker inspect container_id
删除正在运行的容器报错
Error response from daemon: You cannot remove a running container 8269215dfdef42
ec0533ce622c62db0ca314fb29a83deae2ee124a93b5914d36. Stop the container before at
tempting removal or force remove
先停止然后在删除
docker stop 8269215dfdef42
docker rm 8269215dfdef42
设置共享文件 E:\workspacephp\hyperf-skeleton 对应名称wx_server_hyperf
1,通过虚拟机(Oracle VM VirtualBox)设置共享文件也就是本地代码文件夹
2,重启虚拟机:docker-machine restart
3,输入:docker-machine ssh default
终端显示docker@defualt:~$
4,mount 显示共享目录 (可以查看设置的共享目录是否生效)
5,cd /wx_server_hyperf(设置的共享文件夹名称)
hyperf项目
# 下载并运行 hyperf/hyperf 镜像,并将镜像内的项目目录绑定到宿主机的 /tmp/skeleton 目录
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
# 镜像容器运行后,在容器内安装 Composer
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar
chmod a+x composer.phar
mv composer.phar /usr/local/bin/composer
# 将 Composer 镜像设置为阿里云镜像,加速国内下载速度
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
# 通过 Composer 安装 hyperf/hyperf-skeleton 项目
composer create-project hyperf/hyperf-skeleton
# 进入安装好的 Hyperf 项目目录
cd hyperf-skeleton
# 启动 Hyperf
php bin/hyperf.php start
关闭再次进入:
-p 9501:9501 指定端口映射,格式为:主机(宿主)端口:容器端口
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
运行容器: docker run -v /wx_server_hyperf:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
docker容器中设置hosts:
1,通过命令,放到–name之后
–add-host=www.baidu.com:192.16.2.23
docker run -p 9501:9501 -v /wx_server_hyperf:/hyperf-skeleton --name container_hyperf --add-host www.baidu.com:192.16.2.23 hyperf/hyperf php /hyperf-skeleton/bin/hyperf.php start
2,etc/hosts修改。每次启动容器就会重置
容器和本地代码相互复制:
从容器copy到本地:
docker cp mynginx:/etc/nginx/conf.d/default.conf /wx_server_hyperf/xxxx.conf
从本地copy到容器:
docker cp/wx_server_hyperf/xxxx.conf mynginx:/etc/nginx/conf.d/default.conf