Docker入门教程

安装Docker

参考链接:https://docs.docker.com/engine/install/centos/

卸载旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

设置仓库

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动Docker

sudo systemctl start docker

Docker安装完毕后,我们首先启动守护程序。

检查 Docker 是否正在运行:

systemctl status docker

未启动的话先启动docker:

systemctl start docker

设置开机自启动:

systemctl enable docker

帮助命令

docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令

文档地址 https://docs.docker.com/engine/reference/commandline/docker/

镜像使用

拉取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

example:

docker pull osrf/ros:humble-desktop-full

列出镜像

docker images

各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

查找镜像

docker search

删除本地镜像

docker rmi [选项] <镜像1> [<镜像2> ...]
docker image rm [选项] <镜像1> [<镜像2> ...]

容器使用

启动容器

从docker镜像启动一个容器的语法如下

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
option 作用
-i 交互式操作
-t 终端
-d 守护进程,后台运行该容器
-v 目录映射,格式:宿主机目录:容器目录
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口
--name docker-name 容器名字docker-name
-m, --memory bytes 设置容器使用内存最大值
-h, --hostname string 指定容器的 hostname
--dns 8.8.8.8 指定容器 dns 服务器8.8.8.8
-e JAVA_HOME="路径" 设置环境变量,如JAVA_HOME
--rm 容器退出时,删除容器及容器目录

example:

docker run -it -v ~/workspace:/home/sunwenqi/workspace osrf/ros:humble-desktop-full /bin/bash

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

退出容器

exit

查看运行中running状态的容器

docker ps

查看所有状态的容器(包含running、paused、stopped)

docker ps -a

启动已停止运行的容器

查看所有容器:

docker ps -a

使用 docker start 启动一个已停止的容器:

docker start <容器名/容器ID>

example:

docker start b7d2a542578a

停止一个容器

停止容器的命令如下:

docker stop <容器名/容器ID>

停止的容器可以通过 docker restart 重启:

docker restart <容器名/容器ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

docker attach <容器名/容器ID>
docker exec <容器名/容器ID>

推荐使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止
example:
attach 命令

docker attach b7d2a542578a

exec 命令

docker exec -it b7d2a542578a /bin/bash

删除容器

docker rm <容器ID>

清理掉所有处于终止状态的容器

docker container prune

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的地主机路径

Dockerfile

Dockerfile是用来构建Docker镜像的文件,可以理解为命令参数脚本

规则

每个指令都必须是大写字母。
按照从上到下顺序执行。
# 表示注释。
每一条指令都会创建一个新的镜像层。

解释

FROM:基础镜像,比如 centos。
MAINTAINER:镜像是谁写的。建议以此格式:姓名<邮箱>。
RUN:镜像构建时需要运行的命令。
ADD:添加,比如添加一个 tomcat 压缩包。
WORKDIR:镜像的工作目录。
VOLUME:挂载的目录。
EXPOSE:指定暴露端口,跟 -p 一个道理。
RUN:最终要运行的。
CMD:指定这个容器启动的时候要运行的命令,只有最后一个会生效,而且可被替代。
ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令。
ONBUILD:当构建一个被继承Dockerfile 这个时候运行ONBUILD指定,触发指令。
COPY:将文件拷贝到镜像中。
ENV:构建的时候设置环境变量。

posted @ 2022-05-05 20:36  卡尔的思索  阅读(46)  评论(0编辑  收藏  举报