关于Docker的一些笔记 用的是DaoCloud的加速器,进入控制台的加速器 复制代码到本地运行,即可将registry-mirror加入到Docker 配置文件 /etc/docker/daemon.json 中安装
yum -y install docker #centOs
apt-get install -y docker.io #ubuntu
systemctl start docker #启动 Docker 后台服务
docker --version #查看版本,安装成功
Docker version 1.13.1, build 94f4240/1.13.1
加速器


curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://010e8490.m.daocloud.io #运行复制的命令
docker version >= 1.12
{"registry-mirrors": ["http://010e8490.m.daocloud.io"],}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
sudo systemctl restart docker #重启docker
查看挂载情况
docker inspect container_name | grep Mounts -A 20
"Mounts": [
{
"Type": "bind",
"Source": "/var/lib/mysql",
"Destination": "/run/media/wade/archive/data",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "24ec79325c0fb26df06bb277194e487ebe8ea6c58225571296a0b8dd5474f466",
"Source": "/var/lib/docker/volumes/24ec79325c0fb26df06bb277194e487ebe8ea6c58225571296a0b8dd5474f466/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
安装mysql
docker search mysql #查找mysql官方镜像
docker pull mysql:5.6 #拉取镜像mysql5.6版本
docker images #查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql 5.6 5f5ccdc8aedc 7 weeks ago 256 MB
sudo docker run --name siot-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=H9si0711 -v /run/media/wade/archive/master/etc/mysql:/ee/master/etc/mysql/my.cnf:/etc/mysql/my.cnf -v /run/media/wade/archive/master/data:/var/lib/mysql -d master/mysql #创建mysql容器, --name 容器名称 -v 挂载文件 /宿主机文件路径:/容器内文件路
ca5dd632677a144e647b410dee29d96dc029352c614ab560fa22bfa614f09b7c
docker exec -it test-mysql bash #进入mysql容器
mysql -uroot -p123456 #启用mysql窗口,进入命令行
status; #查看mysql状态信息
--------------
mysql Ver 14.14 Distrib 5.6.40, for Linux (x86_64) using EditLine wrapper
Connection id: 1
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.40 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 1 min 57 sec
Threads: 1 Questions: 5 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.042
--------------
quit; #退出mysql
按住ctrl,再按p,再按q退出mysql容器
使用Dockerfile构建镜像
mkdir siot
cd siot
vi my.cnf #编辑mysql的配置文件,这里只是指定了数据的存储路径
[mysqld]
datadir=/var/lib/mysql
#############################
vi Dockerfile
FROM mysql:5.6 #指定基础镜像
COPY my.cnf /etc/mysql/ #将刚才编辑的配置文件拷贝到将要运行的容器中,<源路径> <目标路径>
EXPOSE 3306 #声明端口
CMD ["mysqld"]
#############################
docker build -t siot/mysql . #不要忘记最后的“.”
配置网络代理
mkdir -p /etc/systemd/system/docker.service.d # 为docker服务创建一个内嵌的systemd目录
vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
systemctl daemon-reload
systemctl restart docker
systemctl show docker --property Environment # 检查变量是否加载
Environment=HTTP_PROXY=http://172.18.29.121:3128/ HTTPS_PROXY=https://172.18.29.121:3128/ NO_PROXY=localhost,127.0.0.1,172.18.*.*,*.aliyuncs.com,mirrors.cloud.aliyuncs.com
# 取消代理
rm -rf /etc/systemd/system/docker.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart docker
systemctl show docker --property Environment
设置开机自启
docker update --restart=always 容器名称或ID
问题&解决
挂载宿主机已存在目录后,在容器内对其进行操作,报“Permission denied”
setenforce 0 #临时关闭
vi /etc/sysconfig/selinux #永久关闭
SELINUX=disabled
docker run -it --privileged=true -v /test:/soft centos /bin/bash #指定--privileged参数
启动容器时报错:Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2
systemctl stop docker #停掉docker服务
rm -rf /var/lib/docker #注意会清掉docker images的镜像
vi /etc/sysconfig/docker-storage #将文件里的overlay2改成overlay即可
vi /etc/sysconfig/docker #去掉option后面的--selinux-enabled
systemctl start docker #启动deocker即可