1、获取镜像
$ docker search ubuntu # 镜像查找
$ docker pull ubuntu:18.04 # 如果不带18.04,则默认拉取latest
2、启动容器
$ docker run -it ubuntu:1804 /bin/bash
参数说明
-i: 交互式操作
-t: 终端。
ubuntu: ubuntu 仓库名
1804:仓库下的镜像
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
$ docker exec -it ubuntu:1804 /bin/bash
exec 启动的容器,exit将不会退出,而run方式则会退出。
3、要退出终端,直接输入
$ exit
4、查看所有的容器命令和他们的状态如下:
$ docker ps -a #查看全部容器
$ docker ps #查看正在运行的容器
4、使用 docker start 启动一个已停止的容器:
$ docker start <容器名称|容器ID> #启动容器
$ docker attach <容器名称|容器ID> #进入到正在运行的容器
$ docker stop <容器名称|容器ID> #停止容器
5、后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec
-name 就是指定容器名称
6、删除镜像和容器
docker rm <容器名称|容器ID>
docker rmi <镜像名称|镜像ID> # 删除镜像前需把对应容器删除掉
7、代码放入容器
#1 生产环境(复制代码到容器)
在构建时,将代码放入容器中:
(1)启动速度块;
(2)一次构建,到处运行;(一致性、可移植)
(3)可快速回滚(快速切换到上一版本的镜像)
#2 开发环境(使用绑定挂载)
在进行本地开发时,将代码挂载到容器中:
(1)便于调试。日志文件可以写入绑定挂载的目录中。
(2)立即生效。将代码绑定挂载到容器中,修改后可以立即生效;
「绑定挂载」带来的问题:
(1)容器中的进程可以修改、删除主机中绑定挂载的文件。功能强大,但是也存在安全隐患。
(2)绑定挂载暴露文件到容器,降低了容器的安全和隔离。
8、镜像导入和导出
导出镜像
$ docker save -o nginx.tar nginx:latest
或
$ docker save > nginx.tar nginx:latest
导入镜像
$ docker load -i nginx.tar
或
$ docker load < nginx.tar
9、不要用commit创建镜像,而要用Dockerfile,因为commit会比较臃肿