Docker基础
Docker 基础
Ubuntu Docker 安装
1
| curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
docker 切镜像源
可参考阿里镜像加速
创建文件夹
1
| sudo mkdir -p /etc/docker
|
编辑
1
| sudo vi /etc/docker/daemon.json
|
1 2 3
| { "registry-mirrors": ["https://registry.docker-cn.com"] }
|
重启
1 2
| sudo systemctl daemon-reload sudo systemctl restart docker
|
docker免sudo
1
| sudo usermod -aG docker $USER
|
启动docker服务
1 2 3 4
| sudo service docker start
sudo systemctl start docker
|
Image文件
1 2 3 4
| docker image ls
docker image rm [imageName]
|
1 2 3 4
| docker container run hello-world
|
1 2 3 4
| docker container run -it ubuntu bash
docker container kill [containID]
|
容器文件
容器一旦生成,就会同时存在两个文件,Image文件和容器文件。
关闭容器并不会删除容器文件,只是容器停止运行
1 2 3 4 5 6 7 8
| docker container ls
docker container ls -all
docker container kill
docker cintainer rm [containerID]
|
制作DockerFile文件
【示例】制作Dockerfile文件
1 2
| git clone https://github.com/ruanyf/koa-demos.git cd koa-demos
|
编写Dockerfile文件
在项目的根目录下,新建一个文本文件.dockerignore
,写入如下内容
1 2 3
| .git node_modules npm-debug.log
|
上述文件表示三个文件需要排除,不需要打包至image文件
在项目的根目录下,新建一个文本文件Dockerfile
1 2 3 4 5 6 7 8 9 10 11
| FROM node:8.4 COPY . /app WORKDIR /app RUN npm install --registry=https://registry.npm.taobao.org EXPOSE 3000
FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。 COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。 WORKDIR /app:指定接下来的工作路径为/app。 RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。 EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
|
创建image文件
使用docker image build命令创建image文件
1 2 3
| $ docker image build -t koa-demo .
$ docker image build -t koa-demo:0.0.1 .
|
上面代码中,-t
参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest
。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
如果运行成功,就可以看到新生成的 image 文件koa-demo
了。
生成容器
1 2 3 4 5 6 7 8
| $ docker container run -p 8000:3000 -it koa-demo /bin/bash
$ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
-p参数:容器的 3000 端口映射到本机的 8000 端口。 -it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。 koa-demo:0.0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。 /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
|
1
| root@66d80f4aaf1e:/app# node demos/01.js
|
CMD命令
1
| 手动输入命令node demos/01.js。我们可以把这个命令写在 Dockerfile 里面
|
portainer
1
| docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
|
mysql
1
| docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
|