Docker轻松入门指南

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: Docker轻松入门指南

安装docker

在Deepin下安装

卸载旧版本的docker:

sudo apt-get remove docker.io docker-engine

安装依赖:

sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common

下载并安装秘钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

出现OK说明安装成功。

验证是否安装成功:

sudo apt-key fingerprint 0EBFCD88

添加软件源:

sudo add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/debian jessie stable"

下面开始正式安装docker:

更新软件源:

sudo apt-get update

安装最新版本docker:

sudo apt-get install docker-ce

检查是否安装成功:

sudo docker version

在Deepin下docker是默认开机自启的,无需手动设置。

在WSL下安装

更新软件源:

sudo apt update

安装docker:

sudo apt-get install docker.io

启动docker服务:

sudo service docker start

此时虽然显示启动成功,其实是没有成功的,可以使用如下命令查看:

运行docker version命令时,提示服务器没有打开:

此时需要以管理员身份运行如下代码:

sudo cgroupfs-mount
sudo service docker start

再次查看,发现服务已经启动了。

验证:

镜像加速

/etc/docker/deamon.json中添加如下代码

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

添加完成之后,需要重启docker服务:

service docker restart

容器操作

查看本地镜像:

docker images
#或
docker image ls

查找镜像:

docker search [镜像名]

OFFICAL代表是官方的,AUTONATED代表支持自动化脚本。

拉取镜像:

docker pull hello-world

此时查看镜像:

删除镜像:

docker rmi -f 镜像名ID或镜像名:TAG

查看元信息:

docker image inspect hello-world

运行镜像:

docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录 镜像ID或镜像名:TAG
docker run --name hello -d hello-world

跑完之后会生成一个容器ID:

可通过日志验证hello 容器运行成功:

docker logs hello

docker部署mysql

同样,先要拉取镜像:

docker pull mysql

下图为正在下载镜像:

下载完成后如图:

查看镜像:

此时发现多了一个mysql的镜像。

运行mysql容器:

docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

一般如果mysql运行成功,会自动启动mysql服务器,可通过如下命令查看容器中的后台进程:

docker container ps

进入mysql容器:

docker exec -it mysql /bin/bash

如此,mysql就已经可用了。

docker网络模式

Bridge

桥接模式,主要用来对外通信,docker默认的网络模式就是bridge。

使用bridge模式配置容器自定的网络配置:

# 配置容器的主机名
docker run --name t1 --network bridge -h [自定义主机名] -it --rm busybox
# 自定义DNS
docker run --name t1 --network bridge -dns 114.114 -it --rm busybox
#给host文件添加一条
docker run --name t1 --network bridge --add-host [hostname]:[ip] -it --rm busybox

host

主机网络,绑定到这种网络上的容器,内部使用的端口直接绑定在主机对应的端口,而如果容器服务没有使用端口,则无影响。

None

不使用任何网络,会形成一个封闭网络的容器。

container

共享另外一个网络的network namespace,和host模式差不多,只是这里不是使用宿主主机网路,而是使用容器的网络。

docker生成镜像

docker commit -m="描述信息" -a="作者" 容器ID或容器名 镜像名:TAG
docker commit -m="mysql测试生成镜像" -a="chenyc" mysql chenyc-mysql

通过查看镜像,发现确实生成了新镜像:

dockerfile格式命令

# 生成镜像的Dockerfile文件
# 根据什么基础镜像来创建,如果本地没有,会从仓库去pull
FROM chenyc-mysql
# 镜像由谁来构建,用处不大,即将被废弃
MAINTAINER chenyc
# 标签,没啥用,用来写描述信息的
LABEL author=chenyc date=20200524 version=1.0
# 把当前路径下的文件添加到镜像中去(根目录下)
ADD 1.txt /1.txt
# 指定暴露端口,后面可以指定网络协议
EXPOSE 80/tcp 80/udp
# 在镜像运行为容器后执行的命令
ENTRYPOINT ["cat", "1.txt"]

构建镜像命令:

docker build -t mydocker .

查看构建好的镜像:

运行容器并查看日志:

ADD 和 COPY区别:

基本功能都差不多。

ADD 支持从网络下载资源;

ADD 支持将本地的tar包解压,但是网络下载的不会解压

COPY不支持上述两个操作。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
694 2
|
9月前
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
284 100
|
7月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
764 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
10月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
768 1
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
460 5
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
1157 5
docker入门-快速学会docker
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
322 20
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。