Docker简单操作:
Docker是一个为开发者和系统管理员在容器中开发、部署和运行的平台,灵活、轻量级、可互换、部署简单、扩展性极强的容器
a. 镜像image和容器container
镜像是一个包含所有需要运行的文件组成的包,比如代码、可运行文件、库、
环境变量和配置文件等;
容器是镜像运行的一个实列,是运行镜像后产生的;
容器和虚拟机区别:
容器和进程一样直接在主机操作系统上运行,不占用更多的资源;
虚拟机直接模拟一个虚拟操作系统,程序实在模拟操作系统里面运行,占用更多资源;
Docker CE -- 代表社区版本
Docker EE -- 代表企业版本
b. 安装Docker
第一步: 安装yum-utils --
sudo yum install -y yum-utils
第二步: 设置稳定版本的repository仓库(最好不要装不稳定版本的docker)
sudo yum-config-manager --add-repo https://docs.docker.com/engine/installation/linux/repo_files/ubuntu/docker.repo
sudo apt-get update # 更新
第三步: 安装并启动docker社区版
sudo apt-get install docker-ce
sudo systemctl start docker 或者 service start docker
验证时候安装成功: sudo docker run hello-world (出现一堆代码,包含了hello from docker,说明安装并启动成功)
卸载docker命令: sudo yum remove docker-ce 或者 sudo rm -rf varlib/docker
查看docker版本: docker version
查看docker信息: docker info
列出docker下所有容器: docker image ls
第四步: 在docker中运行自己的项目(整体搬迁运行影像)
**需要Dockerfile进行配置,Dockerfile定义了容器内的环境**
mkdir docker_test (可以创建在home目录下)
cd docker_test
vim Dockerfile # 将下面代码写入Dockerfile(根据项目具体情况设置具体参数)
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip install -i https://pypi.douban.com/simple -r requirements.txt
# Make port 80 available to the world outside this container(docker容器内部端口)
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches (一般是manage.py)
CMD ["python", "app.py"]
vim requirements.txt # 需要导入的pyhton包
Flask
Redis
将项目的代码拷贝到docker_test文件夹下(这里的测试的项目代码是 app.py)
第五步:创建docker镜像(最后有一个点符号)
docker build -t first_docker .
docker image ls (查看已有镜像或者docker images)
第六步: 重启docker
service docker restart 或者systemctl restart docker
第七步: 运行容器
docker run -p 4000:80 first_docker
查看启动的docker容器: docker ps
停止指定的docker容器: docker container stop 85ac7faf8ea3
docker stop 85ac7faf8ea3
删除指定的容器: docker rm 容器名或id (stop状态)
docker rm -rf 容器名或id(运行状态也能删除)
进入容器: docker exec -it e1066fe2db35 /bin/bash
docker exec 是docker镜像的连接命令,类似ssh一样
c. 相关命令
查看已有容器:docker ps (正在运行的)
docker ps -a (所有容器,包括停止的)
镜像打包成tar文件:
docker save -o <保存路径> <镜像名称:标签>
docker save -o ./ubuntu18.tar ubuntu:18.04
镜像加载拷贝到服务器中:
docker load --input ./ubuntu18.tar
docker容器和宿主机之前的文件拷贝:
docker cp 宿主机文件路径 容器名:容器内路径
docker cp 容器名:容器内路径 宿主机文件路径
容器自动重启:
docker run --restart=always (启动容器运行时加always参数)
docker update --restart=always <CONTAINER ID>(已经运行的容器update)
查看容器日志:
docker logs 容器名
镜像更新/上传/拉取(已配置远程仓库,否则需要docker login登录):
更新命令: docker commit <容器名或id> <镜像名或id:标签>
提交命令:docker push <镜像名或id:标签>
拉取docker命令: docker pull <镜像名或id:标签>
d. docker hub仓库 和daocloud镜像仓库
docker hub是国外的平台,连接速度可能比较慢,所以国内一般在daocloud管理镜像
注册daocloud平台:
在daocloud平台注册账号密码,然后创建自己的组织
登录daocolud平台:
docker login daocloud.io # 输出账号、密码
给要上传云平台的镜像打标签(v1):
docker tag first_docker daocloud.io/my_team/first_docker:v1
上传镜像:
docker push daocloud.io/my_team/first_docker:v1
从服务器拉取镜像并运行容器:
docker run -p 4000:80 daocolud.io/my_team/seconds_docker:v1
e. 私有仓库(拉取docker ce或者ee版本镜像,在服务器启动、创建私有docker仓库):
Docker配置远程仓库地址(访问远程私有仓库):
vim /etc/docker/daemon.json
将以下代码中的ip改成需要连接的远程仓库地址:
{"registry-mirrors": ["https://3c9ywpon.mirror.aliyuncs.com"],"insecure-registries":["192.168.3.153:5000"]}
"registry-mirrors"是配置镜像源(国外镜像源网速慢,可配置国内镜像源,阿里镜像源等);
如果有多个私有仓库要链接,将其他私有仓库地址添加到这个json文件"insecure-registries"的值的列表中就行;
重启docker -- systemctl restart docker
网友评论