文章目录
- Docker介绍
- 安装
- 查看版本
- 启动并加入开机启动
- 配置镜像加速
- docker指令
- 拉取镜像
- 查看镜像
- 删除镜像
- 删除所有镜像
- 保存镜像
- 将容器保存为镜像
- 将镜像保存为tar包
- 将tar 包导入docker镜像
- 制作镜像
- Dockerfile
- 运行容器
- 查看容器
- 删除容器
- 强制删除容器
- 停止容器
- 停止所有容器
- 推送到仓库
- dockerhub
- 注册dockerhub用户
- 登录
- 推送镜像
- Docker可视化管理面板
- Portainer
- FAST OS DOCKER
- 教程
Docker介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。
安装
curl -sSL https://get.daocloud.io/docker | sh
查看版本
sudo docker version
启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
配置镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://jghuhrwl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker指令
指令需要使用到管理员权限加上sudo,
dockerhub是镜像仓库,可以去拉取镜像https://hub.docker.com/
拉取镜像
- docker pull 镜像名
- docker pull 镜像名:tag
sudo docker pull mysql
sudo docker pull mysql:8.0
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
查看镜像
sudo docker images
可以看到刚刚拉取的两个镜像
删除镜像
- sudo docker rmi <镜像名/镜像名称>
sudo docker rmi 3218b38490ce
删除所有镜像
- docker rmi -f $(docker images -q)
sudo docker rmi -f $(sudo docker images -q)
保存镜像
将容器保存为镜像
- docker commit <容器id> <镜像名>:
首先通过docker ps指令查看容器,找到对应的容器id或者使用容器名
将容器提交保存为镜像
sudo docker commit 3e8771cb5dbc mysql:save
查看镜像。
sudo docker images
将镜像保存为tar包
- docker save -o <tar包名>.tar <镜像名>:
sudo docker save -o mysql.tar mysql:latest
将tar 包导入docker镜像
- docker load -i <tar包名>.tar
sudo docker load -i mysql.tar
制作镜像
Dockerfile
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
创建Dockerfile
touch Dockerfile
文件内容
FROM ubuntu:20.04
ENV TZ Asia/Shanghai
ENV LANG zh_CN.UTF-8
RUN echo "deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse\n \
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse \n \
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse\n \
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse\n"\
> /etc/apt/sources.list \
&& apt update && apt install -y \
openssh-server \
vim \
&& apt clean \
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp* \
&& ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys \
&& sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no /' /etc/ssh/sshd_config \
&& sed -i 's/PermitRootLogin without-password/PermitRootLogin yes /' /etc/ssh/sshd_config \
&& echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config \
&& echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config \
&& echo "root:root" | chpasswd
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
构建镜像
sudo docker build -t myubuntu:v1 .
镜像构建成功。
运行容器
- docker run --name <容器名> -e <环境变量> -d <镜像名>:<版本号>
sudo docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
参数解释
--name:容器名(自定义)
-e:指定容器的环境变量(MYSQL_ROOT_PASSWORD这里设置mysql的密码)
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行。
-it:使用交互方式运行,进入容器查看内容
-p:端口映射,冒号左边指容器端口,冒号右边是外部主机端口
查看容器
- 查看当前运行的容器:docker ps
sudo docker ps
加上-a参数可以查询存在过的容器(停止运行的容器)
sudo docker ps -a
删除容器
- docker -rm <容器名/容器id>
sudo docker rm 3e8771cb5dbc
这里由于容器正在运行无法删除,需要先停止容器
强制删除容器
sudo docker rm -f 3e8771cb5dbc
加入-f参数,强制删除容器
停止容器
- docker stop <容器名/容器id>
sudo docker stop 3e8771cb5dbc
此时再执行删除容器的操作,可以删除了
停止所有容器
- docker stop $(docker ps -a -q)
sudo docker stop $(sudo docker ps -a -q)
推送到仓库
dockerhub
docker hub是Docker官方维护的一个公共仓库,大部分需求都可以通过在Docker Hub中直接下载镜像来实现。
注册dockerhub用户
登录
sudo docker login
推送镜像
推送镜像前,需要将镜像重命名
sudo docker tag 076e31b16af5 chenchongbiao/myubuntu:v1
- 076e31b16af5 是镜像id
- chenchongbiao是在dockerhub注册的用户名
- myubuntu是自定义的镜像名
- v1表示标签,如果不需要可不写
sudo docker push chenchongbiao/myubuntu:v1
Docker可视化管理面板
Portainer
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。
官方安装说明:https://www.portainer.io/installation/
面板使用英文
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
远程模式
docker run -d -p 9000:9000 --restart=always --name prtainer portainer/portainer
FAST OS DOCKER
通过可视化界面轻松构建您的docker环境,方便您docker环境的管理,远离命令式操作。大大提高您的工作效率,减少不必要的操作。
面板使用中文
docker run --restart always --name fast -p 9999:9999 -d -v /var/run/docker.sock:/var/run/docker.sock wangbinxingkong/fast