首页 > 代码库 > docker

docker

docker

  • docker
    • 安装
      • 如果出现启动错误
    • 下载镜像
    • 运行
    • 命令
    • 修改源文件
    • 升级docker
    • 安装ssh
    • docker 安装mysql
    • dockerfile of run mysql
    • 使用mysql官方镜像
    • 阿里云安装mysql
    • mysql主从复制
    • mongo
    • 外网使用阿里云加速docker下载
      • 阿里云镜像仓库 https://dev.aliyun.com/search.html

安装

sudo apt-get install docker.io

如果出现启动错误

20/06/14 02:19:41 Listening for HTTP on unix (/var/run/docker.sock)
[2758c589] -job init_networkdriver() = OK (0)
20/06/14 02:19:41 WARNING: Your kernel does not support cgroup swap limit.
Error loading docker apparmor profile: exec: "/sbin/apparmor_parser": stat /sbin/apparmor_parser: no such file or directory ()
[2758c589] -job initserver() = ERR (
执行

sudo apt-get install appamor

然后重启docker

sudo service docker start

sudo docker run -t -i ubuntu /bin/bash
FATA[0000] Error response from daemon: Cannot start container 16eb08942934bab44f70082b8bc986accbea4590f1c87216c7c067510aca14: [8] System error: mountpoint for devices not found

sudo apt-get install cgroup-lite

下载镜像

docker pull ubuntu
#下载ubuntu镜像

运行

$docker run ubuntu "hello word"

命令

 docker pull 06sk5hpw.mirror.aliyuncs.com/library/ubuntu
 docker ps #检查运行中的镜像
 docker inspect dockerID  #查看更详细的关于某一个容器的信息。
 docker logs <容器名orID> 2>&1 | grep ‘^User: ‘ | tail -n1  #查看容器的root用户密码
 docker logs -f <容器名orID>  #查看容器日志
 docker ps    #查看正在运行的容器
 docker ps -a    #为查看所有的容器,包括已经停止的。
 docker rm $(docker ps -a -q) #删除所有容器
 docker pull <镜像名:tag>   #拉取镜像
 docker rm <容器名orID>    #删除单个容器
 #停止、启动、杀死一个容器
 docker stop <容器名orID>
 docker start <容器名orID>
 docker kill <容器名orID>
 #与现有容器交互
 docker attach container
 Docker允许使用attach命令与运行中的容器交互,并且可以随时观察容器內进程的运行状况。退出容器可以通过两种方式来完成:
 Ctrl+C 直接退出
 Ctrl-\ 退出并显示堆栈信息(stack trace)
 #与现有容器交互
 docker exec -it  9a57 /bin/bash
 #查看所有镜像
 docker images
 #删除所有镜像
 docker rmi $(docker images | grep none | awk ‘{print $3}‘ | sort -r)
 #运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例
 docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql sameersbn/redmine
 #一个容器连接到另一个容器
 docker run -i -t --name sonar -d -link mmysql:db   tpires/sonar-server
 sonar
 #当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
 机器a
 docker save busybox-1 > /home/save.tar
 #使用scp将save.tar拷到机器b上,然后:
 docker load < /home/save.tar
 #后台运行(-d)、并暴露端口(-p)
 docker run -d -p 127.0.0.1:33301:22 centos6-ssh
 #ubuntu14下的docker是没有service服务。去除每次sudo运行docker命令,需要添加组:
 # Add the docker group if it doesn‘t already exist.
 $ sudo groupadd docker
 #改完后需要重新登陆用户
 $ sudo gpasswd -a ${USER} docker
 #运行控制台
 sudo docker run -i -t ubuntu /bin/bash

修改源文件

 cd /etc/apt
 cp sources.list sources.list.bak
 vi sources.list
 cat /etc/issue #look the server version
 #goto https://mirrors.ustc.edu.cn/repogen/ gen sourcelist
 #if the mirrors start with https and apt-get update can‘t conn,
 #please change https to http when gen the source list
 cp the list into sources.list

升级docker

 # apt-get -y install apt-transport-https
 # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
 # bash -c "echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list"
 # apt-get update
 # apt-get -y install lxc-docker
 # docker -v  //查看docker版本
 # ps -ef | grep docker
 # apt-get -u -y upgrade lxc-docker    安全升级
 # apt-get -u -y dist-upgrade lxc-docker  安全升级失败可用这个强制解决依赖包升级

安装ssh

 1、启动一个docker容器
 # docker run -t -i ubuntu/ruby:v1 /bin/bash
 2、然后在容器里,安装openssh-server openssh-client
 # apt-get install openssh-server openssh-client
 3、完成之后,修改root密码
 # passwd
 4、退出容器,并保存以上修改
 # docker commit 3ea7a99a0025 ubuntu/ruby:v2
 5、停止,并删除刚才的容器
 # docker stop [container-id]
 # docker rm [container-id]
 查看容器id
 # docker ps -a
 查看镜像列表
 # docker images
 6、用刚保存的镜像,后台启动一个新的容器
 docker run --name [image-name] -i -t -p 50001:22 [image-id]
 例: # docker run -d -p 50001:22 ubuntu/ruby:v2 /usr/sbin/sshd -D
 7、ssh远程登录该容器
 # ssh root@localhost -p 50001

docker 安装mysql

 apt-get update
 apt-get install mysql-server vim
 #vi /etc/bash.bashrc
 最下面添加mysql开机启动
 #/etc/init.d/mysql start
 设置mysql允许外网连接
 启动容器映射端口
 //sudo docker run -t -i -p 3306:3306 mysql /bin/bash 带命令行启动
 docker run -d -p 3306:3306 mysql:v2 --name mysql

dockerfile of run mysql

 FROM mysql:v2
 MAINTAINER WongLoong "diarbao@foxmail.com"
 EXPOSE 3306
 CMD ["/usr/bin/mysqld_safe"]
 #build & run
 docker build -t ubuntu:mysql .
 docker run -d -p 3306 ubuntu:mysql

使用mysql官方镜像

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
docker run --name db-p 3306:3306 -e MYSQL_ROOT_PASSWORD=xuelong -v /data:/var/lib/mysql -d mysql:5.7
#添加启动参数
docker run --name mysql-p 3306:3306 -e MYSQL_ROOT_PASSWORD=find2i -v /data/mysql1:/var/lib/mysql -d 06sk5hpw.mirror.aliyuncs.com/library/mysql --character-set-server=utf8

阿里云安装mysql

docker pull 06sk5hpw.mirror.aliyuncs.com/library/mysql

mysql主从复制

 #主
 docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=find2i -v /data/mysql1:/var/lib/mysql -d 06sk5hpw.mirror.aliyuncs.com/library/mysql --character-set-server=utf8 --log-bin=mysql-bin --server-id=1
 #从
 docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=find2i -v /data/mysql1:/var/lib/mysql -d 06sk5hpw.mirror.aliyuncs.com/library/mysql --character-set-server=utf8 --log-bin=mysql-bin --server-id=2
 #登录主sql
 GRANT REPLICATION SLAVE ON *.* to ‘mysync‘@‘%‘ identified by ‘q123456‘;
 show master status;
 *************************** row ***************************
 #mysql-bin.000001   431
 ---
 #登录从sql
 change master to master_host=‘192.168.145.222‘,master_user=‘mysync‘,master_password=‘q123456‘,
 master_log_file=‘mysql-bin.000001‘,master_log_pos=431;
 start slave;
 show slave status
 *************************** row ***************************
 Slave_IO_State: Waiting for master to send event
 Master_Host: 192.168.2.222  //主服务器地址
 Master_User: mysync   //授权帐户名,尽量避免使用root
 Master_Port: 3306    //数据库端口,部分版本没有此行
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000004
##  Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
 Relay_Log_File: ddte-relay-bin.000003
 Relay_Log_Pos: 251
 Relay_Master_Log_File: mysql-bin.000004
 Slave_IO_Running: Yes    //此状态必须YES
 Slave_SQL_Running: Yes     //此状态必须YES
 ---
 stop slave;
 start slave;
 RESET slave;
 change master to master_host=‘10.161.134.2‘,master_user=‘mysync‘,master_password=‘q123456‘,
 master_log_file=‘mysql-bin.000001‘,master_log_pos=173408198;
 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; #跳过一个事务

mongo

docker pull mongo
sudo docker run --name mongo -v /data/mongo/:/data/db -p 270:27017 -d mongo --参数名 值

外网使用阿里云加速docker下载

阿里云镜像仓库 https://dev.aliyun.com/search.html

docker