Docker快速入门

Docker快速安装

常见的Linux平台,Docker可以使用https://get.docker.com/ 中提供的脚本来一键完成安装。

# 下载脚本
curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh

脚本提供国内镜像源进行加速:

# 使用 Azure 进行加速
sh get-docker.sh --mirror AzureChinaCloud
# 使用 Aliyun 进行加速
sh get-docker.sh --mirror Aliyun

安装过程较慢,等待一段时间即可。然后启动docker服务。

systemctl start docker

Docker快速使用

Docker镜像(Image)是创建Docker容器的基础。镜像相当于静态模板,通过Image镜像可以启动多个Container容器。

Image镜像可以自行构建,推送到私有镜像仓库,或者提交到共有镜像仓库docker-hub上进行托管。

我们也可以直接使用docker-hub上公共的Image镜像来快速启动Container。

# 从docker-hub拉取nginx基础镜像
docker pull nginx

查看本地所有的Image镜像。

docker image ls
# 也可以使用老版本的命令,效果相同
docker images

查看镜像详情,返回JSON格式数据。

docker image inspect nginx

使用nginx镜像启动docker容器。

docker run --name nginx-container -p 8080:80 -d nginx
  • 其中,–name参数表示从Image镜像启动的Container容器名称。-p用于指定端口映射,表示将Container内的80端口,映射到本机的8080端口。-d参数表示容器后台执行。

此时可以通过浏览器访问虚拟机IP:8080端口,查看Nginx是否运行。如果无法访问,请重新构建docker0网桥。

# 停止docker
systemctl stop docker
# 安装bridge-utils
yum install -y bridge-utils 
# 关闭docker0网桥
ip link set dev docker0 down
# 删除docker0网桥
brctl delbr docker0
# 添加docker0网桥
brctl addbr docker0
# 添加网桥信息
ip addr add 172.16.10.1/24 dev docker0
# 启动docker0网桥
ip link set dev docker0 up
# 查看网桥是否正常
ip addr
# 启动docker
systemctl restart docker

查看所有运行中的Container容器。

docker container ls
# 也可以使用老版本的命令,效果相同
docker ps

查看所有Container容器(包含已停止的)。

docker container ls -a
# 也可以使用老版本的命令,效果相同
docker ps -a

进入运行中的容器。

docker exec -it nginx-container bash
  • 其中,-i参数表示与容器进行交互(始终打开标准输入),-t参数表示分配一个伪客户端。

在容器内执行完操作后,可以退出。

exit

如果容器在运行过程中出错,可以查看容器的日志。

docker logs nginx-container

可以对容器进行关闭、强制杀死的操作。

docker stop nginx-container
docker kill nginx-container

对于停掉的容器,可以再次启动。

docker start nginx-container

或者直接对容器进行重启。

docker restart nginx-container

如果,容器已经没有存在的必要,可以直接进行删除。

docker rm nginx-container

容器构建

Dcokerfile

前面,我们使用docker-hub中现成的Image镜像来运行Container容器。在生产中,一般需要将自己的应用,通过编写DockerFile构建成Image镜像。然后交给运维,快速在生产环境中运行Container容器,完成应用的部署。

首先,在/root/nginx_builder目录中编写一个DockerFile,封装nginx组件。

mkdir /root/nginx_builder
vim /root/nginx_builder/Dockerfile

Dockerfile中内容如下:

### nginx
### VERSION 0.0.1
FROM nginx
MAINTAINER Teacher Demos <teacher@docker.com>
RUN echo 'this is a diy nginx image' > /usr/share/nginx/html/index.html

其中FROM语句指定了依赖的镜像,这里使用ubuntu。MAINTAINER填写构建者信息,这里填写为Tearcher,并留了邮箱。最后的RUN语句,指定在ubuntu镜像中执行apt更新和软件安装的命令。

接下来,通过DockerFile来生成Image镜像。

docker build -t demo_nginx /root/nginx_builder/

启动Container容器。

docker run --name demo_nginx -p 8080:80 -d demo_nginx

快速了解Dockerfile构建镜像后,可以找资料深入学习这一块的内容。

通过Container生成镜像

在生产过程中,一般情况下,会通过Dockerfile来构建Image镜像。但也支持通过Container来生成Image镜像。这种场景一般用于快速对容器内驱动包、环境变量等内容的替换,或者生产问题的快速修复。进入要维护的Container中,使用命令完成操作后,将Container生成Image即可。

首先,生成一个index.html文件,然后将demo_nginx容器中的index.html文件进行替换,持久化为Image镜像。

echo "<h1>Hello Nginx</h1>" > /root/index.html

将容器内的文件拷贝到本地/tmp目录进行备份。

docker cp demo_nginx:/usr/share/nginx/html/index.html /tmp/

将要替换的index.html拷贝到容器中。

docker cp /root/index.html demo_nginx:/usr/share/nginx/html/

以命令行交互方式进入到容器。

docker exec -it demo_nginx bash

查看文件是否替换成功。

cat /usr/share/nginx/html/index.html

退出容器。

exit

将当前Container持久化为Image。

docker commit demo_nginx new_demo_nginx

查看所有Image镜像。

docker image ls

当然也可以删除镜像。

docker image rm new_demo_nginx

目录挂载

Container是无状态的,它在运行时,会提供一个可读写层进行数据的临时存储,在停止的时候会清空所有数据。为了使容器中必要的数据持久化保存,如配置文件、日志等信息,需要将本地的目录挂载到容器中。这样在容器重启后,重要的数据便不会丢失,而且多个容器挂载同一个目录,可以完成数据的共享操作。

现在,将nginx容器中的/usr/share/nginx/html/目录挂载到本地的/root/nginx/html下。在启动容器时,可以使用-v参数指定数据的挂载。

现在本地创建数据存储目录。

mkdir -p /root/nginx/html

删除之前的demo-nginx容器。

docker container stop demo_nginx
docker container rm demo_nginx

启动新的Container,并进行磁盘挂载。

docker run --name other-nginx -p 8080:80 -v /root/nginx/html:/usr/share/nginx/html/ -d demo_nginx

将本地的index.html文件拷贝到/root/nginx/html目录下,查看容器内是否已经生效。

cp /root/index.html /root/nginx/html/login.html

此时访问虚拟机IP:8080/login.html,发现已经可以访问。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桥路丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值