Docker的安装和使用

本文详细介绍Docker在Mac及Linux系统下的安装方法,并提供了解决常见错误的方案。此外,还介绍了如何使用Docker进行容器及镜像管理,包括创建、启动、停止容器等操作。

登录远程服务器:ssh root@0.0.0.0,root为用户名,回车输入密码

一、安装Docker
1.Mac下安装Docker

安装Docker,下载地址https://docs.docker.com/docker-for-mac/
安装教程https://github.com/widuu/chinese_docker/blob/master/installation/mac.md
安装后下载镜像timeout,需要翻墙,https://segmentfault.com/a/1190000011996587

2.Linux下安装Docker

uname -a //查看系统的版本,Ubuntu使用apt-get安装,centOS使用yum安装

Linux instance-obh3ma9w 2.6.32-696.16.1.el6.x86_64 #1 SMP Wed Nov 15 16:51:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

2.1 Ubuntu安装Docker

apt-get update 
apt-get install -y docker.io

报错处理

E: Unable to locate package docker.io
E: Couldn't find any package by regex 'docker.io'

安装curl,使用curl安装
或者检查apt-get更新源,然后再次输入sudo apt-get update命令更新:

sudo gedit /etc/apt/sources.list
#使用163源 直接添加在文件后面
deb http://mirrors.163.com/ubuntu/ precise main restricted
deb-src http://mirrors.163.com/ubuntu/ precise main restricted
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb http://mirrors.163.com/ubuntu/ precise universe
deb-src http://mirrors.163.com/ubuntu/ precise universe
deb http://mirrors.163.com/ubuntu/ precise-updates universe
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe
deb http://mirrors.163.com/ubuntu/ precise multiverse
deb-src http://mirrors.163.com/ubuntu/ precise multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted
deb http://mirrors.163.com/ubuntu/ precise-security universe
deb-src http://mirrors.163.com/ubuntu/ precise-security universe
deb http://mirrors.163.com/ubuntu/ precise-security multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security multiverse
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main

若安装完执行docker version报错:Segmentation Fault or Critical Error encountered. Dumping core and aborting
一是检查系统版本是不是32位系统,官方发布的docker二进制形式文件是64位的,但是如果你使用的是32的系统肯定是不能运行的;
二是centOS下安装Docker出现这个问题,是因为有的linux版本中使用yum install docker 安装运行时就会这个错误。解决方法是:

yum list installed |grep docker //找到安装的docker
yum -y remove <docker名> //卸载
yum -y install docker-io//注意要安装包带后缀-io

2.2 centOS安装Docker

yum update 
yum install -y docker

安装docker-compose

pip install docker-compose
//重启docker
service docker restart 
//新版重启docker
systemctl start docker

二、使用Docker

查看docker信息

//查看docker版本  
docker version  
//显示docker系统的信息  
docker info

容器管理

//查看正在运行的容器
docker ps
//查看所有容器
docker ps -a
docker ps -l
//创建一个新的容器
docker run ubuntu echo "hello world"
//创建一个守护式容器在后台运行
docker run -d 
//指定端口号
docker run -d -p 8002:80

//运行一个容器
docker start <containerID>
//停止运行某个容器
docker stop <containerID>
//进入正在运行的容器
docker attach <containerID>
docker exec -it <container> bash
//解决进入容器不能输入中文的问题
docker exec -it <container> env LANG=C.UTF-8 bash
//删除容器
docker rm <containerID>
//停止所有容器
docker stop $(docker ps -q)
//删除所有容器
docker rm $(docker ps -aq)
//查看容器的IP
docker inspect <containerName> | grep IPAddress
//下载组件
docker run learn/tutorial apt-get install -y ping
//查看端口映射
iptables -t nat -nL

//查看容器所有参数
docker inspect <容器ID>
//获得容器IP
docker inspect cocky_hermann | grep IPAddress
//将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A  DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8000

镜像管理

//检索镜像  ubuntu、learn/ping、nginx
docker search image_name  
//下载镜像  
docker pull image_name
//显示所有镜像
docker images
//删除镜像
docker rmi <imageID>
docker rmi -f <imageID>
//删除所有none镜像
docker rmi $(docker images | grep "none" | awk '{print $3}') 
//删除所有镜像
docker rmi $(docker images -q)

//打包镜像
docker save -o python-achievements-image.tar.gz <imageName>
//加载镜像
docker load -i python-achievements-image.tar.gz

docker hub

//登录docker hub,输入用户名userName密码登录
docker login
//退出
docker logout
//命名镜像
docker tag <imageName> <userName>/<imageName>
//发布镜像,在docker hub创建仓库imageName
//构建镜像。将某个容器提交到本地仓库。无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分
docker commit <containerId> <userName>/<imageName>
//将本地仓库推送到远程仓库
docker push <userName/imageName>

//发布镜像后,镜像保存在自己的用户名下,根据用户名可查询所有镜像,然后pull相应的镜像
docker search coldchains

NAME                             DESCRIPTION   STARS     OFFICIAL   AUTOMATED
coldchains/python_achievements                 0                    
coldchains/python-mysql                        0 

在容器中的操作

//退出容器并关闭
exit
//退出容器不关闭
control+P+Q
//使用apt-get下载组件
apt-get update
apt-get -y install python3-pip
pip3 install django
pip3 install mysql-python
apt-get -y install git

错误处理
在下载镜像的时候报错 Pulling repository ubuntu Tag latest not found in repository ubuntu,需要修改镜像源,换成国内的镜像源

//创建文件
vi /etc/docker/daemon.json 

//添加以下内容,保存
{ 
    "registry-mirrors": ["https://registry.docker-cn.com"] 
}

//重启docker
官方docker hub访问非常的慢,安装之后最好先切换国内镜像:执行:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ef017c13.m.daocloud.io
然后再重启:systemctl restart docker
在Ubuntu中安装mysql后,后来通过mysql -u用户名 -p密码 的命令连接Mysql数据库时,报错"can't connect to local mysql serverthrough socket'/var/run/mysqld/mysqld.sock'"

解决方法:
在不重新安装mysql的情况下,通过如下命令来解决,具体的就是先停止mysql服务,再重新开启mysql服务
cd /etc/init.d
sudo service mysql stop
sudo service mysql start 

//卸载
sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-common     //用于彻底删除
//安装
sudo apt-get install mysql-server
//输入mysql密码
sudo apt-get install mysql-client
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值