Ubuntu安装Docker容器

1.安装与卸载

  • 卸载可能存在的旧版本

在安装 Docker Engine 之前,需要卸载所有有冲突的软件包。发行版维护者在 APT 中提供了 Docker 软件包的非官方发行版。您必须先卸载这些软件包,然后才能安装 Docker Engine 的正式版本。

要卸载的非官方软件包包括:

  • docker.io

  • docker-compose

  • docker-compose-v2

  • docker-doc

  • podman-docker

此外,Docker Engine 依赖于 containerdruncDocker Engine 将这些依赖项捆绑为一个包:containerd.io。如果您之前安装了 containerdrunc,请卸载它们以避免与 Docker Engine 捆绑的版本发生冲突。

运行以下命令来卸载所有冲突的包:

for pkg in docker.io \
docker-doc \
docker-compose \
docker-compose-v2 \
podman-docker \
containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会报告您没有安装这些包。

注意:卸载 Docker 时,不会自动删除存储在 /var/lib/docker/ 中的图像、容器、卷和网络。如果想从全新安装开始,并且希望清理所有现有数据。

  • 安装必要的系统工具

更新软件包:

sudo apt-get update

安装必要的依赖包,这些包用于通过 HTTPS 获取软件仓库:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
  • 添加docker密钥和阿里apt源

# 添加docker密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 添加阿里云docker软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

直接回车就行了。

  • 更新源

sudo apt update && apt-get update
  • 安装docker-CE

安装 Docker 及其依赖包,默认安装的是最新版本的稳定版。

sudo apt install -y docker-ce docker-ce-cli containerd.io
  • 配置加速器

国内从Docker Hub下载镜像速度很慢,我们可以配置阿里云专属加速器来解决。通过浏览器访问并登陆阿里云(淘宝或支付宝帐号登陆也可以)。

登陆后,进入阿里云“控制台”,搜索“容器镜像服务 ACR”

然后点击“容器镜像服务 ACR”,找到左侧菜单“镜像工具”,点击镜像加速器,如下:

将容器右边的“加速器地址”复制下来即可。

修改docker相关配置,配置镜像加速器,如下:

 注意:由于阿里云的镜像加速器地址存在拉取镜像的问题,请大伙儿使用以下配置的docker镜像加速器,亲测有效。

# 创建目录
sudo mkdir -p /etc/docker
# 配置镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    	"https://dockerpull.com",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.awsl9527.cn"
    ]
}
EOF

 最后,重载docker服务并重启。

# 重载服务
sudo systemctl daemon-reload
# 重启服务
sudo systemctl restart docker

  • 验证

运行第一个容器(经典的hello world)。

 docker run hello-world

输入以上命令后,窗口有输出,表示docker安装成功 。  

1.2.卸载

删除docker及安装时自动安装的所有包:

sudo apt-get -y autoremove docker docker-ce docker-engine  docker.io  containerd runc

查看docker是否卸载干净:

dpkg -l | grep docker
# 删除无用的相关的配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 

删除没有删除的相关插件:

sudo apt-get -y autoremove docker-ce-*

删除docker的相关配置&目录:

rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker

确定docker卸载完毕:

docker --version

2.镜像

Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载(默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库。

3.2.1.搜索镜像

docker search 镜像名称

例如:

docker search mysql

3.2.2.下载镜像

docker pull 镜像名

例如, 获取一个 centos 系统的基础镜像可以使用如下的命令:

# 未指定版本一般会使用latest(最新的)版本
docker pull centos
# 或者直接指定版本
docker pull centos:版本号

3.2.3.查看宿主机上的镜像

docker images

/var/lib/dockerdocker默认安装目录。

# 切换目录
cd /var/lib/docker/containers 
# 查看目录下的文件
ls

3.2.4.删除镜像

docker rmi 镜像ID/标签

例如:

# 根据镜像ID删除
docker rmi 2ca708c1c9cc
# 根据镜像标签(版本)
docker rmi centos:latest 或 docker rmi centos:版本号

如果提示镜像被使用,需要先停止某个ID的容器,然后先删除容器再删除镜像。或者强制删除镜像。

强制删除镜像:

docker rmi -f centos:版本号 

-f, -force: 强制删除镜像, 即使有容器依赖它。

总之, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。

3.3.容器

容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层;同时,容器中的应用进程处于运行状态。

通俗理解:类 -> 实例,镜像 -> 容器

3.3.1.创建容器

# 方式一:创建容器不指定容器名,由Docker容器随机生成
docker create -it centos:latest
# 方式二:创建容器并指定容器名
docker create -it --name tomcat01 centos:latest

命令说明:

命令说明
create创建docker容器关键字
-it是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
--name指定生成的容器的名字,允许空,如果不指定会自动生成
centos:latest即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载。

3.3.2.查看容器

查看当前运行的容器:

docker ps

查看所有容器:

docker ps -a

3.3.3.启停容器

# 启动容器
docker start 容器ID或name
# 停止容器
docker stop 容器ID或name
# 重启容器
docker restart 容器ID或name 

3.3.4.删除容器

docker rm 容器ID

主要支持的选项包括:

选项说明
-f, --force=false是否强行终止并删除一个运行中的容器
-l, --link=false删除容器的连接 ,但保留容器
-v, --volumes=false删除容器挂载的数据卷

删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

docker rm $(docker ps -aq)

停止所有容器并删除容器:

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

还可以根据容器的状态删除,删除Exited状态的容器:

docker rm $(docker ps -qf status=exited)

Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器:

docker container prune

3.3.5.进入容器

docker exec -it 容器ID/容器NAME /bin/bash
# 简写方式:
docker exec -it 容器ID/容器NAME bash

注意:只有在容器启动的时候即UP状态才能进入容器终端

3.3.6.创建/启动/进入容器

run命令等于create+start

  • 创建+启动+进入容器:

docker run -it centos:latest /bin/bash
  • 创建容器,通过 -p 标记指定端口映射规则,可以指定多个:(注意:此处p是小写)

docker run -it -p 7001:8001 centos:latest /bin/bash
  • 使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口:(注意:此处P是大写)

docker run -it -P --name tomcat03 centos:latest /bin/bash

更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加-d参数来实现:

# 创建容器指定后台运行模式(后台守护态)
docker run -it -d --name webapp centos:latest 
# 进入容器
docker exec -it webapp /bin/bash

部分参数说明:

参数说明
-p端口映射,格式为:主机(宿主)端口:容器端口
-P注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
-d后台运行模式

3.3.7.退出容器

退出时如果想继续运行容器:按顺序按【ctrl+p】【ctrl+q】

如果不想继续运行:按【ctrl+d】或输入exit

3.3.8.查看容器内部信息

  • 进入容器内部获取信息

首先,请先进入容器:

docker exec -it 容器ID/容器NAME /bin/bash

如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息:

# 查看主机名
hostname
# 查看IP地址
ip addr
# 查看环境变量
env
  • 在宿主机,执行docker exec命令

# 获取容器的hostname
docker exec 容器ID/容器NAME hostname
# 获取容器ip地址
docker exec 容器ID/容器NAME ip addr
# 获取容器环境变量
docker exec 容器ID/容器NAME env
  • 在宿主机,使用docker inspect命令

推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息。

docker inspect 容器ID/容器NAME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值