docker
Docker的安装
以ubuntu安装为例子
1、如果安装过需要先卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装命令
sudo apt-get update
3、安装几个工具软件
# \ 符号为 续行符号,表示继续到下一行。
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
4、添加Docker的官方GPG key
gpg:用来验证软件的真伪
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
5、再次安装Docker
更新系统
sudo apt-get update
下载docker-ce软件
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
6、验证是否安装成功
验证是否有该进程
ps aux | grep docker
进行一个docker容器
sudo docker run hello-world
检测是否为最新版本
docker version
Docker 镜像
镜像
Docker运行容器前需要本地对应的镜像。如果镜像不存在,docker会去镜像仓库中下载
获得镜像
可以用docker pull 命令来从仓库获取需要的镜像
举例:从Docker Hub仓库中下载Ubuntu镜像
root@hecs-230231:~# docker pull ubuntu:latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
下载过程中,会输出获取镜像的每一层的信息。
该命令等价于docker pull registry.hub.docker.com/ubuntu:latest
命令,即从注册服务器registry.hub.docker.com
中的ubuntu
仓库来下载latest的镜像。
有时候官方仓库注册服务器下载比较慢,可以从其他仓库中下载。以阿里云镜像加速为例,配置流程:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<个人的地址号>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
列出本地镜像
使用docker images 显示出本地已有的镜像
root@hecs-230231:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 5 months ago 13.3kB
ubuntu latest ba6acccedd29 24 months ago 72.8MB
root@hecs-230231:~#
显示出的字段信息
- REPOSITORY : 来源哪个仓库,如ubuntu
- TAG :镜像的标签, 如latest
- IMAGE ID : 镜像ID (唯一)
- CREATED:创建时间
- SIZE :镜像大小
启动镜像
1、docker run -ti ubuntu:latest /bin/bash
2、docker run -ti ba6acccedd29 /bin/bash
上传镜像
- 登录docker。 使用docker login 命令登录docker
2.通过 docker push 命令上传镜像
镜像命令
docker images #查看所有本地主机的镜像
docker search 镜像名 #搜索镜像
docker pull 镜像名 [标签] #下载镜像(如果不写tag,默认是latest)
docker rmi 镜像名 [标签] #删除镜像 docker rmi -f $(docker images -aq) 删除全部镜像
docker tags 镜像名:版本 新镜像名:版本 #复制镜像并且修改名称
docker commit -a "xxx" -c "xxx" 镜像ID 名字:版本 #提交镜像
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
docker load -i /xxx/xxx.tar #导入镜像
docker save -o /xxx/xxx.tar #保存一个镜像为一个tar包
Docker 容器
Docker 基本命令
docker images
获取本地所有的镜像
docker info
获取docker所有的基本信息
docker search
在docker hub中搜索nginx 镜像
docker search nginx
docker log
查看一个镜像的日志
docker log 【镜像名】
容器命令
docker run
语法:dockers run [可选参数] 镜像名
#参数说明
--name = "Name" 容器名字
-c 后面跟待完成的命令
-d 以后台的方式运行并且返回ID,启动守护进程式容器
-i 使用交互方式运行容器,通常与t同时使用
-t 为容器重新分配一个伪终端
-p 指定容器端口
-P 随机指定端口
-v 给容器挂载存储卷
docker build #创建镜像
-f:指定dockerfile文件路径 -t:镜像名字以及标签
docker logs 容器实例的ID #查看容器日志
docker rename 旧名字 新名字 #给容器重新命名
docker top 容器实例的ID #查看容器内进程
docker ps -a #列出所有容器(不加-a就是在运行的)
docker rm 容器实例的ID #删除容(正在运行容器不能删除,除非加-f选项)
docker kill 容器实例的ID #杀掉容器
docker history 容器实例的ID #查看docker镜像的变更历史
docker start 容器实例的ID #启动容器
docker restart 容器实例的ID #重启容器
docker stop 容器实例的ID #停止正在运行的容器
docker attach /docker exec 容器实例的ID
#同为进入容器命令,不同的是attach连接终止会让容器退出后台运行,而exec不会。并且,docker attach是进入正在执行的终端,不会情动新的进程,而docker exec则会开启一个新的终端,可以在里面操作。
docker image inspect 容器名称:容器标签 #查看容器内源数据
docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机(常用)或者从主机拷贝到容器(一般用挂载)
exit #直接退出容器
crlt + P + Q #退出容器但是不终止运行